Skip to content

How to Verify a List of Email Addresses for Free (Before You Send)

Guide· 8 min read
How to Verify a List of Email Addresses for Free (Before You Send)

Key takeaways

  • "Verified" never means "guaranteed to be delivered". Checks catch bad formats, dead domains and known junk. Only sending shows whether a real inbox accepts your message.
  • You can run the useful checks for free: a short Python script covers format and mail-server checks, and free tiers of online tools cover small lists.
  • The safest final test is a small first send. Watch bounces, remove them at once, and only then send the rest.
  • Keep complaints low. Google tells bulk senders to stay under a spam rate of 0.10% and never reach 0.30%.

A list of email addresses collected from websites is always somewhat out of date. People leave, domains lapse, and addresses get typed wrongly. If you send to the whole list unchecked, the bounces and complaints hurt the reputation of your sending domain, and that affects every later email, not only this one.

This guide explains what verification checks, shows a free way to run the most useful ones yourself, and describes the small test send that catches what the checks cannot.

What verification can and cannot tell you

CheckWhat it catchesWhat it misses
Format (syntax)Missing @, spaces, illegal characters, obvious typos in structureA correctly formatted address for a mailbox that does not exist
Domain and mail server (MX record)Domains that do not exist or cannot receive emailA working domain where that particular mailbox is gone
Disposable and blocklist domainsThrowaway inboxes and known junk domainsNew disposable domains that are not on the list yet
Role address detectionShared addresses such as info@, sales@, admin@Whether anyone reads that inbox
Mailbox probe (SMTP)Sometimes, whether the server admits the mailbox existsServers that accept everything, block probing, or delay answers. It can also get your own IP flagged

No check proves delivery. A message is only accepted or rejected when you send it.

One more case to know about is the catch-all domain, which accepts mail for any address at all. A checker cannot tell a real mailbox from a made-up one there, so those addresses are best treated as uncertain.

Step 0: clean the list first

  • Trim spaces and change everything to lower case.
  • Remove exact duplicates.
  • Check for obvious typos in common domains, such as gmial.com or yaho.com.
  • Separate company addresses from free webmail addresses. They behave differently and are covered by different expectations in some countries.

Method 1: check format and mail servers with Python, for free

The open-source email-validator library checks the format and, if you ask it to, whether the domain can receive email. Install it with pip install email-validator, then run this on a CSV that has an email column:

import csv
from email_validator import validate_email, EmailNotValidError

good, bad = [], []

with open("leads.csv", newline="", encoding="utf-8") as f:
    for row in csv.DictReader(f):
        address = row["email"].strip().lower()
        try:
            # check_deliverability looks up the domain's mail servers
            result = validate_email(address, check_deliverability=True)
            row["email"] = result.normalized
            good.append(row)
        except EmailNotValidError as error:
            row["reason"] = str(error)
            bad.append(row)

print(f"{len(good)} passed, {len(bad)} failed")

Write the good and bad lists to two files and keep both. The failures are worth a look, because a typo in a good lead is often fixable.

This costs nothing and is safe to run on any list. It does not probe mailboxes, so it will not tell you that owner@ has left the company.

Method 2: free tiers of online verifiers

Many verification services offer a free allowance for small lists. Before you upload a customer or prospect list to one, check:

  • Privacy. You are handing a list of email addresses to a third party. Read what they do with it.
  • Limits. A free allowance is usually a small monthly or one-off number of checks.
  • How they treat catch-all domains. A good tool labels these as risky instead of calling them valid.
  • What the result labels mean. "Valid" from one tool may mean only that the domain has a mail server.

Method 3: send a small batch and read the bounces

  1. Take the addresses that passed and send the first message to a small slice, for example a tenth of the list.
  2. Wait a day. A message that cannot be delivered usually bounces quickly.
  3. Remove every address that bounced. Treat a hard bounce, where the address does not exist, as permanent.
  4. Look at the reason. Many bounces from one domain suggest that domain is blocking you, not that the addresses are all wrong.
  5. If the bounce rate is low, send the next slice. If it is high, stop and find out why before you send more.

Keep a suppression list of every bounced or unsubscribed address and check it before each send, so you never write to them again.

Sender basics that keep verified lists working

  • Send from a domain that has SPF, DKIM and DMARC set up.
  • Use a separate domain for cold outreach so problems there do not affect your main email.
  • Keep the spam complaint rate low. Google's sender guidelines say to keep it below 0.10% and avoid ever reaching 0.30%.
  • Make opting out easy and honour it straight away.

The rules on unsolicited email differ by country. See Is scraping Google Maps legal? for the overview, and take advice for your situation.

How LeadOutreach checks emails

When LeadOutreach finds an email on a business website, it runs basic checks before the lead is exported: the format, whether the domain has a mail server, and whether the domain is on a known-bad list. The export includes an Email Verified column that shows whether an address passed. This is the same class of check as Method 1. It does not probe mailboxes and cannot promise delivery, so the small test send in Method 3 is still worth doing.

Try it on your own search
Run a search and see the Email Verified column on your own leads.
Start 7-Day Free Trial (1,000 Leads) →

To find the addresses in the first place, see how to find an email address from any website.

Sources and further reading

Start Finding Verified Leads Today

Extract verified emails, phone numbers, and social links from Google Maps. Start with a 7-day Starter trial (1,000 leads included) and keep 100 free leads every month forever after. No credit card required.

Instant setup · No credit card required · 100 free leads/mo forever after

Related articles

FAQ

Frequently asked questions

Clean the list, check format and mail servers with a free library such as email-validator, or use the free allowance of an online verifier for a small list, then send a small first batch and remove anything that bounces.

No. Checks can rule out bad formats, dead domains and known junk, but only sending a message shows whether a real inbox accepts it. Treat any claim of guaranteed delivery with caution.

A domain configured to accept mail for any address at all. Checkers cannot tell whether a specific mailbox exists there, so addresses on catch-all domains are uncertain and are best sent in small batches.

Keep it as low as you can and remove hard bounces immediately. There is no single safe number, so watch the trend, and stop and investigate if bounces jump on a send.

They usually reach the business, and are often the only public contact for small companies. They are shared, so a message may be read by someone other than the person you meant. Decide by your goal and the rules that apply.