How to check if an email address is valid, without sending an email
An address can look perfect and still bounce. These are the checks that tell you, in order, from the quick ones you can do by eye to the mailbox check a verifier runs.
Check the format and the domain spelling, look up the domain's MX records to confirm it can receive mail, then run a mailbox (SMTP) check with an email verifier. The verifier asks the receiving server whether the mailbox exists and stops before any message is sent. Results come back as valid, invalid, catch-all or unknown.
Free tool: check an address or a list right now with the EmailNa email checker. It catches typos, throwaway domains and domains with no mail server.
Step 1: Check the format
A valid address has exactly one @, a name part before it and a domain after it, with no spaces. The part before the @ can be up to 64 characters, and the whole address can be up to 254. Letters, numbers, dots, hyphens and underscores are the safe characters (plus signs are valid, but some forms wrongly reject them).
Quick red flags: two dots in a row (john..smith@), a dot right before the @, a comma instead of a dot, or a space.
Step 2: Check the domain for typos
A huge share of bad addresses are near-misses of popular domains:
| Typed | Meant |
|---|---|
| gmial.com, gamil.com, gmail.co | gmail.com |
| yaho.com, yahooo.com | yahoo.com |
| hotmial.com, hotmail.co | hotmail.com |
| outlok.com | outlook.com |
Step 3: Look up the MX records
MX records tell the internet which server accepts mail for a domain. Open a DNS lookup tool, such as Google's free Dig tool, enter the domain (the part after the @), and choose MX.
- MX records found: the domain can receive mail. Go to step 4.
- No MX records: the address will almost certainly bounce.
Step 4: Check the mailbox (SMTP check)
This is the only step that tests the specific person. A verifier connects to the domain's mail server and starts a delivery: it says who the mail is from and who it is for. The server answers with a code that shows whether it would accept mail for that mailbox. The verifier then hangs up before sending anything.
You can do this by hand with a command-line tool, but it rarely works from a home or office connection: most internet providers block the mail port (25), and big mail servers distrust unknown computers. That is why people use a verifier for this step.
Step 5: Read the result
| Result | What it means | Send to it? |
|---|---|---|
| Valid / Passed | The server accepted the mailbox | Yes |
| Invalid | Mailbox or domain does not exist, or the address is broken | No, remove it |
| Catch-all / Accept-all | The server accepts every address, so this one cannot be confirmed | Carefully, in small batches |
| Unknown | The server did not give a clear answer (timeout, greylisting) | Re-check later |
| Disposable | A throwaway inbox that will soon stop working | No |
| Role | A shared inbox like info@ or sales@ | Depends; more complaints are likely |
More detail: what each verification status means.
What the mail server's answer means
During the mailbox check, the server replies with a three-digit code. The first digit tells you almost everything:
| Code | Meaning | Result |
|---|---|---|
| 250 | "OK, I will accept mail for this address." | Valid, unless the domain accepts everything (catch-all) |
| 4xx (421, 450, 451, 452) | "Not right now, try later." Often greylisting or rate limits. | Unknown: re-check later |
| 550 | "No such user here." | Invalid: remove it |
| 551–554 | Other permanent refusals (bad address, policy block) | Usually invalid |
No email is ever delivered: the verifier stops before the message part and says goodbye.
Why some addresses cannot be confirmed
- Catch-all domains say yes to every address, even made-up ones. Verifiers detect this by testing a random address; if it is also accepted, the real one cannot be confirmed.
- Greylisting makes servers refuse unknown senders the first time and accept them on a retry. A verifier sees "try later" and reports Unknown.
- Some large providers accept every address at this step, or limit how many checks they answer, to stop people harvesting addresses. Their results are less certain.
- Null MX: a domain can publish a special record that says it never accepts email. Every address on it is invalid.
The most reliable confirmation of all is still double opt-in: the person clicks a link in a confirmation email.
Email verification myths
| Myth | Reality |
|---|---|
| "Verified means it reaches the inbox." | Verification removes bad addresses. Inbox placement also depends on your reputation, setup and content. |
| "Verify once and you are done." | Lists decay as people change jobs and abandon inboxes. Re-check before each big send. |
| "Catch-all means invalid." | Many catch-all addresses are real. Send to them carefully rather than deleting them. |
| "Role addresses are always bad." | info@ and sales@ can be real. They are riskier, not automatically invalid. |
| "Just send a test email to check." | Sending to unknown addresses causes the very bounces you want to avoid. |
Questions people ask
- Is a "valid" result a guarantee?
- No tool can promise 100%. Mailboxes get closed, and some servers say yes to everything. Valid means the server accepted the mailbox at the time of the check, which is why lists should be checked shortly before you send.
- Can I check if a Gmail address is valid?
- Verifiers can check Gmail addresses. Note that Gmail ignores dots and anything after a plus sign, so [email protected] goes to [email protected].
- Why do some checkers say "unknown"?
- The receiving server delayed or refused to answer, often on purpose to slow down spammers. Re-checking a few hours later usually resolves it.