ListSweep Guides

How to remove duplicate emails from a CSV

Deduplicating a CSV takes four passes, in this order: normalise case and whitespace, drop the +tag suffix, collapse Gmail-style dots, then compare on the normalised address. A spreadsheet's UNIQUE() only does the first half of step one, which is why lists that look clean still send twice.

The reason order matters: John.Smith+crm@Gmail.com and johnsmith@gmail.com are the same mailbox, but they are different strings. Compare strings and you keep both. Compare normalised addresses and you keep one.

The four normalisation rules

  1. Trim and lowercase. " Alice@Example.com " is the same address as alice@example.com. Domains are always case-insensitive; almost every provider treats the local part that way too.
  2. Strip the plus tag. Anything from + to @ is a label the mailbox owner added. ana+news@ and ana@ deliver to one inbox.
  3. Collapse Gmail dots. Google ignores dots in the local part, so j.smith@, jsmith@ and j.s.m.i.t.h@ are one account. This applies to gmail.com and googlemail.com only — dots are significant almost everywhere else.
  4. Decide what "duplicate" means. Keep the most recent row, or the one with the most complete name and company fields. Deleting the wrong copy loses data you can't recover from the file alone.

Duplicates a spreadsheet won't find

Common ones: the same person at an old and a new company domain, a typo variant (gmial.com) that will bounce anyway, and the same address with a trailing space from a copy-paste export. The first needs human judgement, the second is a typo repair, and the third is normalisation.

If your file also came from two sources — a CRM export plus a webinar list — merge on the normalised address, not on name. Names are spelled three ways, addresses are not.

Doing it without uploading the file

Most tools solve this by asking you to upload the CSV to their server. That is a data transfer, and if the list belongs to a client it may need a processor agreement you have not signed. A browser-side tool parses the file locally: the bytes never leave the tab, and the export is generated on your machine.

ListSweep's free tier handles 100 addresses with no account; the paid unlock removes the limit. Either way the dedupe happens in your browser.

Check your own list in about 30 seconds. Paste or drop a CSV — duplicates, typos, role addresses and dead domains, all handled in your browser. Free for the first 100 addresses, $19 once for unlimited.

Open the tool

Common questions

Does deduplicating break my CSV's other columns?

Not if the tool keeps whole rows. Removing an address should remove its name, company, tags and timestamps together — check that the export preserves column order and quoting before you import it anywhere.

Should I dedupe before or after verifying?

Dedupe first. Verification costs time per address, and there is no reason to check the same domain five times for five copies of one person.

Last updated 2026-10-23.