Compare two email lists: remove suppressions and unsubscribes
To compare two email lists, put your send list in A and the addresses to remove in B: unsubscribes, bounces, customers or a suppression list. You get A minus B to send to, plus the overlap, B minus A and the union. Addresses match ignoring case and stray spaces, and a bare domain in B can remove a whole company.
CSV columns are kept in the download.
Unsubscribes, bounces, customers, a suppression list.
Runs in your browser. Nothing is uploaded.
Sample result
2 of the 4 people in list A are left to send after removing everyone in list B.
- A minus B
- 2 left to send
- In list A
- 4
- Removed (in B)
- 2
What this means for you
Use it to keep unsubscribes and past contacts out of a new send.
- A minus B, overlap, B minus A and union
- A bare domain in B removes the whole domain
- Optional Gmail dot and +tag matching
- Keeps your CSV columns in the download
- Suppression
- Compare
- CSV
By SimpleVerifier Team · Last updated · Runs in your browser; nothing you paste is sent to us
How do I compare two email lists?
- Paste or upload your send list as list A. If it's a CSV, its columns are kept in the download. Files can be up to 25 MB.
- Paste or upload the addresses to remove as list B. Add bare domains like
competitor.comto remove everyone at a company. - Choose whether Gmail dots and +tags count as the same address, then press Compare lists.
- Download A minus B to send to, or the overlap, B minus A or the union.
Example
- You enter
- List A with 4 addresses including
jane@acme.exampleandsam@yourcompany.example; list B with 3 addresses to suppress. - You get
- A minus B leaves 2 addresses to send to,
jane@acme.exampleandsam@yourcompany.example, with 2 removed because they are in B and 1 address found only in B. - Limits
- Runs in your browser with no row cap; each uploaded file can be up to 25 MB.
How do I compare two email lists in Excel?
Put =COUNTIF(B:B,A2)=0 in a helper column next to list A and filter for TRUE: those rows are not in list B. In Excel for Microsoft 365, =FILTER(A2:A1000,ISNA(XMATCH(A2:A1000,B2:B500))) returns the same rows in one formula. Both work until the lists come from different systems. Jane.Doe@Acme.com from your CRM and jane.doe@acme.com from your email platform's unsubscribe export are the same person, but a trailing space or a stray character can stop them matching, and that person gets emailed after opting out. On 50,000 rows the formula is also slow.
Both COUNTIF and XMATCH ignore capital letters, so case is not the problem; spaces are. This tool trims and lowercases every address before matching, finds the email column in each CSV automatically, and compares the lists using sets, so two lists of 50,000 compare in seconds. With the Gmail option on, j.ohnson@gmail.com and johnson+news@gmail.com count as one address, because Gmail ignores dots and anything after a +.
What is a suppression list?
A suppression list is the set of addresses you must not send to again, kept separately so they are removed from every new send list. At minimum it holds everyone who unsubscribed, every address that hard bounced, and everyone who marked you as spam. In the US, CAN-SPAM requires honouring an opt-out within 10 business days (15 U.S.C. 7704), and Gmail and Yahoo require bulk senders to process unsubscribes within two days (Google sender FAQ, Yahoo best practices). If you send from several tools, a central suppression list compared against every new send list is how an opt-out in one tool is respected in all of them.
For outreach, add existing customers, open deals and competitors' domains, so sales emails don't land on people already talking to you. Our guide to cold email suppression lists covers what to keep and for how long.
What do the four results mean?
Each is one way of comparing two lists for differences or overlap. A minus B is the send list: everything in A that isn't in B, with A's original columns. The overlap is the rows of A that B removed, useful as a record of what was suppressed. B minus A is everything in B that isn't in A, handy when B is a new export and you want only the new contacts. The union is every unique address from both lists, for merging two lists into one.
Rows that aren't email addresses are left out of all four. Duplicates within list A stay as they were; to merge them, run the result through remove duplicate emails.
Is this better than COUNTIF or VLOOKUP in Excel?
On two clean columns, a formula is fine. Across exports from different systems, the gaps show:
| This tool | COUNTIF or VLOOKUP | |
|---|---|---|
| Capital letters | Ignored | Ignored |
| Trailing spaces in either list | Trimmed | Cause missed matches |
| Remove a whole domain | Bare domain in list B | Needs a second formula |
| Gmail dots and +tags | Optional match | Not matched |
| Other CSV columns | Kept in the download | Kept, if you filter in place |
| Large lists | Set lookup, seconds | Slow on whole-column ranges |
The formula: =COUNTIF(B:B,TRIM(A2))=0 in a helper column, then filter for TRUE.
Who uses this tool, and for what?
- Marketers
- Remove the unsubscribes and hard bounces exported from one platform before sending the same audience from another, so an opt-out in one tool is respected in all of them.
- Cold emailers
- Take existing customers, open deals and competitor domains out of a new lead list before it goes into a sequence. Read cold email suppression lists for what to keep on it.
- Agencies
- Check a client's new list against their master suppression list, and keep the overlap file as a record of what was removed.
- Sales ops
- Use B minus A to find the contacts in a fresh export that aren't in the CRM yet, then remove duplicates before importing.
What can’t this tool tell you?
- A bare domain in list B removes that exact domain only.
competitor.comdoesn't removeuk.competitor.com; add each subdomain on its own line. - Rows that aren't a plain address, including cells like
Jane Doe <jane@acme.com>, are left out of every result. Clean them with the email list cleaner first. - Duplicates inside list A are kept as they were.
- Gmail dot and +tag matching applies to gmail.com and googlemail.com only.
- It compares lists; it doesn't check whether the remaining addresses still work.
Common questions
- How do I compare two email lists?
- Paste or upload the first list as A and the second as B, then press Compare lists. You get the addresses only in A, the overlap, the addresses only in B and the union of both, each as a download, matched regardless of case and stray spaces.
- What is a suppression list?
- A list of addresses you must not email again: unsubscribes, hard bounces, spam complaints and any contacts you have chosen to exclude, such as customers or competitors. It is compared against every new send list so those addresses are removed before sending.
- How do I remove unsubscribes from an email list?
- Put your send list in list A and your unsubscribe export in list B, then press Compare lists and download A minus B. Addresses match regardless of case and surrounding spaces, and your CSV columns are kept.
- How do I compare two email lists in Excel?
- In a helper column next to list A, use =COUNTIF(B:B,TRIM(A2))=0 and filter for TRUE. It's case-insensitive but misses spaces inside list B and is slow on large lists. The tool above does the same comparison with both lists trimmed and lowercased.
- How do I compare two lists for differences?
- Download A minus B for the rows only in the first list and B minus A for the rows only in the second. Together they are every difference between the two lists; the overlap is what they share.
- What is an exclusion list?
- Another name for a suppression list, common in ad and email tools: the contacts to leave out of a send or audience. Put it in list B here and download A minus B.
- Can I remove a whole company or domain?
- Yes. Put the bare domain, such as competitor.com, on its own line in list B and leave the domain option ticked. Every address at that domain is removed from list A.
- Is matching case-sensitive?
- No. Addresses are trimmed and lowercased before comparing, because mainstream mailbox providers treat Jane@Acme.com and jane@acme.com as the same mailbox.
- Are my lists uploaded anywhere?
- No. Both lists are read and compared in your browser. Nothing is sent to our servers.
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.