Remove duplicate emails from a list or CSV
To remove duplicate emails, paste a list or upload a CSV above. The tool removes every repeated address, ignoring capital letters, and keeps the first row for each address with all its other columns. You can also match Gmail addresses that differ only by dots or a +tag. It runs in your browser and shows which rows were removed.
Sample result
3 of 5 addresses kept; 2 were the same address in different capitals.
- Kept
- 3 of 5
- Reason
- Same address, different capitals
- Mode
- List
What this means for you
Each person gets your email once, and you don't verify or send to the same address twice.
- Pasted lists or whole CSVs, columns kept
- Shows which address each one duplicated
- Optional Gmail dot and +tag matching
- Optional +tag matching on every domain
- Dedupe
- Gmail
- CSV
By SimpleVerifier Team · Last updated · Runs in your browser; nothing you paste is sent to us
How do I remove duplicate emails from a list?
- Paste one address per line, or upload a CSV export. If the file has several columns, the email column is found automatically and every other column is kept. Files can be up to 25 MB.
- Choose the matching options. Case-insensitive matching is always on; Gmail dot and +tag matching is off until you tick it.
- Press Remove duplicates. The table shows each removed row, the address it duplicated and the reason.
- Download the cleaned CSV, and the removed rows too if you want a record of what changed.
Example
- You enter
- 5 addresses including
jane.doe@gmail.comandJane.Doe@gmail.com, andbob@acme.exampleandBOB@acme.example. - You get
- 3 of 5 kept. The 2 removed rows are shown with the address each duplicated and the reason: same address in different capitals.
- Limits
- Runs in your browser with no row cap; an uploaded file can be up to 25 MB.
Are email addresses case-sensitive when removing duplicates?
No, not in practice, so the tool always ignores capital letters. Strictly, RFC 5321 says the part before the @ may be case-sensitive, so Jane@ and jane@ could in theory be different mailboxes. The same section says exploiting that "impedes interoperability and is discouraged", and no mainstream mailbox provider does it. In practice they are one person, and keeping both means emailing them twice.
The domain part is case-insensitive by definition, because DNS is. So the tool always compares addresses in lower case, and the option at the bottom only decides whether the kept address is written out in lower case or as it first appeared.
Do Gmail dots and +tags count as duplicate emails?
They can, and with the Gmail option on the tool treats them as one address. Google states that dots don't matter in Gmail addresses: jane.doe@gmail.com and janedoe@gmail.com are the same inbox. Gmail also delivers jane+anything@gmail.com to jane@gmail.com. With the option on, all of those collapse to one row, and googlemail.com is treated as gmail.com.
That option is off by default for a reason. Some people sign up with a +tag deliberately so they can filter or trace your mail, and collapsing the tag changes the address they gave you. If you are deduplicating to avoid double sends, turn it on. If you are cleaning a list you will send to as-is, keep the address they chose and only remove true duplicates.
The "ignore +tags on every domain" option goes further and is riskier. Plus addressing, described as subaddressing in RFC 5233, is a convention many providers follow but none is required to. On a server that doesn't use it, sales+uk@ can be a completely separate mailbox from sales@.
How do I remove duplicate emails in Excel or Google Sheets?
In Excel, select the email column and use Data, then Remove Duplicates. In Google Sheets, use Data, Data cleanup, Remove duplicates. Neither trims stray spaces as part of the match, so jane@acme.com and jane@acme.com with a trailing space stay as two rows (Sheets has a separate Trim whitespace step to run first), and neither knows about Gmail dots.
A formula avoids the spaces problem. In Excel for Microsoft 365 and in Google Sheets, =UNIQUE(LOWER(TRIM(A2:A1000))) returns each address once, trimmed and lowercased (Google Sheets UNIQUE). It returns the addresses only, so the other columns of each row are lost. Uploading the CSV here keeps the whole first row for each address instead.
How do I remove duplicate addresses from the To, Cc or Bcc field?
Copy the recipients out of the field, clean them here or in the email list cleaner, and paste the result back. Outlook writes recipients as "Doe, Jane" <jane@acme.com>; with names attached, and the email list cleaner understands that format directly: it merges repeated addresses and keeps each name. A plain list with one address per line is faster in this tool.
This page removes duplicate addresses from a list. It does not remove duplicate messages from an Outlook, Gmail or Apple Mail folder; that is a mailbox clean-up job done inside the mail app.
Does removing duplicates clean an email list?
Only partly. Removing duplicates protects people from getting the same message twice and stops you paying to verify or send the same address twice. It does nothing about addresses that no longer exist. A list that has been sitting in a CRM for a year typically has a share of dead mailboxes, and every one is a hard bounce waiting to happen.
Duplicates are also a clue about where a list came from. A list merged from several exports, or scraped, tends to carry far more of them, and the same lists tend to carry more invalid addresses. If this tool removed a lot, the next step matters more: see how to clean an email list for the full order of operations.
Is this better than Remove Duplicates in Excel?
For a tidy single column, Excel is fine. For merged exports, the gaps show:
| This tool | Excel Remove Duplicates | |
|---|---|---|
| Capital letters | Ignored | Ignored |
| Leading or trailing spaces | Trimmed before matching | Counted as a different value |
| Gmail dots and +tags | Optional match | Not matched |
| Several addresses on one line | Split and checked separately | Treated as one value |
| Record of what was removed | Downloadable, with the reason | A count only |
Formula alternative in Excel for Microsoft 365 or Google Sheets: =UNIQUE(LOWER(TRIM(A2:A1000))).
Who uses this tool, and for what?
- Cold emailers
- Merge lead lists from several sources and remove the repeats before you pay to verify or load them, so nobody gets the same sequence twice from two inboxes.
- Marketers
- Deduplicate an event or webinar sign-up export before importing it, with the Gmail option on so
jane.doe@andjanedoe+events@don't become two contacts. - Sales ops
- Clean a CRM export where the same contact was entered with different capitalisation, keeping the first, most complete row and a downloadable record of every row removed.
- Agencies
- Combine a client's lists from different tools into one file, then compare it against their unsubscribes before the first send.
What can’t this tool tell you?
- It matches addresses, not people.
jane@acme.comandjane.doe@acme.comstay as two rows even if they reach the same person. - Dots are ignored only on gmail.com and googlemail.com. Google Workspace domains and other providers are not collapsed, because a dot there can mean a different mailbox.
- The "+tags on every domain" option can merge mailboxes that are really separate on servers that don't use plus addressing.
- It removes duplicate addresses from a list, not duplicate messages from a mailbox folder.
- It does not check whether any address still works; a deduplicated list can still bounce.
Common questions
- How do I remove duplicate emails in a CSV?
- Upload the CSV above and press Remove duplicates. The tool finds the email column, keeps the first row for each address with all its other columns, and removes the rest. Matching ignores capital letters. Download the cleaned CSV when it's done; nothing is uploaded to a server.
- How do I remove duplicate emails in Excel?
- Select the column and use Data, Remove Duplicates. It ignores case but not stray spaces, so wrap the column in TRIM first, or upload the file here, which trims, ignores case and keeps the first full row for each address.
- How do I remove duplicate emails in Google Sheets?
- Use Data, Data cleanup, Remove duplicates, or the formula =UNIQUE(LOWER(TRIM(A2:A))) in a new column. The formula returns the addresses only; to keep each row's other columns, download the sheet as CSV and upload it here.
- Can this remove duplicate emails in my Outlook inbox?
- No. It removes duplicate addresses from a list or CSV, not duplicate messages from a mailbox folder. To clean up recipients copied from Outlook's To or Bcc field, paste them into the email list cleaner, which reads Outlook's Name <address>; format.
- Is jane.doe@gmail.com the same as janedoe@gmail.com?
- Yes. Google says dots don't matter in Gmail addresses, so both deliver to the same inbox, and so does janedoe+news@gmail.com. Tick the Gmail option to treat them as duplicates. This only applies to gmail.com and googlemail.com; on other domains a dot can be part of a different address.
- Are email addresses case-sensitive?
- The domain never is. The part before the @ is allowed to be under RFC 5321, but the same RFC discourages relying on it and mainstream providers treat it as case-insensitive. Treat Jane@example.com and jane@example.com as one address.
- Which duplicate is kept?
- The first one in your list. If your file is sorted with the most complete or most recent row first, that row is the one you keep. The removed rows can be downloaded separately with the address each one duplicated.
- How many rows can it handle?
- Files of 50,000 rows and more run in a second or two, because everything happens in your browser. The only limit is a 25 MB file size, to avoid crashing the tab. The preview shows the first 100 removed rows; the downloads contain everything.
Sources
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? $9 one-time covers 2,500 emails, no subscription
One plan, 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.