- Home
- Manipulate CSV
- CSV Duplicate Remover
CSV Duplicate Remover
Find and remove duplicate rows from CSV files
Remove duplicate rows from a CSV in your browser. Upload or paste the file, choose which columns decide what counts as a duplicate, and download a clean file — with a count of exactly how many rows were removed.
Matching on selected columns rather than the whole row is what makes deduplication actually useful. Two records for the same customer are rarely byte-identical: one has a middle initial, another a newer timestamp. Matching on the email column alone catches both, while a whole-row comparison would keep them.
You also decide which copy survives. Keeping the first occurrence preserves the original ordering; keeping the last is what you want when the file is append-ordered and later rows carry the newer values.
Drop your file here or browse from your device
Accepts CSV, TSV, TXT. Maximum input: 10 MiB. Files above this hard limit are rejected before local processing.
How to Use
- Upload your CSV file or paste CSV data
- Select the columns that determine whether two rows are duplicates
- Choose whether to keep the first or last occurrence
- Review the count and preview, then download the deduplicated CSV
Features
- Match duplicates on every column or a chosen subset
- Keep the first or the last occurrence of each duplicate
- Shows how many duplicate rows were found and removed
- Preview the deduplicated result before downloading
- Preserves the original row order of the rows that are kept
- Runs entirely in your browser — no upload, no signup
Use Cases
- Clean a mailing list down to one row per email address
- Remove repeated records created by re-running an export
- Deduplicate a contact or lead list before a CRM import
- Collapse duplicate transaction or event rows before analysis
- Merge several files and strip the overlap between them
Frequently Asked Questions
How does it decide what counts as a duplicate?
You do. Select the columns that define identity — an email address, an order ID, a combination of name and postcode — and rows matching on those are treated as duplicates. Select every column to require an exact whole-row match.
Why not just compare whole rows?
Because near-duplicates are the common case. Records for the same person often differ by a timestamp, a formatting difference, or one extra field, so a whole-row comparison keeps both. Matching on the columns that identify the record catches them.
Should I keep the first or the last occurrence?
Keep the first to preserve original ordering and the earliest record. Keep the last when the file is append-ordered and later rows hold updated values.
Will I know how many rows were removed?
Yes — the count of duplicates found is shown before you download, so you can sanity-check the rule. An unexpectedly large number usually means the matching columns are too broad.
Is matching case-sensitive?
Values are compared as they appear, so Alice@example.com and alice@example.com are different. Normalise case with the CSV cleaner first if your data mixes them.
Does the row order change?
No. The rows that survive stay in their original relative order.
Is my data uploaded?
No. Deduplication happens in your browser and the file contents are not sent to the app server.