How to Verify Emails in Excel or Google Sheets
Spreadsheet formulas only catch typos and bad shapes, never whether a mailbox is real. Here is how to clean a list in Excel or Google Sheets and then verify it for real.
Almost everyone keeps their email list in a spreadsheet at some point. The problem is that Excel and Google Sheets were never built to tell you whether an address actually receives mail. They can tidy your data and flag obvious nonsense, but they cannot knock on the mail server and ask "does this mailbox exist?" That gap is where most people get burned. This guide walks through what a spreadsheet can genuinely check on its own, why that is only the first 20 percent of the job, and how to get a real verdict on each address without leaving your sheet behind.
What a spreadsheet formula can and cannot do
A formula in Excel or Google Sheets is pattern matching. It reads the text in a cell and decides whether the shape looks like an email. That catches a real category of mistakes: missing @ signs, double dots, trailing spaces, an obvious typo like .con instead of .com. Useful, but limited.
What a formula cannot do is connect to the internet, look up the domain's mail servers, or ask whether the inbox is real. The address [email protected] passes every syntax check ever written. It is still dead. So is a perfectly formatted address at a domain that stopped existing two years ago, or one that points at a mailbox that was deleted last month. The formula sees clean text and says fine. The mail server would say no such user.
The formula layer: clean up before you verify
Do this first anyway. Stripping junk locally is free and it shrinks the list you later send for real verification. Here are the moves worth keeping.
Trim and lowercase
Hidden spaces break matching and create fake duplicates. In Google Sheets use =TRIM(LOWER(A2)). In Excel the same =TRIM(LOWER(A2)) works. Copy the result back as values so you are not stacking live formulas across thousands of rows.
A basic syntax check
A simple presence-of-@ and dot-after-@ test removes the worst offenders. In Google Sheets: =IF(REGEXMATCH(A2,"^[^@\s]+@[^@\s]+\.[^@\s]+$"),"ok","bad"). Excel 365 has REGEXTEST for the same idea. Treat the result as a rough filter, not a verdict. It will happily pass dead addresses and occasionally reject valid but unusual ones.
Remove duplicates
Google Sheets: Data, then Data cleanup, then Remove duplicates. Excel: Data tab, Remove Duplicates. Do this after trimming and lowercasing or you will miss "[email protected]" and "[email protected] " as the same person.
Where formulas run out of road
Once the text is clean, the questions that actually decide whether your email lands are all network questions. No spreadsheet function can answer them.
- Does the domain accept mail at all? This needs a live MX record lookup.
- Does the specific mailbox exist? This needs an SMTP conversation with the receiving server.
- Is it a catch-all domain? Some servers accept every address whether or not it exists, which fools naive checkers. Probing these properly is its own skill. See catch-all emails.
- Is it a disposable or role address? info@, support@, and ten-minute-mail domains need their own reference lists.
Microsoft 365 and Google Workspace make this harder still. They deliberately mask whether a mailbox exists to slow down spammers, so a crude SMTP check returns "accepted" for addresses that will bounce. Getting an honest answer from those providers takes a sending reputation and provider-specific logic, which is exactly what a dedicated verifier maintains.
How to do real verification from your sheet
You do not have to abandon the spreadsheet. You bridge it to a service that does the network part, then bring the results back in. Two practical paths.
- Export, verify, re-import (simplest). Save your sheet as a CSV, upload it to a verifier, download the scored file, and paste the status column back. No code, works for any list size, and you get a clear valid / invalid / risky / unknown verdict per row. You can run a sample through the free email verifier first to see the output format before committing the whole list.
- Call an API from the sheet (live). Google Sheets supports a custom function via Apps Script that calls a verification API per row. This keeps everything in one place and is handy for small or growing lists, but watch your rate limits and your credit usage if the sheet recalculates often.
What the result columns mean
| Status | What it means | What to do |
|---|---|---|
| Valid | Mailbox confirmed deliverable | Send |
| Invalid | Mailbox rejected or domain dead | Remove |
| Risky / catch-all | Domain accepts all, existence unconfirmed | Send carefully or hold back |
| Unknown | Server would not answer in time | Re-check later |
A sensible workflow
- Trim, lowercase, and de-duplicate in the sheet.
- Run the regex syntax filter to drop obvious garbage.
- Export the survivors and run them through real verification.
- Re-import the status column and remove everything marked invalid.
- Decide your own rule for risky and catch-all rows based on how cautious your sending needs to be.
This keeps the free, fast work local and spends verification credits only on addresses that already passed the cheap checks. If you want the bigger picture on why each step matters, the complete guide to email verification covers the full pipeline, and reduce email bounce rate shows what this does to your numbers.
FAQ
Can I verify emails in Excel without any add-in?
You can clean and syntax-check them, which removes typos and malformed entries. You cannot confirm a mailbox is real, because that requires contacting the mail server over the network and Excel formulas cannot do that. For a real verdict you need an external service, reached by export-and-import or an API call.
Are the regex formulas in this article enough on their own?
No, and that is the main trap. They pass any address that simply looks correct, including dead mailboxes and typo domains that read fine to the eye. Use them as a cheap pre-filter before real verification, never as the final word on whether to send.
What is the safest way to handle a large list?
Clean it in the sheet, then bulk-upload a CSV to a verifier rather than calling an API row by row. Bulk processing is faster, cheaper per address, and avoids the rate-limit and recalculation headaches you get when thousands of live formula calls fire at once.