Free email checker
Check an email address.
5 checks, no account, no card. You see exactly what the API returns: the same status, the same recommendation, the same reason codes. Nothing is saved up for people who sign up.
Your free checks are counted per visitor over a rolling 24 hours. Enforcing that means storing a hashed identifier for your browser and network. The privacy policy says exactly what, and for how long.
About this checker
This checker is the live service.
Nothing gets delivered
The probe names the recipient and resets the session. There is no DATA stage in it, so nothing can land in the mailbox you are checking.
The same service
This page calls the verification service the API calls. No softened demo answers, no separate happy path.
The whole result
Status, recommendation, stage-by-stage evidence and reason codes, all in front of you before you create anything.
Reading the answer
What each status means, and what to do about it.
Action: allow
The domain routes mail, the receiving server accepted the recipient, and no risk signal came back with it. Send to this one, or let the signup through.
Action: challenge
It was accepted, or it would be, and that doesn’t tell you much. The domain may take every recipient it’s offered, the address may belong to a burner provider, or it may be a shared inbox like info@ rather than a person. Slow the flow down here. Don’t block it.
Action: reject
Something failed outright: the address is malformed, the domain doesn’t exist, or the domain has published that it accepts no mail whatsoever. There’s no version of this one that works, so take it off the list.
Action: allow_with_email_confirmation
The provider timed out, greylisted the probe, throttled it, or simply won’t reveal whether the mailbox is there. Nothing has been proved either way. Let the person through behind a confirmation email, which is the only thing that ever really proves somebody holds a mailbox.
How the answer is produced
Five stages, in order, stopping the moment it is settled.
There is no point asking a mail server about a domain that does not exist, and no point looking up a domain in an address that was never valid. Each stage runs only if the one before it left the question open.
- 01
Syntax
Structure, local part, total length, domain literals, and whether delivery would need
SMTPUTF8. Nothing here needs a network connection, so it costs nothing to be strict. - 02
Domain
A DNS query asks whether the domain exists and whether it is healthy.
NXDOMAINends the check right here — there is nothing further to ask. - 03
Mail routing
MX records, null MX, implicit MX, targets that don’t resolve, and configurations that contradict themselves. No mail exchanger means nothing can ever arrive.
- 04
Mailbox probe
Connect, greet,
MAIL FROM,RCPT TO— and thenRSET,QUIT, and a polite goodbye, well before anything could be sent. - 05
Classification
Everything gathered so far turns into a status, a recommended action, and the reason codes that show how we got there.
What is checked
The signals behind a single result.
Address
Is it well formed at all? Local-part rules, length limits, international addresses, and whether the domain is a near-miss of a well-known one.
Domain
Does the domain exist, and where does its mail actually go? MX records, null MX, mail exchangers that don’t resolve, routing that contradicts itself.
Mailbox and risk
Will the server take this recipient? Plus everything that makes a yes mean less: catch-all domains, burner providers, shared inboxes, greylisting, throttling.
More than one address
Two other ways in, same answers.
Checker questions
About this checker.
How many free checks do I get?
Five, per visitor, over a rolling 24 hours. The count lives on the server; the number under the box is just showing you what the server says. Checking the same address twice in one session doesn’t cost you a second one.
Is the result different with an account?
No, and that’s deliberate. Same status, same recommended action, same evidence, same reason codes. What an account adds is volume, bulk uploads, the API, and a record of what you’ve already checked.
Why did a check take several seconds?
Because a mail server somewhere else was involved, and it answered in its own time. When the deeper evidence has to be queued, the result comes back as pending with a retry interval, and this page keeps telling you where it has got to instead of spinning at you silently.
What if I think a result is wrong?
Send us the address and the reason codes next to it. Every result carries them, and disposable-domain signals record which dataset version produced them, so a false positive can be traced to what caused it instead of argued about.
Why was I asked to complete a challenge?
Because the pattern looked automated — a run of addresses at the same domain, usually. Your first check never asks for one. Someone checking an address stays unbothered; someone working through a company’s mailboxes does not.
When five isn’t enough
Verify the rest of the list.
Create a free account, upload a file or call the API, and get exactly the answers you have just seen.