Email Verification Accuracy: What 99% Claims Actually Mean and How to Test Any Provider
Email Verification Accuracy: What 99% Claims Actually Mean and How to Test Any Provider
Every verification service advertises an accuracy number, and almost nobody buying verification knows what it measures or how to check it. Accuracy is not one number: it is precision, recall, and unknown rate pulling against each other, and a headline percentage can be gamed by dumping hard cases into the unknown bucket or testing against easy lists. This guide gives you the math in sender terms, a ground-truth test method built from your own send history, and a working script that scores any provider.
3-8%
How much verification results drift when the same addresses are re-tested 30 days later, based on published retest methodology. Mailboxes fill, domains expire, employees leave. Accuracy is a snapshot, not a permanent property, which is why re-verification cadence matters as much as provider choice.
Quick Answer
What Does Email Verification Accuracy Actually Measure?
A meaningful accuracy claim measures the share of addresses a verifier classified correctly against known ground truth, but the headline number hides three separate metrics: precision (when the tool says passed, how often the address really accepts mail; low precision means bounces from addresses marked safe), recall (of the truly valid addresses, how many the tool confirmed; low recall means deliverable contacts thrown away), and unknown rate (the share the tool refused to classify; a high unknown rate lets a provider claim high accuracy on the small remainder it did classify). To test any provider, build a ground-truth list from your own send history (recent delivered addresses as known-good, recent hard bounces as known-bad), run it through the service, and score all three metrics. Accuracy also decays: retest studies show 3-8 percent result drift within 30 days, so a verification result is a timestamped snapshot rather than a permanent fact.
Three Ways Accuracy Claims Get Gamed
Accuracy marketing is not usually lying; it is selective measurement. Three techniques produce a big headline number without a correspondingly good tool:
🚫
The Unknown Dump
Classify every hard case (catch-all, greylisted, slow servers) as unknown, then compute accuracy only on the remainder. A tool can hit 99 percent on the 75 percent of a list it deigned to classify while leaving you to guess on the rest.
📊
The Easy Test Set
Benchmark against fresh Gmail and Yahoo addresses, where verification is nearly trivial. Real lists contain aged B2B domains, catch-alls, and international mail servers, which is exactly where accuracy diverges between providers.
🎲
The Catch-All Coin Flip
Mark every address at a catch-all domain as valid. The domain accepts everything, so the guess never fails at verification time; it fails weeks later as delayed bounces and dead engagement on your sending domain.
Never compare two providers by their homepage numbers. Compare them by running the same messy list through both and scoring the disagreements.
Precision, Recall, and Unknown Rate in Sender Terms
The three metrics map directly onto sender pain. Precision failures bounce: the tool said passed, you sent, the mail came back 550 and your reputation absorbed the hit. Recall failures cost revenue silently: the tool said failed on a live mailbox and a real contact left your list forever. Unknown inflation costs decisions: the tool handed the hard third of your list back to you unclassified.
Metric
Formula
What Failure Costs You
Precision
TP / (TP + FP)
Bounces from addresses marked safe; direct reputation damage
Recall
TP / (TP + FN)
Live contacts deleted as invalid; silent revenue loss
Unknown rate
Unknown / Total
Unclassified addresses you must risk-manage yourself
For most senders, precision on the passed bucket is the metric that protects the domain, and a low unknown rate is the metric that makes the tool useful. A provider with 97 percent precision and a 5 percent unknown rate beats one with 99 percent claimed accuracy and a 25 percent unknown rate on any real-world list, because the second tool made you do a quarter of the work yourself.
📊
Key Stat: Independent multi-provider benchmarks routinely find that unknown-heavy classification strategies score higher precision but materially lower recall, and that retry behavior on temporary failures separates providers: engines with 3 or more retry attempts resolve 5-7 percent more addresses to a definitive answer. Retry depth is an accuracy feature, not a speed feature.
Building a Ground-Truth Test List
You already own the best test data available: your send history. It reflects your actual audience mix (your domains, your geography, your B2B-to-consumer ratio), which no vendor benchmark does.
1
Pull known-good addresses
Export 300-500 addresses that were delivered AND engaged (opened or clicked) within the last 30 days. Engagement matters: delivery alone can include catch-all silent discards, but a click came from a live human at a live mailbox.
2
Pull known-bad addresses
Export 300-500 addresses that hard bounced with 550-class user-unknown responses in the last 30 days. Exclude soft bounces and policy rejections; those are not mailbox-existence failures and would poison the ground truth.
3
Keep the mix honest, then verify immediately
Preserve your real domain mix (do not filter to easy consumer domains), shuffle the two sets together, and run the test within days of pulling it. Ground truth ages at the same 3-8 percent monthly drift as everything else, so a stale test list scores the provider against yesterday's reality.
The Test Script
This script reads your ground-truth CSV (columns: email, truth where truth is good or bad), verifies each address through the real-time email verification API, and prints precision, recall, and unknown rate. Point it at any provider by swapping the endpoint and field mapping.
accuracy_test.py
import csv, os, time
import requests
API_KEY = os.environ["BEC_API_KEY"]
ENDPOINT ="https://api.bulkemailchecker.com/real-time/"
tp = fp = fn = tn = unknown = total =0withopen("ground_truth.csv", newline="") as fh:
for row in csv.DictReader(fh):
total +=1try:
r = requests.get(ENDPOINT, params={
"key": API_KEY, "email": row["email"]
}, timeout=30)
status = r.json().get("status", "unknown")
exceptException:
status ="unknown"if status =="unknown":
unknown +=1elif status =="passed"and row["truth"] =="good":
tp +=1elif status =="passed":
fp +=1# said valid, truth was bad: future bounceelif row["truth"] =="good":
fn +=1# said invalid, truth was good: lost contactelse:
tn +=1
time.sleep(0.2) # be polite to the API
classified = total - unknown
print(f"Precision: {tp / max(tp + fp, 1):.3f}")
print(f"Recall: {tp / max(tp + fn, 1):.3f}")
print(f"Unknown: {unknown / max(total, 1):.3f}")
print(f"Classified accuracy: {(tp + tn) / max(classified, 1):.3f}")
The response fields the script relies on (status, event, and the boolean flags) are documented in the email verification API documentation. Testing a provider that only offers file upload works the same way: run the CSV through their bulk email verification equivalent, download the results, and score the columns with the same math.
Reading the Results (What Good Looks Like)
✓
strong
Precision above 0.97, recall above 0.95, unknown under 8 percent on a mixed list. Trust the passed bucket for full-volume sending.
?
acceptable
Precision 0.94-0.97 or unknown 8-15 percent. Usable, but seed the first campaign after cleanup at reduced volume and watch the bounce report.
✗
weak
Precision under 0.94, recall under 0.90, or unknown above 20 percent. The tool is guessing, refusing, or both; keep shopping.
One refinement worth running: break the scores out by domain type. Compute the same three metrics separately for consumer domains, corporate domains, and known catch-all domains. Providers converge on consumer mail and diverge hard on the corporate and catch-all segments, which is where your test tells you something the homepage never will. A quick way to identify which of your test domains are catch-all before scoring is a pass through the domain verification tool.
💡
Pro Tip: The most revealing single check is the delayed-bounce audit: 30 days after cleaning a list, pull every address that bounced in campaigns since and look up what the verifier had said about it. Addresses that bounced despite a passed verdict are your real-world false positive rate, measured on your traffic, and it is the number that should drive whether you renew with a provider.
Why Results Drift and What It Means
Verification answers a question about a moment in time. Mailboxes fill, employees resign, domains lapse, and disposable providers mint new domains daily, so published retest methodology showing 3-8 percent classification drift over 30 days is not a flaw in any tool; it is the ground moving. Two practical consequences follow.
First, verification age belongs next to every address in your database (batch dates in the email verification dashboard make this easy to backfill), because a passed from January is a weaker signal in June. Second, re-verification cadence is an accuracy decision: quarterly re-verification caps accumulated drift at roughly the same few percent the best tools achieve on day one, while an annual cadence lets drift dwarf provider differences entirely. Choosing a great verifier and then running it once a year is buying a precision instrument and never calibrating it.
The Honest Truth About Unknowns
Some unknowns are legitimate. A catch-all domain accepts every RCPT TO probe, so no SMTP-based tool on earth can confirm the specific mailbox; an engine that keeps deferring past a greylisting retry budget has genuinely run out of road. The difference between an honest unknown and an unknown dump is the rate and the transparency: a strong engine returns unknown on the genuinely undecidable few percent and tells you why (event codes like is_catchall, visible on any address through the instant email verification check), while a weak one returns unknown on everything that required effort.
⚠
Warning: Be skeptical of any provider claiming 100 percent accuracy or zero unknowns. Catch-all domains and accept-then-discard servers make perfect classification physically impossible over SMTP. A tool with no unknown bucket has not solved the problem; it has hidden the coin flips inside the passed column, where they will surface as bounces on your domain instead of question marks on a report.
Frequently Asked Questions
What does email verification accuracy mean?
The share of addresses a verifier classifies correctly against known ground truth. A meaningful evaluation splits it into precision (when the tool says passed, how often it is right), recall (how many truly valid addresses it confirms), and unknown rate (how much of the list it refuses to classify). A single headline percentage hides all three.
How do I test an email verification service?
Build a ground-truth list from your own send history: 300-500 recently delivered-and-engaged addresses as known-good and 300-500 recent 550-class hard bounces as known-bad. Run the mixed list through the service and score precision, recall, and unknown rate. Test within days of pulling the data, since ground truth drifts like everything else.
Why do verification results change over time?
Because the underlying reality changes: mailboxes fill or close, employees leave, domains expire, and disposable services rotate domains. Retest studies show 3-8 percent classification drift within 30 days. A verification result is a timestamped snapshot, which is why quarterly re-verification matters as much as initial provider choice.
Is a high unknown rate bad?
Above roughly 15-20 percent on a normal mixed list, yes: it usually means the engine gives up on hard cases (catch-all, greylisting, slow servers) rather than retrying through them. A few percent of honest unknowns with explanatory event codes is the mark of a truthful engine, since some addresses are genuinely undecidable over SMTP.
Can any email verifier be 100 percent accurate?
No. Catch-all domains accept probes for every address, some servers accept mail and discard it silently, and greylisting can outlast any reasonable retry budget. Every honest provider carries a small undecidable segment. Claims of 100 percent accuracy signal marketing over measurement.
What accuracy should I expect from a good provider?
On a realistic mixed list: precision above 0.97 on the passed bucket, recall above 0.95, and an unknown rate in the single digits. Verify it yourself with the ground-truth method rather than taking the homepage number, and confirm it over time with the 30-day delayed-bounce audit against addresses the tool marked passed.
The Bottom Line
Accuracy claims are the least useful information on any verification homepage, not because they are false but because they are unfalsifiable as presented. The falsifiable version takes an afternoon: your own send history as ground truth, one script, three numbers. Precision protects your domain, recall protects your revenue, and the unknown rate tells you how much of the job the tool actually did.
Run the test before committing to any provider, re-run the delayed-bounce audit 30 days after your first cleanup, and let your own numbers, on your own list, make the decision.
✅
Start the Test Today: Try a handful of your ground-truth addresses on the free email verification tool to see the response structure, then run the full scored test with the script above using pay-as-you-go verification credits; a 1,000-address benchmark costs about a dollar and settles the accuracy question with your own data.
99.7% Accuracy Guarantee
Stop Bouncing. Start Converting.
Millions of emails verified daily. Industry-leading SMTP validation engine.