List Sorter, Deduplicator & Mixer
Paste, drop or hand over a list and build a recipe on top of it: sort, deduplicate, filter, renumber, mix it with a second list. Every step stays editable, nothing runs until you add it, and the list never leaves your browser.
No operations yet
Your list is untouched. Pick an operation above and it lands here, where you can reorder it, tune it or switch it off.
How it works
Bring the list in
Paste it, drop a .txt or .csv on the page, or hand it over from another tool. It is only loaded — nothing is applied to it yet.
Stack the operations
Each one you pick is added to a recipe instead of overwriting the result, so you can reorder it, edit its options later or switch it off to see what it did.
Tune and measure
Every step shows how many items it removed or rewrote, so "remove duplicates" is a number you can check, not a guess.
Take it away
Copy it, download it, shape it as a SQL IN list or a JSON array, or send it straight to another tool in the suite.
A recipe, not a one-way edit
The output is derived from your list plus an ordered set of steps. Nothing is overwritten, so changing your mind about step two costs one click instead of starting over.
Sorting that respects your language
Comparison goes through one Intl.Collator built for the page language, with natural number order and optional case/accent folding, instead of a fresh collator per comparison.
Two lists, five ways to mix them
Keep what is in both, only what is in A, what neither shares, the union, or alternate them item by item — with case and whitespace folding when you need it.
Draws you can defend
Shuffling and picking use the browser CSPRNG, so a draw is unpredictable. Give it a seed instead and the exact same draw can be replayed by anyone who knows it.
Big lists stay responsive
Past twenty thousand items the pipeline moves to a background thread, and past four hundred thousand characters it waits for you to press Run instead of guessing.
Leaves in the shape you need
One click turns the result into quoted CSV, a JSON array, a SQL IN clause, a JavaScript array, a Markdown list or HTML list items — or set the wrapping yourself.
Fast because of how it is built, not because it is small
Sorting builds one Intl.Collator and reuses it for the whole pass. A plain A-Z sort gains little from that — browsers already cache the default collator — but it is what makes the useful options affordable: on 60 000 lines, natural number order with accent folding takes about 0.7 s through a reused collator and around 9 s when those options are handed to localeCompare on every single comparison, roughly fourteen times slower. Anything past twenty thousand items also moves to a Web Worker, so the page keeps scrolling while it works, and the undo history stores your steps rather than copies of the text.
Private because there is nowhere to send it
There is no server, no upload, no analytics on your content and no third-party script involved in the processing. Your list lives in the tab's memory and in nothing else; closing the tab is the delete button.
Built for the lists people actually have
The result is derived from your list plus the recipe, so nothing you do is a one-way door. Disable a step to see exactly what it contributed, drag it earlier, change the separator of a numbering step you added ten operations ago, or undo the last thirty edits. Typing in the input box no longer throws your work away.
Paste any list and stack the operations you need: sort alphabetically, numerically or by length, remove or isolate duplicates, drop blank items, trim whitespace, change case, filter by text or regex, renumber, add prefixes, pick winners at random, or mix it with a second list. Every step is a card you can reorder, tune or switch off.
Frequently Asked Questions
QCan I stack several operations?+
That is the whole idea. Each operation you pick becomes a card in a recipe that runs top to bottom. You can reorder the cards, change their options afterwards, switch one off to see what it was doing, or delete it — and the result re-derives from your original list every time. Nothing is overwritten.
QDoes editing the input destroy my operations?+
No. The list and the recipe are separate: edit the list and the same recipe runs again on the new text. This was the one real trap in the previous version of this tool, where typing a single character reset the output.
QWhy is my sort putting item10 before item2?+
Because plain alphabetical order compares "1" against "2" one character at a time. Switch the sort card to 1-9 and it uses natural number order instead, so item2 comes before item10. The len option sorts by item length, and Aa folds case and accents together.
QHow do I compare two lists?+
Add a "Mix with list B" operation and a second box appears. It can keep only the items present in both lists, only those in A, only those neither shares, the union of both, or alternate between them. Case and whitespace folding are toggles, so "Ana " and "ana" can count as the same entry.
QIs the shuffle fair enough for a giveaway?+
Yes. It is a Fisher-Yates shuffle over the browser's cryptographic random source with rejection sampling, so every order is equally likely — unlike the common Math.random approach. If you would rather be able to prove the draw, type a seed: announce it before the draw and anyone can replay the exact same result afterwards.
QHow large a list can it take?+
Files up to 8 MB, which is roughly half a million ordinary lines. Past twenty thousand items the work moves to a background thread, and past four hundred thousand characters the tool stops running by itself and waits for you to press Run, so pasting something huge never freezes the tab.
QCan I fix something by hand?+
Press "Edit by hand" and the result box becomes editable, with the recipe paused. Your hand edits get their own undo levels, and "Back to recipe" returns to the derived result. You can also work that way from the start and never add an operation at all.
QDoes my list get uploaded anywhere?+
No. Every operation is plain JavaScript running in your tab — there is no server involved and no request carrying your content. The tool also works with the network disconnected once the page has loaded.