csvkit.org
CSV (Comma-Separated Values) utilities, in the browser
Say hi →

Find Duplicates in a CSV

duplicate groups · source row numbers · any key columns · case & space options

See your duplicates before you delete them. Pick which columns define "the same record" — the whole row, or just email, or invoice + date — and get every duplicated row back, grouped and numbered, with the line it came from in the original file. When you already know you want them gone, Dedupe does the removing.

duplicates
columns that define a duplicate (all ticked = identical rows)
Or drop a .csv file here, or
ready

How to find duplicate rows

  1. Paste the CSV or drop a file. Every column starts ticked, which finds fully identical rows.
  2. Untick columns until only the ones that define identity remain — email alone, or order_id + line_no.
  3. Read the status line: how many duplicate keys there are, and how many of your rows they cover.
  4. Switch the output mode depending on what you need next — a report, a flagged copy of the full file, or a deduped version.

The four output modes

Why duplicates hide

Two rows that look identical on screen often differ by a trailing space, a non-breaking space pasted from a web page, or casing ([email protected] versus [email protected]). Ticking ignore edge spaces and ignore case catches those without changing your data — the comparison is normalised, the output rows are untouched. If you want the file itself cleaned, run Trim whitespace first.

FAQ

What's the difference between this and Dedupe?

Dedupe removes duplicates and gives you the cleaned file. This tool shows you what would be removed, with row numbers — the step you want before deleting anything you can't recover.

Can I find duplicates on a single column but keep all the other columns?

Yes — tick only that column. Every output mode still carries all of your columns.

Do row numbers count the header?

source_row counts data rows, so row 1 is the first record after the header.

How do I count occurrences per value instead?

That's Value counts, which gives a frequency table for one column with percentages.

Privacy

100% client-side. No upload. See the privacy policy.