What this tool does
Lists need cleaning constantly. A list of emails copied from a spreadsheet has duplicates. A list of product names from a vendor file has trailing whitespace. A list of city names needs to be sorted A to Z for a dropdown. A list of integers needs to be in numeric order, not alphabetical.
This tool handles all of those cases. Paste a list, check the boxes for what you want, and the cleaned, sorted result appears instantly.
Sort options
Alphabetical (A → Z and Z → A)
Standard text sort. Capital letters sort before lowercase by default; check "Case-insensitive sort/dedupe" to ignore case for sorting and duplicate detection. Z → A reverses the alphabetical order.
By length
"Shortest first" and "Longest first" sort by character count. Useful for ranking strings by complexity, finding short names in a list of identifiers, or grouping related-length entries.
Numeric
If your list contains numbers (integers or decimals), choose "Numeric ascending" or "Numeric descending" for proper numeric ordering. Without this option, alphabetical sort treats "10" as less than "9" because "1" comes before "9" character-wise. Numeric sort puts them in mathematical order.
Mixed numeric/text lists work too — the tool sorts by parsing each line as a number, with lines that don't parse to numbers grouped at the end.
Reverse current order
Doesn't sort — just flips the existing order top-to-bottom. Useful when you want the original sequence reversed without applying alphabetical or numeric logic.
Shuffle
Randomizes the order. Useful for randomized selection from a list, generating sample orderings, or breaking up alphabetical bias in lists where the order shouldn't matter.
Cleaning options
Remove duplicates
Keeps only the first occurrence of each line. Combined with case-insensitive matching, "Apple" and "apple" are treated as the same entry. Without case-insensitive matching, they're separate.
Duplicate detection happens after trimming, so "apple " (with a trailing space) and "apple" (without) are treated as duplicates if "Trim each line" is also checked.
Trim each line
Removes leading and trailing whitespace from each line. This is on by default because it almost always produces cleaner results — copy-paste from spreadsheets, emails, or PDFs frequently introduces stray spaces that you don't want to keep.
Remove blank lines
Lines containing only whitespace (or nothing) are filtered out. Also on by default — blank lines in a "list" are usually accidental.
Strip prefix
Removes a literal prefix from the start of each line. Useful for cleaning Markdown lists ("- item one" → "item one"), removing bullet characters ("• apple" → "apple"), or stripping a common identifier prefix from a list of items.
Only an exact-string prefix is removed — there's no regex matching for this option. Lines that don't start with the prefix are left unchanged.
Common use cases
- Deduplicating email lists for a mailing campaign
- Sorting tag lists for category dropdowns or taxonomy
- Cleaning up imports — paste content from a sales prospect list and remove duplicates and trim whitespace before importing into a CRM
- Building config files — sort a list of allowed values for predictable diffs
- Ranking by length — finding short codes, short URLs, short identifiers in a longer list
- Random sampling — shuffle a list and take the top N for a random selection
- Numeric sorting — error codes, port numbers, ID lists where numeric order matters
Order of operations
Cleaning happens before sorting. So the sequence is: trim → strip prefix → remove blank lines → dedupe → sort. If you trim and dedupe, "apple " and "apple" are correctly merged because both become "apple" before deduplication runs.
What this doesn't do
This tool treats each line as an atomic value. It doesn't parse CSV or JSON or any structured format. If you need to dedupe rows of a CSV based on a specific column, or sort JSON arrays, use a spreadsheet or a script — this is for flat one-value-per-line lists.
It also doesn't preserve original ordering across multiple operations. If you want the "first occurrence" of each duplicate, the tool keeps the topmost one in your input. There's no option for "last occurrence" or "most frequent" — though those are uncommon needs.
Privacy
All processing happens in your browser. Lists never leave your machine.