How to check if an email address is valid

Start with syntax. The address needs a local part, one @ and a domain, in the shape the RFC allows. A syntax check catches typos like jane@gmial or a missing @. It proves nothing about whether anyone reads the inbox.

Next, look up the domain's MX record, which names the servers that take mail for that domain. No MX record and no A record fallback means the address can't receive mail at all. You can run that lookup yourself with the MX lookup tool.

Then ask the mail server, the step that decides it. A verifier connects on port 25, says EHLO, gives a MAIL FROM address and offers your address at RCPT TO. A 250 reply means the server accepts that recipient, and a 550 means no such user. The verifier quits before DATA, so no email goes out.

Finally, test for catch-all. Ask the same server about an address nobody could own, something like q7x4zz-nobody at that domain. If that also gets a 250, the domain accepts everything and your first 250 carried no information. About 28% of a 10,000-address B2B benchmark sat on domains like that.

Running the SMTP steps by hand is slow and often fails before it starts. Port 25 is blocked by most home internet providers and many cloud hosts, and Gmail and Microsoft 365 block probes from cloud IPs. Paste the address into our free email verifier instead. ZapBounce runs all four steps and returns valid, invalid, catch_all or unknown, and a whole list runs the same way in bulk.

Can I check if an email is valid without sending an email?

Yes. An SMTP check asks the receiving server about the mailbox at the RCPT TO step and closes the connection before DATA. No message is sent, and the owner of the address sees nothing.

Is a regex enough to check an email address?

A regex only confirms the address is shaped correctly. It can't tell a live mailbox from a closed one, so it catches typos and misses every dead address on a real domain. The MX and SMTP steps cover the rest.

What does a 250 response mean when checking an email?

A 250 at RCPT TO means the mail server accepted that recipient. On a catch-all domain the server returns 250 for every address, so a verifier has to probe a random address before trusting it.

How do I check a whole list of emails at once?

Upload the list as a CSV, TXT or XLSX file to a bulk verifier. ZapBounce charges $5 for 1,000 addresses and $25 for 10,000. Credits never expire, and duplicates and unknowns are never billed.

Check this against your own list

100 free credits a month, no card. Unknown results come back labeled and are never billed.