Paste a CSV, TSV or list and see which rows repeat. Switch between duplicates only, a cleaned list, and counts, then copy the result.
This tool runs entirely in your browser. What you enter is never sent anywhere.Your input is never sent anywhere.
DetailsPaste your data
Delimiter
Matching options
Paste your data to see duplicates, unique rows, and counts here.
Find and Remove Duplicate Rows in CSV Files and Lists
Mailing lists, contact exports, survey responses and logs tend to collect repeated entries over time. Scanning for them by eye is slow, and it gets less reliable as the list grows.
Paste your data and this tool groups identical rows, shows which ones repeat and how often, and builds a version with the extra copies removed. You can compare entire rows or just the columns you pick, such as an Email column, and you can ignore case and leading or trailing spaces.
Four tabs show the same data in different ways: a highlighted preview, the repeated rows only, a cleaned list, and a count for every value. Copy any of them and paste it back into your spreadsheet.
Common Uses: Mailing Lists, Surveys, Exports and Logs
Contact and customer lists
Check an export from your CRM or a spreadsheet for people who were added twice. Compare only the Email column so rows with different phone numbers or notes still match.
Merged mailing lists
After combining lists from several sources, remove repeated addresses so nobody receives the same email twice. Turn on Ignore case, since the same address is often typed in different cases.
Survey and form responses
Look for double submissions by comparing an email, a user ID or a response ID column. The Duplicates tab shows which values were submitted more than once.
Counting repeated values
Paste a list of SKUs, URLs, error messages or tags and open the Counts tab to see how often each one appears, sorted from most to least frequent.
How to Dedupe Pasted Data in 4 Steps
- Paste CSV or TSV data, cells copied from a spreadsheet, or a list with one item per line into the box. You can load the sample data first to see how it works.
- Check the delimiter, and turn on "First row is a header" if your first row holds column names. Set Ignore case and Trim spaces as needed.
- If your data has several columns, select the ones that should decide whether two rows match, for example just Email. Leave all columns unselected to compare the entire row.
- Switch between the Duplicates, Unique rows and Counts tabs, then click Copy to take the result with you.
Note: The data you paste is processed in your browser and is not sent to our server.
How Matching Works and What to Watch For
- Ignore case is off by default, so "Smith" and "smith" count as different values until you turn it on. Trim spaces is on by default and strips spaces at the start and end of each value.
- Spaces inside a value, accents and spelling differences are not normalized. "John Smith" and "Smith, John" are treated as different values.
- Blank lines are skipped. If the first row holds column names, turn on "First row is a header" so it is not counted as data.
- Commas inside double-quoted values are kept together. Each line is read on its own, so quoted values that continue onto the next line are not supported.
- Each result list shows the first 1,000 rows. Copy always includes every row.
What Each Result Tab Shows
Every tab uses the same matching rules, so the numbers are consistent across them.
| Tab | What it shows | Typical use |
|---|---|---|
| Preview | Every row in your data, with rows that repeat highlighted | A quick visual check |
| Duplicates | Values that appear at least twice, with a count, most frequent first | Finding what to clean up |
| Unique rows | Each distinct value once, keeping the first occurrence in the original order | A cleaned list to paste back |
| Counts | Every distinct value with how many times it appears, highest first | Ranking the most common values |
Copy from the Duplicates and Counts tabs uses tabs between columns and adds a Count column, so it pastes into separate spreadsheet cells. Copy from the Unique rows tab returns the original lines.
Why Repeated Rows Slip Through: Case, Spacing and Key Columns
Most missed repeats come from how rows are compared, not from the data itself. These are the points that matter most.
Set the matching rules before you read the results
Two things decide what counts as a match: whether case and surrounding spaces are ignored and whether you compare the whole row or only certain columns.
Set both first. Otherwise rows that a person would call the same can be reported as different.
Why merged lists collect repeats
Lists that come from different places, such as a CRM export, an event sign-up sheet and a web form, often contain the same person with slightly different details.
Running the combined list through the tool right after merging, comparing a field that should be unique like email, catches these early.
Whole-row match or single-column match
A whole-row match only finds rows that are identical in every column. If the same email appears with a different phone number or note, those rows are not matched.
To find them, select just the column that should be unique, such as an email address or customer ID.
Using it alongside spreadsheet formulas
In a spreadsheet you can count matches with a formula like COUNTIF, or use the built-in remove-duplicates command. This tool is useful for a quick paste-and-check without writing a formula.
The Counts tab copies as tab-separated text, so you can paste it back into a sheet and keep working there.
Common Mistakes When Deduping Data
The header row is counted as data
A first row like "Name,Email,Department" is included in the counts and shows up in the results as if it were a record.
💡 See the solution▼
Same value in different cases is not matched
"[email protected]" and "[email protected]" appear as two separate values, so a repeat goes unnoticed.
💡 See the solution▼
Whole-row matching misses repeats with different details
The email is the same, but the notes or sign-up date differ, so the rows are not reported as duplicates.
💡 See the solution▼
The wrong delimiter splits values in odd places
Everything ends up in one column, or a value is cut in the middle, because the data does not use the delimiter that was detected.
💡 See the solution▼
Leaving the page before copying the result
The cleaned list is only on screen. If you close or refresh the page, the pasted data and results are gone.
💡 See the solution▼
CSV Duplicate Checker FAQ
Q.What kind of data can I paste?
A. CSV, TSV, semicolon-separated data, space-separated data, or a plain list with one item per line. Cells copied from Excel or Google Sheets work too. Auto-detect picks the most common of comma, tab and semicolon in the first 30 lines. Space and custom delimiters have to be selected manually. Choose "None (whole line)" to treat each line as a single value.
Q.How do I remove duplicates from a list and keep one copy of each?
A. Open the Unique rows tab. It keeps the first occurrence of each value, in the order they appeared in your data, and drops the later copies. Click Copy to take the cleaned list with you.
Q.What is the difference between the Duplicates, Unique rows and Counts tabs?
A. Duplicates lists only the values that appear at least twice, with how many times each appears, most frequent first. A slider raises the minimum count. Unique rows lists each distinct value once. Counts lists every distinct value, including those that appear only once, sorted from most to least frequent.
Q.Can I check for duplicates in just one column?
A. Yes. When your data has more than one column, a row of column buttons appears. Select one or more, such as Email, and only those columns are compared. Rows with the same email count as duplicates even if the other columns differ. With no column selected, the entire row is compared. The Unique rows tab keeps the first row of each match, including its other columns.
Q.Does it ignore uppercase and lowercase, or extra spaces?
A. "Trim spaces" is on by default and removes spaces at the start and end of each value. "Ignore case" is off by default, so Smith and SMITH are different until you turn it on. Spaces inside a value are kept, accents are not folded, and similar-but-different spellings are not matched.
Q.My first row is a header. What should I do?
A. Turn on "First row is a header." The first row is then used for the column names and left out of the matching, the counts and the results. If you leave it off, the header is treated as one more row of data.
Q.What happens to commas inside quoted values?
A. A value wrapped in double quotes, such as "Smith, John", stays together as one value even though it contains a comma. Each line is read on its own, so a quoted value that continues onto the next line is not supported.
Q.Is my data uploaded anywhere?
A. No. The data you paste is processed in your browser and is not sent to our server, so you can check customer lists and email addresses without uploading them.
Q.How many rows can it handle?
A. The tool has no fixed row limit, but everything runs on your device, so a very large paste can be slow. Each result list shows the first 1,000 rows to keep the page responsive. The Copy button still copies every row.
Your feedback
makes this tool better.
Tell us which features you'd like, what should be fixed, or which new tool you'd like to see. An engineer reads every submission and uses it to guide development.