Explainer · free checker

Check if email exists without sending a message

Paste an address below, and the checker asks the recipient’s mail server whether it would accept the mailbox, then hangs up before anything is sent. Further down: how that works, and what it can and can’t tell you for Gmail, Yahoo and Outlook addresses.

Updated October 9, 2026 · 7 min read

Checking if an email exists: syntax, MX, SMTP and catch-all, and the SMTP conversation without sending

Checks syntax, MX records and the mailbox itself over SMTP. No email is sent.

To check if an email exists, a verifier does what a sending mail server does, step by step, and stops right before the message would be handed over. The steps below are the ones the checker above runs, and the page is this a real email address? explains every field of a result. For the bigger picture, including what these checks can’t tell you, read our overview of email verification.

How to check if an email address exists and is valid

Step 1: Syntax

The address must follow the format rules: one @, a local part of up to 64 characters, a valid domain. The email address format guide lists the rules, and the email syntax checker tests them.

Step 2: The domain and its mail servers

A DNS query for the domain’s MX records returns the servers that receive its email. No MX record (and no A record) means nobody can receive mail there. Try the MX lookup.

Step 3: The SMTP handshake

The verifier connects to the preferred mail server (the lowest MX number) on port 25 and starts a normal delivery, but stops before the message:

S: 220 mx.example.com ESMTP
C: EHLO verifier.example
S: 250 mx.example.com
C: MAIL FROM:<check@verifier.example>
S: 250 OK
C: RCPT TO:<anna@example.com>
S: 250 OK                  ← mailbox exists
   (or: 550 5.1.1 User unknown  ← it does not)
C: QUIT

No DATA command is sent, so no email is delivered. SMTP defines this answer: when the server doesn’t know the mailbox, it returns a 550 reply to RCPT (RFC 5321, section 3.3). The protocol also has a VRFY command meant for asking about an address, but the same RFC lets servers disable it for security reasons (section 3.5.2), and a server that can’t verify in real time is told to answer 252 (section 3.5.3). That’s why verifiers rely on RCPT TO instead. What a 550 5.1.1 means in detail: 550 5.1.1 explained.

Step 4: Catch-all detection

Some servers answer 250 OK to every recipient. To spot them, the verifier also asks about a random address like x7q2k9z@example.com. If that is accepted too, the domain is catch-all, and a 250 for the real address proves nothing.

In the emailvalidation.io API this test runs on request, with catch_all=1 on paid plans from Small; the free checker on this page doesn’t run it. For domains we already know to be catch-all, the mailbox check is skipped and the address comes back as deliverable with the reason low_deliverability, which the free checker shows as Catch-all. More in catch-all email addresses.

What the result tells you

The checker above sorts every address into one of six results:

ResultWhat the mail server saidWhat to do
ValidIt accepts this mailboxSend
Catch-allIt accepts every address on the domain, so the mailbox can’t be confirmedSend with care
RiskyThe mailbox exists but is fullCheck again later
Do not mailThe address belongs to a disposable inbox serviceDon’t send, or ask for another address
InvalidThe mailbox or the domain doesn’t exist, or the address is malformedDon’t send: it would hard bounce
UnknownNo clear answer (timeout, greylisting, server unreachable)Check again later

A “valid” answer is what the server said at the moment of the check. A server can accept a recipient during the conversation and still bounce the message later, and no check made without sending can see that.

Checking Gmail addresses

Gmail rejects unknown recipients with a clear code. Google’s list of Gmail SMTP errors (checked October 9, 2026) includes:

ReplyGmail’s message
550 5.1.1“The email account that you tried to reach does not exist.”
550 5.2.1“The email account that you tried to reach is inactive.”
452 4.2.2“The recipient’s inbox is out of storage space.”

What a check can’t tell you for Gmail:

Checking Yahoo addresses

Yahoo’s SMTP error codes page (checked October 9, 2026) shows the bounce for an address that doesn’t exist: 554 delivery error: dd This user doesn't have a yahoo.com account. Yahoo’s advice is not to retry, because delivery will never succeed, and to remove the address from your list.

What the page doesn’t say is at which step of the SMTP conversation that answer comes. So read a Yahoo result the way you’d read any other: it reflects what the server answered to RCPT TO. If the address is accepted at that point and the message bounces afterwards, a check can’t foresee it.

Yahoo also has a section on “excessive unknown recipients”: a server that sends to a large number of invalid recipients looks like an open relay or proxy to Yahoo, and Yahoo doesn’t accept mail from those. That is another reason not to probe addresses from your own sending server.

Checking Outlook.com and Microsoft 365 addresses

Microsoft runs two very different mail systems:

How to check if an email address is legit or suspicious

Whether an address exists and whether an email from it can be trusted are separate questions. A scammer can write from a real, working Gmail account, and a forged sender can use someone else’s real address. To check a suspicious email address:

  1. Read the domain letter by letter. Look for look-alike spellings: a 1 for an l, rn for m, or an added word such as -support or -billing.
  2. Check for free webmail claiming to be a company. Companies normally write from their own domain, not from a free mailbox.
  3. Check whether it’s a throwaway address with the disposable email checker.
  4. Look at the authentication results. The email header analyzer reads SPF, DKIM and DMARC from the message headers, and the DMARC checker shows whether the sender’s domain protects itself against spoofing.

The scam email checker combines these signals for a sender address. It shows signals, not a verdict.

Why you should not do this yourself

A verification service runs these checks from its own infrastructure and returns a clean result. To verify an email address for free, use the email checker on our homepage or the checker at the top of this page. For more than one address:

Stop bounces before they happen

Most hard bounces come from addresses that don’t exist. Email verification asks the receiving server about the mailbox without sending anything, so you can remove bad addresses before your next send.

Frequently asked questions

How can I check if an email address is valid?

Check three things: the address follows the format rules, its domain has mail servers (MX records), and the mail server accepts this exact mailbox. The checker at the top of this page runs all three and also flags disposable, role and mistyped addresses.

Can I check if an email exists without sending an email?

Yes. A verifier starts an SMTP conversation with the recipient’s mail server, names the address at the RCPT TO step and disconnects before the DATA command, so no message is delivered. The owner of the address sees nothing.

How do I check if an email address is legit or suspicious?

An address that exists isn’t necessarily trustworthy: scammers use real, working mailboxes. To judge an email you received, check the sender’s domain, look-alike spellings and the SPF, DKIM and DMARC results. The scam email checker shows those signals for a sender address.

Why is the result unknown or risky?

Unknown means the mail server gave no clear answer: it timed out, was unreachable or deferred the check (greylisting). Risky means the mailbox exists but is full, so mail to it bounces for now. Addresses on domains that accept every address are shown as Catch-all, and disposable inboxes as Do not mail. The API returns catch-all addresses as deliverable with the reason low_deliverability.

Is it legal to verify email addresses?

Checking whether an address can receive mail does not send anything to the person. You still need a legal basis to process the addresses you hold, for example under the GDPR.

Email validation API

Validate emails in your app

emailvalidation.io checks syntax, MX records and the mailbox over SMTP, flags disposable, role and free addresses and returns a quality score, in one request.

/v1/info Email validation API Read the documentation

100 free validations every month. No credit card required.

GET https://api.emailvalidation.io/v1/info?email=support@emailvalidation.io

{
  "email": "support@emailvalidation.io",
  "user": "support",
  "tag": "",
  "domain": "emailvalidation.io",
  "format_valid": true,
  "mx_found": true,
  "smtp_check": true,
  "catch_all": null,
  "role": true,
  "disposable": false,
  "free": false,
  "score": 0.64,
  "state": "deliverable",
  "reason": "low_quality",
  "did_you_mean": "",
  "catch_all_resolution": null,
  "bounce_probability": null,
  "status": "valid",
  "sub_status": "role_based",
  "explanation": "The mailbox exists, but it is a role address (such as info@ or support@), usually read by a team rather than one person.",
  "recommended_action": "send_with_caution"
}

Keep reading

Start using our email validation software today!

Get 100 validations per month for free