Remove duplicate rows from CSV — without uploading your file.
Remove duplicates by any column combination — keep first, keep last, or remove all duplicates. Works on millions of rows, entirely in your browser.
Drop your CSV or Excel file here
File never leaves your device
Everything the Deduplicator does
Match all columns or specific keys
By default, every column must match for a row to count as a duplicate. Tick specific "key columns" to remove duplicates by subset — like matching on email only.
Keep first or last occurrence
Choose which copy of a duplicate row to retain. "Keep last" is handy when the most recent export is the most accurate.
Exact-match — no fuzzy surprises
Case-sensitive, whitespace-sensitive comparison. What you see is what gets compared. Use the Find & Replace tool first if you need normalization.
Works with Excel
Drop an XLSX and remove duplicates just like CSV. Output back to XLSX if you want to keep Excel formatting.
Shows duplicates removed
Results tell you exactly how many rows were removed and how many were kept — useful for audit trails.
No size limit
Hash-based duplicate detection scales linearly — even 5 million row files work in your browser.
How does the tool decide two rows are duplicates?
By default, every column value must match exactly — it's a full-row comparison. You can narrow this by ticking specific "key columns" (e.g. just email) to match on those only. Comparison is case-sensitive and whitespace-sensitive; use Find & Replace first if you need normalization.
What's the difference between "keep first" and "keep last"?
Keep first: the first occurrence of a duplicate row stays, later copies are removed. Keep last: the latest occurrence wins, earlier copies are removed. "Keep last" is useful when your file is chronological and the most recent record is most accurate.
Why didn't my duplicates get removed?
Likely one of: (1) hidden whitespace — "[email protected]" and " [email protected] " are different strings. (2) case differences — "[email protected]" and "[email protected]" are different. (3) invisible characters like BOM or non-breaking space. The tool is deliberately strict. Run Validate first to find these; use Find & Replace to normalize them.
Can I remove duplicates by just one column (like email)?
Yes. Tick the checkbox for that column in "Key columns". Leave all others unticked. Rows with the same email will be deduped regardless of other column values.
Does this work with XLSX files?
Yes. Drop an Excel file and remove duplicates works identically. You can output back to XLSX if you need to preserve Excel formatting.
How does this tool handle numeric 0 vs string "0"?
They're treated as equal in string comparison. The tool uses string-level comparison for row matching so mixed numeric/string exports still match duplicates correctly.
Is there a size limit?
No. Hash-based duplicate detection scales linearly. Files with 5 million rows work in Chrome or Edge with enough RAM — the limit is your browser's memory, not the algorithm.
Can I see which rows got removed?
Not currently — the tool only shows the count. If you need the removed rows, use the Filter tool with a match rule to isolate duplicates before removing duplicates.
What about case-insensitive duplicate matching?
Not directly supported. Run Find & Replace first with Regex mode and your preferred normalization (e.g. lowercase the email column), then remove duplicates.
Can I save the columns I tick for next time?
Yes — "💾 Save settings" stores your output format and keep-first/last preference. Column selections are per-file so they're not saved; re-tick them quickly on each visit.
Can I preview the deduplicated output before downloading?
Yes. As soon as you load a file, a preview table shows the first 10 unique rows with a live counter ("N duplicate rows would be removed — M unique rows remain"). The preview updates instantly when you tick/untick key columns or switch between keep-first and keep-last, so you always see the effect of your choices before hitting download.
How do I remove duplicate emails while keeping the most recent record?
Sort your file first by the date column (newest first) using the Sort CSV tool, then open this tool. Tick only the email column as the key column and choose Keep first occurrence. Because the newest row is now first, dedupe keeps the most recent record for each email. Works for Leads, Contacts, or any CRM export with timestamped rows.
Split CSV
Break large files by size, rows, parts, or column.
Merge CSV
Combine multiple files into one, matching headers by name.
Remove Duplicates
Remove duplicates by any columns, keep first or last occurrence.
Filter Rows
Keep or remove rows matching text, number, or regex.
CSV ↔ JSON
Convert either direction, array of objects or NDJSON.
Find & Replace
Bulk edit values across one column or all.
Sort CSV
Sort by one or more columns, text or numeric.
Validate CSV
Check before import, one-click fixes.