Validating your email list before a send makes sense. Paying for it doesn't always — especially when the list is small, or you're still testing the channel. So: can you get by with free tools?
Short answer: yes, with caveats. Below is a concrete breakdown of what's available for free, what each option actually checks, and where it stops being useful.
Free tiers from paid services
Most commercial email verifiers offer a permanent free allowance, not a 7-day trial. Here's what the market looks like.
uChecker — 30 free checks
Sign up and 30 credits land in your account. Full verification: syntax, MX, SMTP, catch-all detection, disposable address detection. Mail.ru gets its own dedicated check, because it responds "yes" to any address by default and standard SMTP probing is useless against it. Results come back as three lists: Good, Bad, Risk. Thirty addresses is enough to read the quality of a larger list from a sample.
Hunter.io — 25 checks per month
The free plan gives 25 verifications a month. Hunter is primarily an email finder; verification is secondary. It checks format, MX records, and SMTP. No bulk upload on the free plan, only one-by-one through the interface or API. At that rate, verifying 500 addresses takes 20 months.
NeverBounce — 1,000-check trial
One-time: register and get 1,000 free checks. After that, paid only. Bulk upload is available. Verification quality is solid, but once the trial is gone the entry-level paid package starts at $8 per 1,000 addresses.
Others: ZeroBounce offers 100 free checks per month; Bouncer gives roughly 100 on registration. Limits change, so check the current terms on each site.
Open-source options
If you want free checks with no quota, self-hosted libraries are an option. But you need to know what you're actually getting.
email-validator (npm)
JavaScript library. Checks syntax against RFC 5322, normalizes addresses (strips Gmail dots, lowercases).
What it skips: no MX lookup, no SMTP probe. An address like user@nonexistent-domain.com passes if the format is correct.
py-email-validator
Python library. Syntax check plus DNS lookup (MX records). It goes a step further: it will catch a domain that accepts no mail at all.
What it skips: no SMTP verification. A domain can exist, MX records can be present, and the specific mailbox still won't. The library can't see that.
You can write SMTP verification yourself. Technically it's straightforward: open a connection on port 25, send RCPT TO, read the server response. In practice it breaks down fast:
- •Your IP ends up on blocklists after a few hundred requests
- •Gmail and Outlook reject SMTP probes from unfamiliar IPs
- •Catch-all domains, Mail.ru included, say yes to every address
- •You need IP rotation, warm-up, timeout handling, and greylisting logic
Where free tools fall short
Three recurring problems:
Volume
25 to 30 free checks is a sample, not a full verification pass. To verify 10,000 addresses you either pay or spend years collecting free credits. NeverBounce's 1,000-check trial is the exception, but it's one-time only.
Accuracy
Open-source libraries get you syntax and DNS. That catches maybe 20 to 30% of the bad addresses. The remaining 70% are mailboxes that have been deleted, filled up, or turned into spam traps. Without SMTP verification you can't find them.
Speed
Free API plans throttle requests. Hunter allows 1 to 2 per second; ZeroBounce is similar. Bulk upload is usually a paid feature. Even 200 addresses checked one at a time is 40 minutes of manual copy-pasting.
Comparison: what you get for free
uChecker
30 checksFull check including Mail.ru
Hunter.io
25 / monthSingle address only
NeverBounce
1,000 (once)Trial only, then paid
email-validator (npm)
UnlimitedSyntax only
py-email-validator
UnlimitedSyntax + DNS
When free is enough
List under 50 addresses
30 uChecker credits plus 25 Hunter covers it. You can check the entire list across two registrations.
Syntax validation only
A signup form where typos are the main concern. email-validator (npm) works fine here: embed it on the frontend and it catches bad formatting on the spot.
Spot-checking a larger list
Pull 30 random addresses from a list of 5,000. If 10 out of 30 come back invalid, the list is dirty and you know you need to clean all of it.
Testing before you commit
Not sure whether you need a verifier at all. The free tier is your proof of concept.
When you need a paid plan
List over 500 addresses
Free allowances don't cover it. Even NeverBounce's trial tops out at 1,000, and that's one-time. Any regular verification cadence needs a paid plan.
Commercial campaigns
If the send is tied to revenue, saving money on verification is a bad trade. One spam-folder landing after a reputation hit can undo months of domain warm-up.
Bulk upload
Upload a CSV with 10,000 rows and get results back in five minutes. Free plans rarely offer this.
Heavy Mail.ru or catch-all domains
Without dedicated catch-all handling, verification returns 100% valid on addresses that don't exist. Open-source libraries have no answer for this.
Don't build your own SMTP validator
Unless you're ready to manage an IP pool, set up rotation, handle greylisting, and monitor blocklists, a homegrown SMTP checker creates more problems than it solves. The first 200 checks go fine. By address 2,000 your IP is blocked.
Bottom line
Free email validation tools exist and they work. Each has a ceiling. Open-source libraries give you syntax and DNS, which catches maybe 20 to 30% of bad addresses. Free service tiers give you full verification, but only for 25 to 30 addresses — a sample, not a real list clean.
The practical approach: use free allowances to read your list quality. If the sample looks bad, pay for a full clean. The cost of verification is small compared to the cost of a damaged sender reputation.
Start with 30 free checks
Sign up for uChecker, upload a sample from your list, and see what comes back. Full verification: SMTP, catch-all, disposable addresses, dedicated Mail.ru check. No card, no subscription.
Try it free