Skip to Content
RowSlice

Free Online CSV Duplicate Remover

Remove Duplicates from a CSV File

Your mailing list has the same customer three times, or an export was run twice. Delete the repeats by comparing whole rows or only the columns that identify a record, such as email.

  • Multi-GB files
  • Never uploaded
  • Free, no sign-up

In short: RowSlice's CSV duplicate remover deletes repeated rows from a CSV file inside your browser, so the file is never uploaded. It compares whole rows or only the columns you choose, such as email, keeps either the first or the last copy of each row, and leaves the row order unchanged. The tool sets no file-size limit of its own, but one run can compare up to about 33 million different rows (or different combinations of values in the chosen columns), or about 8.4 million when you keep the last copy. Past that, it stops with a message instead of saving a partial result.

How to Remove Duplicates from a CSV

  1. Choose or drag in your CSV file and check the preview.
  2. Decide what makes two rows the same: every column matches for exact copies, or these columns match to compare only key columns like email.
  3. Choose which copy of a repeated row to keep: the first, which is the default, or the last, for a file in which the newest version of a record is the one nearest the bottom.
  4. Tick Ignore upper and lower case and Ignore spaces if the data was typed by people.
  5. Press Remove Duplicates and download the cleaned file.

Remove Duplicates Based on One Column (Email, ID or SKU)

Exact duplicate rows usually come from the same export being run twice, or from merging files whose date ranges overlap. Comparing every column removes those and nothing else, so it is the safe default.

Duplicate records are different: the same customer signed up twice with a different phone number, or the same product appears with two prices. The rows are not identical, so a whole-row comparison keeps both. Compare only the column that should be unique — the email address, the order number, the SKU — and the tool keeps one row for each.

Which copy is kept matters as soon as the two rows differ. The default keeps the first copy, the one nearest the top of the file. Choose the last copy when the file is in the order the records were written — an export sorted oldest first, or a log appended to over time — because there the later row is the current one and the earlier row is out of date. That setting reads the file twice: which copy is the last one is not known until the end of the file, and by then the copies before it would already have been written, so the first pass finds the last copy of each row and the second writes the result. Expect it to take about twice as long. Row order is your file's own order either way, and no row is moved.

emailnamesignupEvery columnEmail only (ignore case)
ann@shop.comAnn2026-01-04KeptKept
ann@shop.comAnn2026-01-04RemovedRemoved
Ann@Shop.comAnn B.2026-03-18KeptRemoved
bob@shop.comBob2026-02-11KeptKept

The third row is only caught because Ignore upper and lower case is ticked: Ann@Shop.com and ann@shop.com are different text otherwise. Both result columns show the default, which keeps the first copy of each group; keeping the last copy removes just as many rows, but the copy left standing is the lowest one — Ann@Shop.com in the email-only column. For mailing lists, including stray spaces and Gmail's dots and plus signs, see our guide to removing duplicate emails from a CSV list.

Find Duplicates Without Deleting Anything

Sometimes you only want to know whether a file has duplicates, and which rows they are, before anything is removed. Tick Also save the removed rows to a separate file. The result line tells you how many duplicate rows were found, and you get two files: yourfile-deduplicated.csv with the rows that were kept, and yourfile-duplicates.csv with the header and every row that was taken out. Your original file is not changed, so if you decide the duplicates should stay, simply keep using it.

Two things to know. The duplicates file holds the copies that were not kept — the later ones when you keep the first copy, the earlier ones when you keep the last — and the copy that was kept is in the cleaned file, not in this one. And the tool does not highlight or mark duplicates inside your original file; it only writes these two new files.

To learn whether a file has repeats at all without producing any files, check it with the CSV validator instead. The validator counts repeated whole rows and repeated values in a column you choose, such as an order number that is meant to be unique, and reports rather than rewrites.

Merge Several CSV Files, Then Remove Duplicates

The tool cleans one file at a time, so duplicates spread across several exports need one extra step. First merge the CSV files into one, then remove duplicates from the merged file. Rows that were in different files now sit in the same file, so the repeats are found, and the copy that is kept comes from whichever file was earliest in the merge — or the latest, if you choose to keep the last copy.

One catch: if you ticked Add a source_file column while merging, every row ends with the name of the file it came from, so two copies from different files no longer match on every column. Choose these columns match and tick every column except source_file, or only the key column such as email.

Merging is the wrong first step when the two files are the same report run twice and the question is what moved between them rather than which rows repeat. Comparing the two exports matches their rows on an ID column and counts the rows added, removed and changed, leaving both files as they are.

Why Not Use Excel's Remove Duplicates?

Excel's Data › Remove Duplicates works well for files that fit on a sheet. It cannot help once the file has more than 1,048,576 rows, because Excel never loads the rest. It also changes values as the CSV is opened — leading zeros disappear from codes, long numbers are rounded — so two IDs that were different in the file can become identical in Excel and one of them gets deleted.

RowSlice reads the raw text of your CSV, so 00123 and 123 stay different values. It reads the file a few megabytes at a time and keeps only a small fingerprint of each different row in memory, so the file can be far longer than Excel's limit. What counts is the number of different rows: up to about 33 million per run when you keep the first copy of each row, about 8.4 million when you keep the last, however many repeats the file contains. Your data never leaves your computer.

Last updated .

FAQ

Frequently Asked Questions

Which copy of a duplicate row is kept, the first or the last?

Whichever you choose. Keep the first copy is the default: the file is read from top to bottom, and any row that matches a row already seen is removed, so the earliest copy of each row is the one that stays. Keep the last copy keeps the copy nearest the bottom of the file instead, which is the one you want when the file is in the order the records were written and the newest version of a record should win. Keeping the last copy reads the file twice — the first pass works out where each row's last copy is, because that is not knowable until the end of the file, and the second pass writes the result — so expect it to take about twice as long, and one run compares fewer different rows: 8,388,608 instead of 33,554,432, a quarter as many. Neither setting sorts or reorders anything, and in both the rows that are kept come out in the order they were in your file.

How do I remove duplicates based on one column, like email address?

Choose these columns match and tick only the column that identifies a record, such as email or customer_id. Two rows then count as duplicates when that column matches, even if other columns differ. Tick several columns to match on a combination, such as first name + last name + date of birth.

Will “John@Example.com” and “john@example.com ” be treated as the same?

Only if you ask for it. Tick Ignore upper and lower case and Ignore spaces at the start and end of values to treat them as duplicates. The row that is kept is written exactly as it was in the file.

Does it catch near-duplicates or typos?

No. Two values must be exactly the same text, after the two optional rules: Ignore upper and lower case and Ignore spaces at the start and end of values. So Jon and John stay separate, and so do John Smith and John  Smith with two spaces in the middle, because only spaces before and after a value are ignored. Different spellings of the same thing, such as St. and Street, also count as different.

Can I see which rows were removed?

Yes. Tick Also save the removed rows to a separate file. You then get a second CSV with the header and every removed row. Those are the copies that were not kept — the later ones when you keep the first copy, the earlier ones when you keep the last — and the copy that was kept is in the cleaned file. It is a good way to check the result before deleting anything.

Does it change the order of my rows?

No, and that holds whether you keep the first copy of a repeated row or the last. The rows that are kept come out in the same order as in your file, and each one is copied exactly as it was written, with its capital letters, spaces and leading zeros unchanged. Completely empty lines are left out.

Is there a limit on rows or file size?

The limit that matters is the number of different rows in one run: 33,554,432, about 33 million, when you keep the first copy of each row, and 8,388,608, about 8.4 million, when you keep the last — that pass has to remember where each row last appeared, not only that it appeared, which costs more memory per row. Repeated rows do not count towards either figure, and file size itself is not capped, because the file is read a few megabytes at a time instead of being loaded whole. When you compare chosen columns, it counts the different combinations of values in those columns instead, so comparing fewer columns means fewer different combinations. Past the limit, or sooner if the browser runs short of memory, the tool stops with a message and saves no partial result. You also need free disk space a little larger than the file, within your browser’s storage allowance for one site (about 10 GB in Firefox); the tool checks this before it starts.

How accurate is it on millions of rows?

To handle files larger than your computer's memory, the tool remembers a 64-bit fingerprint of each different row instead of the row itself. Two different rows would have to produce the same fingerprint to be confused, and the odds of that are about 1 in 3.7 billion for a file with 100,000 unique rows, and about 1 in 370,000 for 10 million unique rows. For any file that fits in Excel, you can treat the result as exact.

Can I de-duplicate a mailing list without uploading it to a website?

Yes, that is the point of this tool. Duplicates are found by code running in your own browser and the cleaned file is written to your own disk, so a list of real names and email addresses never leaves the machine it is already on. There is no account and no copy on any server. The results are kept only in your browser's own storage for this site until you start a new job, and results left behind are removed after six hours the next time you use a tool.

Guides

More Tools

More CSV Tools

CSV Analyzer

Count the rows, list the columns and profile the values in a CSV too big to open.

CSV Viewer

Page through and search a CSV that is far too large for Excel, without uploading it.

Compare Two CSV Files

See what was added, removed and changed between two exports, matched on an ID column.

Take a Sample from a CSV

Pull the first rows, every Nth row or a random slice out of a huge file for testing.

Sample CSV File Generator

Download realistic test CSV files from 10 rows up to 20 GB, with messy values on request.

Split CSV into Multiple Files

Cut a CSV that Excel refuses to open into multiple files by rows, size or number of parts.

Split CSV by Column Value

One file for every store, region, client or status — straight from a huge export.

Filter CSV Rows

Keep only the rows you need — by value, text match or number range — from a file of any size.

Merge CSV Files

Combine multiple CSV files into one, lining up columns by name, even when the result is too big for Excel.

Convert CSV to Excel

Make a real .xlsx file without losing leading zeros, long IDs or turning codes into dates.

Convert CSV to JSON

Turn a CSV into a JSON array or NDJSON, with every value kept exactly as written.

Convert JSON to CSV

Flatten a JSON array or NDJSON export into a spreadsheet-ready CSV.

CSV Validator

Find the broken rows, bad quotes, wrong encoding and duplicate IDs before an import fails.

Convert CSV to UTF-8

Repair garbled characters like é by converting to UTF-8, and switch semicolons to commas.