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.

No upload No account No size limit Works offline CSV · TSV · XLSX

Drop your CSV or Excel file here

CSVTSVXLSX

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.