Remove duplicate rows from a CSV: delete rows that match another row cell for cell
In short: Upload a list and delete every row that matches an earlier row in every cell, with options for spaces and upper or lower case. The first copy stays. Limit: Rows must match in every cell; one different cell makes a different row.
Upload a CSV or .xlsx file, or paste it with a header row. Every row that matches an earlier row in every cell is removed, and the first copy stays. Spaces around cells are ignored and upper and lower case count as the same, unless you change that. You download the list without repeats and the rows removed.
Price: this tool is free. Checking a whole email list is from $9/mo, and the first 100 checks are free with Google, no card. Check your list free nowSee pricing
Sample result
Six example rows keep 4 and remove 2 that match an earlier row in every cell. The row with a different company stays.
- Rows kept
- 4 of 6
- Case
- Ignored
- Spaces
- Ignored
What this means for you
Removing repeats does not show which mailboxes work; a check shows which addresses exist.
- Every cell must match
- First copy kept
- Case and spaces options
- Removed rows saved
- Duplicates
- CSV
- Lead list
By SimpleVerifier Team · Last updated · Runs in your browser; nothing you paste is sent to us
Removed the repeats?
- Download the list, or use the check button under the result, which carries its addresses across.
- Upload or paste it at /verify. Every address gets a live mailbox check, and the first 100 email checks are free with a Google sign-in, no card.
How do I remove identical rows from a CSV?
- Upload the file as a CSV or .xlsx, or paste the cells with the header row first.
- Choose whether to ignore spaces around cells and whether case matters.
- Check the rows removed, each with the row it matches.
- Download the list without repeats, and the rows removed if you want to see them.
Example
- You enter
- Six rows with Email, Name and Company columns: two rows that match another in every cell (one differs only in capitals), one row with the same email but a different company, and two unique rows.
- You get
- 4 rows kept and 2 removed. AVA@example.com matches row 1 and the second ben@example.org row matches row 2. The ava@ row with a different company stays.
- Limits
- Runs in your browser with no row cap; an uploaded file can be up to 25 MB. Nothing is uploaded.
How is this different from deduping by email?
A row is removed only when every cell matches an earlier row. If the same address has a different company or title on two rows, both stay, because the rows are not identical.
To keep one row per address whatever the other cells say, use remove CSV duplicates by column. To keep the newest, use keep the newest row per email.
What counts as identical?
With the defaults, spaces before and after a cell are ignored and capital letters do not matter, so AVA@example.com matches ava@example.com. Switch either off for an exact match. Empty cells at the end of a row are ignored, so a row with two trailing commas still matches the same row without them.
Rows with every cell blank are never treated as repeats of each other; they are kept and counted.
Where do these repeats come from?
Mostly from joining exports: the same file pasted twice, two exports of the same list, or a sheet with a header copied into the middle. Cleaning them first means you do not pay to check the same address twice.
The rows removed are saved as a second file with the row each one matches, so nothing disappears silently. Everything runs in your browser.
Who uses this tool, and for what?
- Cold emailers
- Clean up a list that was pasted or exported twice before it goes into a sequencer.
- Marketers
- Remove repeated rows after joining several sheets.
- Sales teams
- Remove repeated header rows left in the middle of a combined file.
What can’t this tool tell you?
- Rows must match in every cell; one different cell makes a different row.
- It finds exact matches only; a typo makes a different value.
- Only the first sheet of a workbook is read.
- It does not check whether an address exists.
Common questions
- Is the first or the last copy kept?
- The first. Later identical rows are removed.
- Are upper and lower case the same?
- By default yes. There is a switch for an exact match.
- What about two rows with the same email but a different company?
- Both stay, because the rows are not identical. Use remove CSV duplicates by column to keep one row per email.
- What happens to blank rows?
- They are kept and counted, never treated as repeats of each other.
- Can I see what was removed?
- Yes. The removed rows are shown and saved as a second file with the row each one matches.
- Is my file uploaded?
- No. The file is read in your browser and goes nowhere.
A tidy list can still be full of dead addresses.
Extracting, deduplicating and syntax checks all work on the text of an address. None of them can tell whether the mailbox exists. Only the server that hosts it can answer that, through an SMTP check, and that is what the paid product does.
- Upload the cleaned file as it is: CSVs up to 100,000 rows
- A real SMTP mailbox check on every row, with catch-all detection
- Small list? Starter at $9/mo covers 2,500 emails a month, cancel anytime
Plans from $9 a month, cancel anytime, no contract. Sign in with Google and your first 100 email checks are free, no card. The free tools stay free either way.