Skip to content

Tool 02 / Clean lists

Duplicate lines, gone. Order intact.

Paste a keyword list, email list, or export and get one copy of each line back — without scrambling the sequence or uploading the file.

  • Free to use
  • Keeps order
  • Runs locally
Live workbench3 duplicates removed
Deduplication options

Line order is preserved. The first copy is kept unless you choose the last one; whitespace inside a line is left alone.

Unique lines
Show removed lines (3)
  • Marketing Automationremoved, item 1
  • crm softwareremoved, item 2
  • email marketingremoved, item 3
8 lines in4 unique3 duplicates1 blankNever uploaded

What it does

A duplicate-line remover takes a list and returns one copy of each line, preserving the order of the survivors. It is the online equivalent of awk '!seen[$0]++' or sort -u without the sort — a distinction that matters when the order carries meaning, such as priority, chronology, or the layout of an export.

The tool compares whole lines. It does not split on commas, parse CSV headers, or look at columns, which keeps the behavior predictable: what you see on a line is what gets compared. Optional settings let you ignore letter case and spaces at the edges of a line, useful when a list has been assembled from several sources.

Two counts run alongside the output. One tells you how many unique lines survived, the other how many duplicates were removed. A collapsible list shows which lines were dropped, so you can verify the result instead of trusting it.

How to use it

  1. Paste one item per line into Your list.
  2. Choose how strict the match should be. For lists assembled from different sources, Ignore case and Ignore surrounding spaces are the useful pair.
  3. Decide whether the first or last copy should survive. First is the default and keeps the original order untouched.
  4. Check the duplicates and unique counts, then open “Show removed lines” if you want to audit the drops.
  5. Copy or download the unique list.

Options, explained

Ignore case
Treats Acme, ACME, and acme as the same key. The surviving line keeps its original spelling, so the first version in the list wins.
Ignore surrounding spaces
Trims leading and trailing whitespace before comparing. This catches the difference between seo tools and seo tools . The output is not trimmed; it keeps the spacing of whichever copy survives. Run the result through Clean Text if you also want tidy lines.
Keep last copy
Drops earlier duplicates instead of later ones. Useful when the list is chronological and the newest entry should win, such as status changes or prices. The surviving line remains at its last position.
Remove blank lines
Removes every line that is empty or contains only whitespace. It runs before duplicate matching, so blank lines never count as duplicates. The count is reported separately from duplicate removals.

Examples

A keyword list from two exports
Ignore case on

Before

marketing automation
crm software
email marketing
Marketing Automation
crm software
seo tools

After

marketing automation
crm software
email marketing
seo tools

The first spelling of each line survives. If the list came from a tool that exports “Marketing Automation” in title case and you prefer that version, either clean the casing first or use “Keep last copy” after arranging the preferred entries later in the list.

Repeated blanks and a stray indentation
Ignore spaces · remove blanks

Before

  apple
banana

apple  
  cherry

After

  apple
banana
  cherry

The first apple wins and keeps its two leading spaces. That is deliberate: comparison can be loose, but the output is not rewritten behind your back. If the leading spaces are unwanted, trim the lines in Clean Text after deduping.

When it earns its keep

  • Keyword and tag lists. Exports from several research sessions overlap heavily; dedupe before importing into a rank tracker or a CMS.
  • Email and allowlists. Collapse repeated addresses, then verify the count against the source before sending anything.
  • SQL results and log excerpts. Remove repeated IDs or error lines from a pasted result set while keeping the original sequence.
  • Single-column CSV data. Clean a column copied out of a spreadsheet before pasting it back.
  • Any list where order matters. Priorities, changelog entries, and ranked keywords should not be alphabetised just to remove repeats.

Limits worth knowing

  • It is line-based. Two CSV rows with the same values in a different column order are different lines. Duplicate values separated by commas on one line are invisible to the tool.
  • It never sorts. If you want a sorted unique list, sort it in a spreadsheet or with a command-line tool first; this page intentionally preserves order.
  • Whitespace inside a line is untouched. “Ignore surrounding spaces” only trims the edges for comparison. Double spaces between words remain.
  • Unicode is compared literally. No accent folding, no Unicode normalization, and no fuzzy matching. café and cafe are different lines, as are composed and decomposed forms of the same accented character.
  • The removed-lines preview is capped. The count is exact; the visible list shows the first 250 removed lines to keep the page responsive.
  • Copy before you close. Nothing is saved. Reloading the page loses the list.

Page updated

Questions, answered

Does removing duplicates change the order of my list?

No. The remaining lines stay in the order they first appear. If you choose “Keep last copy”, the surviving line stays at the position of its last occurrence, so the list can look slightly different but is never sorted.

What counts as a duplicate?

Two lines whose comparison keys are identical. By default the whole line must match exactly. Turning on “Ignore case” or “Ignore surrounding spaces” makes the comparison looser, but the text that survives is still the original line, including its original spelling and spacing.

Can it remove duplicate CSV rows or duplicate values inside one line?

No. This tool works one line at a time. A CSV row is a single line, so two rows with the same fields but different column order will not be treated as duplicates, and values separated by commas on one line are not inspected. Split the values onto separate lines first, or use a spreadsheet.

How do I remove duplicates from a comma-separated list?

Use Find & Replace with a comma in Find and \n in Replace (with “Interpret \n and \t” enabled) to put every item on its own line. Then paste the result here. A trailing space after a comma is common, so “Ignore surrounding spaces” is usually worth turning on.

Are duplicate blank lines removed?

Only if “Remove blank lines” is on, and then all blank lines are removed, not just the repeated ones. With that option off, blank lines are treated like any other line and repeated blanks collapse to one.

Is there a limit on the number of lines?

There is no fixed limit, but the work happens in your browser and every line is rendered in the output box. Lists of tens of thousands of lines are fine; extremely large pastes will depend on the memory of your device.

All tools →