The order is fixed, and that is deliberate
Steps run in the numbered order shown on the form: trim, collapse spaces, delete characters, drop blanks, dedupe, sort, prefix and suffix, number, join. The order is printed above every result so you can see what actually happened rather than inferring it.
Fixing the order removes the two mistakes people make when they do this by hand. Trimming has to come before deduplication, otherwise widget and widget survive as two entries — with the trailing space invisible in the output, which is the worst kind of bug to chase. Sorting has to come before numbering, otherwise the numbers get shuffled with the lines and you end up with 1, 7, 3, 2 down the left margin.
If your job genuinely needs a different order, run the tool twice. Copy the result, paste it back into the input, and switch on the later steps only. Two passes cover almost any sequence you might want.
The delete field is a character list
Whatever you type into "characters to delete" is treated as a set of individual characters, each one deleted wherever it occurs. Typing *"· removes asterisks, straight double quotes and middots. Nothing needs escaping, and nothing is interpreted: type \d and you delete backslashes and the letter d, not digits.
This is a limitation as much as a convenience. When you need a pattern — all digits, all text inside brackets, everything after a colon — this field cannot express it, and the job belongs in multi find and replace with regex mode on, or in the regex tester if you are still working out the pattern.
How the sort actually orders things
A to Z uses the browser's English collator with numeric ordering and base-letter sensitivity switched on. Three consequences follow. Case is ignored while sorting, so Apple and apple sort adjacently instead of all capitals landing before all lowercase the way a raw code-point sort would. Numbers embedded in text sort by value, so item2 comes before item10 rather than after it. And accents are treated as equal to their base letter, so résumé sorts next to resume.
For scripts other than Latin the collator still produces a stable, sensible order — Cyrillic and Greek sort in their own alphabetical order, Han characters sort by code point since there is no single correct alphabetical order for them — but it will not match the ordering a native locale would give. Korean, Japanese and Chinese lists sort consistently here, just not the way a Korean or Japanese dictionary would sort them.
Joining, and the quoting caveat
The join step exists for the places that want one line: an email To: field, a SQL IN (...) clause, a tag input, a CSV header row. Comma-only and comma-plus-space are separate options because the target usually cares.
The quoted option wraps each item in single quotes and escapes any single quote inside it with a backslash. That matches MySQL's default and several other engines, but it is not universal — standard SQL doubles the quote instead, and PostgreSQL rejects backslash escaping unless the string is marked. Treat the quoted output as a draft for a query you are about to read, not as a safe way to build one. Parameterised queries exist precisely so that no one has to get this right by hand.
Questions people ask
How is this different from the line tools page?
Line tools does the core line operations — dedupe, sort, trim, drop blanks, number — one at a time, and it is quicker when you only need one of them. This page is the pipeline version: the same operations plus character deletion, prefixes and suffixes, numbering formats and joining, all applied in a single fixed pass. Use line tools for one step, use this for four.
Can duplicates be matched case-insensitively?
Not here. Deduplication compares the lines exactly as they stand at that point in the pipeline. To ignore case, run the list through the case converter first to force one case, then bring it back here. The same applies to invisible differences: a non-breaking space and an ordinary space are different characters, so those two lines will not be seen as duplicates.
I turned everything off and nothing happened.
That is the expected behaviour, and the header says "0 steps applied". It is occasionally useful on its own — the counts panel still reports lines in, characters in and characters out, so you can use the tool purely to measure a block of text without altering it.
What is the size limit?
Four hundred thousand characters. Past that the tool tells you rather than trying, because several of the steps make a full copy of the list and a large enough input will stall the tab. A list of a few tens of thousands of lines is comfortably inside the limit and runs instantly.