Identify and remove duplicate rows from CSV files
Duplicates creep into datasets through repeated imports, merge errors, and manual entry. This tool finds them fast. Choose which columns define a "duplicate," preview the matches, then keep the first occurrence, last occurrence, or remove all copies.
Initializing in your browser…
Pretty-print, validate, and clean up CSV files
Compare two CSV files side-by-side, find added/removed/modified rows, key-based or positional matching, highlight differences, and download comparison report
View and edit CSV files in a spreadsheet-like interface
A mailing list was merged from several sources and the same address appears multiple times.
Input
list.csv · dedupe key: email (case-insensitive)
Output
14,902 → 12,610 rows · 2,292 duplicates removed (first occurrence kept)
Duplicates are detected on the column(s) you choose with case-insensitive matching, so "Dana@x.com" and "dana@x.com" collapse correctly. Keeping the first occurrence preserves the earliest record while the count tells you how dirty the source was.
Duplicates creep into datasets through repeated imports, merge errors, and manual entry. This tool finds them fast. Choose which columns define a "duplicate," preview the matches, then keep the first occurrence, last occurrence, or remove all copies.
Remove duplicate contacts before a mail merge or CRM import.
Eliminate overlapping records after combining CSVs from multiple sources.
Identify how many duplicate records exist in a dataset and where they cluster.
You control what counts as a duplicate by selecting one or more key columns. Two rows are considered duplicates only if they match on every selected column, so you can deduplicate by email alone, by a combination of first name + last name + zip code, or by every column at once. The tool shows each group of duplicates so you can verify before removing anything.
Yes. Select a single column like email or ID and the tool treats rows as duplicates whenever that column value repeats.
By default yes, but you can enable case-insensitive matching so "John" and "john" are treated as the same value.
You can download a separate file containing only the removed duplicates for auditing purposes.
Rows and columns are parsed and transformed in memory in your browser. No record ever reaches a server.