CSV Deduplicator

Paste or upload a CSV to remove duplicate rows. Choose exact or case-insensitive comparison. Optionally deduplicate only by selected columns. Shows counts of rows kept and removed, and lets you download the clean CSV. Runs entirely in your browser.

Browser-local No signup required Utility

Remove duplicate rows from CSV or supported delimited text while keeping the first occurrence. You can preserve a header row, choose the input delimiter, and optionally compare rows without case sensitivity.

How to remove duplicate CSV rows

  1. Paste the data into the input box.
  2. Choose comma, semicolon, tab, or pipe as the input delimiter.
  3. Set the header option and enable case-insensitive comparison if needed.
  4. Run Deduplicate.
  5. Review how many rows were removed and copy the comma-separated CSV output.

How duplicate rows are detected

Each data row is converted into one comparison key by joining all of its parsed cells with a null separator. Duplicate detection therefore compares the complete row, not one selected column.

When case-insensitive mode is enabled, the combined row key is lowercased before comparison. The first occurrence is kept, later matches are removed, and an optional header row is excluded from duplicate checking. Output is serialized as comma-separated CSV with CRLF line endings.

Privacy and limitations

Deduplication runs locally in the browser and the source text is not intentionally sent to a server. Comparison is textual rather than semantic: numeric formatting, surrounding spaces, Unicode normalization, or equivalent dates are not normalized beyond the optional lowercase conversion.

Frequently asked questions

Does it deduplicate by one column?

No. It compares the entire parsed row across all columns.

Which duplicate is kept?

The first matching row is kept and later duplicates are removed.

Is the header included in duplicate checking?

No when the header option is enabled.

What does case-insensitive mode change?

It lowercases the complete comparison key before checking whether a row has already appeared.

Does the output keep tab or semicolon delimiters?

No. The current serializer outputs standard comma-separated CSV.