CSV Deduplicator

Duplicates sneak into CSV exports in annoying ways: repeated webhook deliveries, two reports concatenated by hand, or a join that fanned out rows you did not expect. This deduplicator hashes each data row and keeps only the first occurrence, so the output preserves your original row order while quietly dropping the copies. The header row is optional, flip the toggle if your file starts directly with data.

How the deduplication works

  1. 1

    Paste the CSV

    Include or exclude the header row; use the checkbox to tell the tool which it is.

  2. 2

    Each row is hashed

    Rows are parsed into arrays and an MD5 of their JSON representation is used as the uniqueness key.

  3. 3

    First seen wins

    The first row with a given hash is kept. Later rows with the same content are skipped silently.

  4. 4

    Header preserved

    If header mode is on, row 1 is always passed through without being deduplicated against the data.

What counts as a duplicate

The deduplicator uses full-row equality. Two rows are duplicates when every cell matches, position by position, after standard CSV parsing.

Things that still count as different

Row A Row B Treated as
Alice,30,Paris Alice, 30, Paris Different (extra spaces)
Bob,25 Bob,25, Different (trailing empty cell)
"Jane Smith",42 Jane Smith,42 Same (quoting is parser-level)
TRUE,1 true,1 Different (case sensitive)

When a column-level dedup would be more appropriate

Full-row matching is strict, which is usually what you want, but sometimes you actually want “one row per email regardless of other columns”. In that case, first use the CSV Column Extractor to reduce the file to just the key column, dedup that, and use the result as a lookup. Or reach for SQL: SELECT DISTINCT ON (email) * FROM users ORDER BY email, created_at DESC; in PostgreSQL, or a GROUP BY with MIN() aggregates elsewhere.

Practical tips

  • Normalise before you dedup. Trim whitespace and standardise casing on the key columns first, otherwise ALICE@EXAMPLE.COM and alice@example.com will both survive.
  • Sort, then dedup, for auditable results. If you need to know which copy was kept, sort the CSV by your preferred tie-breaker (most recent timestamp, lowest ID) before running the deduplicator.
  • Check the row count. Use the CSV Row Counter on the original and output to confirm how many duplicates were removed.

Frequently Asked Questions

No, it hashes full parsed rows. For single-column uniqueness, narrow the CSV down to that column first using the Column Extractor and then run the deduplicator.

The first occurrence in the file. Sort the CSV beforehand if you want a specific copy (the newest record, the lowest ID, etc.) to win.

Yes. Rows are parsed with standard CSV rules, so "Jane, Smith" stays a single cell and is compared as such.

The CSV is sent to our server to compute the deduplication. It is not stored or shared, and it is not added to the page link.

Related Tools

Tool available in other languages