ada@example.com
grace@example.com
ADA@example.com
alan@example.com
katherine@example.comDeduplicate a list and see what was actually repeated. Keep the unique set, isolate only the entries that appeared more than once, or extract the ones that appeared exactly once — with counts, four sort orders, and a separator that can be a newline, a comma, or anything the export used.
Step by step
01Paste the list
One entry per line by default. Set the separator to a comma, a semicolon, or a tab when the list arrived from a spreadsheet cell or a CSV column instead.
02Choose what you want back
Unique keeps the first occurrence of everything. Duplicates keeps only entries that appeared more than once — the audit view. Singles keeps only those that appeared exactly once, which is the opposite question and often the more interesting one.
03Decide what counts as the same
Trimming and dropping empty entries are on by default because exports are messy. Case-insensitive matching is off, because whether Ada and ada are the same depends entirely on what the list is.
04Sort, count, and copy
Keep the original order, sort alphabetically either way, or sort by frequency to put the worst offenders first. Counts can be shown inline so the output doubles as a report.
Worked example
The same twelve-line list read three ways. Most tools only answer the first question; the other two are usually what you actually needed.
Given
The three modes on identical input
unique 8 lines -> the clean list, first occurrence kept
duplicates 3 lines -> only what appeared more than once
with counts: 3x, 2x, 2x
singles 5 lines -> only what appeared exactly once
8 unique = 3 repeated + 5 singlesUnique tells you the list is smaller than you thought; duplicates tells you which entries caused it, which is what you need when you are chasing a double-import or a merge that ran twice. Singles is the reconciliation question — the rows that appear in one export but not the other — and it is the mode people do not know to look for.
Before you deduplicate
Invisible differences are the usual culprit
Trailing spaces, non-breaking spaces pasted from a web page, and Windows line endings all make two identical-looking entries different. Trimming is on by default for exactly this reason, and it is why a list that visibly repeats sometimes reports no duplicates until you turn it on.
Case sensitivity is a decision about the data
Email addresses are case-insensitive in practice, usernames often are not, and product codes vary by system. There is no safe default, which is why the switch is off — collapsing Ada into ada silently is worse than leaving two rows for you to look at.
Which occurrence survives can matter
Unique keeps the first appearance, so if the list is ordered — newest first, or by priority — the survivor is the one you saw first. When the last occurrence is the authoritative one, reverse the list before deduplicating rather than after.
Frequency sorting turns a list into a report
Sorting by count puts the most repeated entries at the top, which answers a different question: not what is duplicated, but what dominates. Combined with counts inline, the output is a tally you can paste into a ticket rather than a list you have to summarise.
The separator decides what an entry is
A newline is the default, but exports arrive as comma-separated cells, semicolon lists, and tab-delimited columns. Choosing the wrong separator produces one enormous entry that is trivially unique — if nothing seems to deduplicate, that is the first thing to check.
Nothing is uploaded
Splitting, counting, and sorting all run in your browser. The lists people deduplicate are usually email addresses, customer IDs, and internal exports, none of which should be leaving the machine to have their duplicates counted.
The judgement call
Deduplicating and investigating duplicates are different jobs, and the second one is usually the real one.
Cleaning a mailing list before import
Unique
Keeps one of everything in the original order. Turn on case-insensitive for email addresses.
Finding out why a total is too high
Duplicates
Shows only the repeated entries with their counts, which is the evidence of a double import or a re-run job.
Reconciling two exports
Singles
Paste both lists together: what appears once is what exists in one export and not the other.
Reporting the worst offenders
Sort by frequency
Highest count first, with counts shown inline, so the output is already a summary.
A list where the newest entry must win
Reverse first
Unique keeps the first occurrence. Reverse the input so the entry you want to keep is the one it meets first.
Rows differing in one column only
Wrong tool
This compares whole entries. Isolate the column you care about first, or use a spreadsheet.
Reference
FAQ
Paste it in with one entry per line. Unique mode is selected by default and keeps the first occurrence of every entry in its original position. Change the separator if your list is comma- or tab-separated rather than line-separated.
Usually an invisible difference — a trailing space, a non-breaking space pasted from a web page, or a stray character. Trimming is on by default to catch most of these. The other common cause is the wrong separator, which turns the whole list into a single entry that is trivially unique.
Switch to duplicates mode, which keeps only entries that appeared more than once and can show how many times each did. Sort by frequency to put the worst offenders first — that combination is what you want when you are working out why a total came out too high.
It keeps only entries that appeared exactly once, which is the reconciliation question. Paste two exports together and the singles are the records present in one but not the other — the difference between the lists, without a spreadsheet formula.
For email addresses, yes — they are treated case-insensitively in practice. For usernames, product codes, and identifiers, be careful: some systems genuinely distinguish them. The switch is off by default because collapsing entries silently is worse than showing you two rows to judge.
No. Splitting, counting, and sorting all run in your browser, which matters because these lists are usually email addresses, customer IDs, or internal exports. Shorter lists can travel in a share link if you choose; longer ones stay put and only the settings are shared.
Splitting, counting, and sorting all run in your browser. No list is uploaded, logged, or retained.
Keep going
CSV ⇄ JSON Converter
Pull one column out of an export before deduplicating it.
Case Transformer
Normalise capitalisation so near-duplicates collapse properly.
Text Diff Checker
Compare two lists line by line instead of by frequency.
Pattern Extractor
Extract the addresses or IDs first, then deduplicate them.