100% client-side · no upload
Remove duplicates from anything. Free, private, in your browser.
Drop an Excel, CSV, text list, or JSON array below and get a deduplicated copy in seconds. Files are processed entirely in your browser. Nothing is uploaded.
0bytes uploaded
Verifiable in DevTools → Network
4formats
xlsx · csv/tsv · txt · json
500krows
Parsed and deduped in under a second
Drop a .xlsx / .csv file here or
Processed locally. Check your Network tab: no uploads.
How it works
- Drop or paste your data. Excel, CSV, plain text, or a JSON array.
- Choose what counts as a duplicate. Whole rows, selected columns, or a JSON key path. First occurrence is kept; order is preserved.
- Download or copy the clean copy. Done. Your file never left your machine.
Private by architecture, not by promise
Every tool on this site runs as JavaScript in your browser. There is no upload endpoint. Your data cannot reach our servers because none of the code sends it anywhere. Open your browser's developer tools and watch the Network tab while you dedupe: you'll see no requests carrying your data. That's the whole point of building it this way.
FAQ
Frequently asked questions
How do I remove duplicates from an Excel file?
Drop your .xlsx or .csv into the tool above, pick the columns that define a duplicate, download the cleaned copy. (Excel itself can do exact-match dedupe via Data → Remove Duplicates. This tool adds column control, huge files, and works when you don't have Excel.)
Is it safe for sensitive data?
Yes. Processing is local to your browser. No file contents are transmitted. Verify it yourself in DevTools → Network.
Which duplicate is kept?
The first occurrence, always. Your data keeps its original order.
How large a file can it handle?
500,000 rows in well under a second, and more than a million on a desktop. The ceiling is your device's memory, not a plan limit.
Can it do fuzzy matching ("Jane Smith" vs "Smith, Jane")?
Via the API. Fuzzy comparison is pairwise and heavy enough to freeze a browser tab on real-world lists, so it runs server-side: send rows with options.fuzzy: true and names are normalized for case, punctuation, and word order, with a similarity threshold you control. A free API key is enough to try it. See the API docs.
Is there an API?
Yes. POST lines, CSV, or a JSON array to /api/dedupe and get the deduplicated result. It is metered in rows rather than calls: a free key gets 1,000 rows a month to try it, and paid plans start at $19. The tools on this site stay free and unmetered. See the API docs.