Email bounce checker

Find out if an address will bounce before you hit send. Enter it once and we ask its mail server about the mailbox at RCPT TO, with no account and no email to us.

One address. We talk to its mail server and close the line before any message is sent.

Enter an address to see whether a message to it would bounce.

The short version

  • Invalid means the mail server refused the mailbox. A message to it would hard-bounce, so take it off your list now.
  • Valid means the server accepted the mailbox at RCPT TO, the exact step where hard bounces start.
  • Catch-all means the domain says yes to every address, so it can still bounce after delivery. Send to these in small batches.
  • Unknown means the server would not answer this time. It's often greylisting; run the check again in a few minutes.

How the bounce check reads a mail server

A bounce is a refusal from the receiving server. So the only reliable way to predict one is to ask that server first. ZapBounce runs its own SMTP check on port 25, the same conversation your mail would have, and stops before any message is sent.

First we read the domain's MX record to find its mail server. If there is none, the address can't receive mail and the result is invalid. Then we connect, say EHLO, give a sender, and ask about your address with RCPT TO. That reply decides the result.

We also send one random address at the same domain. If the server accepts that too, it accepts everything, and you get catch-all instead of a valid that means nothing.

Server replyWhat it meansResult you see
250 to your address, 550 to the random oneThe mailbox exists and the server tells real from fakevalid
550 or 551No such user; a send would hard-bounceinvalid
250 to both addressesThe domain accepts every mailboxcatch_all
4xx, 252 or no replyGreylisting, a throttle or an anti-probe replyunknown

Reply codes as defined in RFC 5321. The random-address probe runs once per domain.

Why bounces cost more than one lost email

Every hard bounce tells Gmail and Microsoft that you mail addresses you never checked. Keep your bounce rate under 2% and most senders stay out of trouble. Past 5%, providers start filtering or pausing your sends, and your good addresses pay for the dead ones.

A single check here settles one address. For a list, the bulk verifier runs the same check on every row and returns your original columns with a result beside each one. It's 1,000 checks for $5, and every account gets 100 free credits a month with no card.

Already bounced? The bounce rate calculator shows where your last campaign landed, and this answer covers why a checked address can still come back.

Bounce checker questions

How do I check if an email will bounce without sending it?

Ask the receiving mail server. A bounce checker looks up the domain's MX record, opens an SMTP session on port 25 and sends RCPT TO for the address. A 250 reply means the mailbox exists; a 550 reply means a real message would hard-bounce. The session closes before DATA, so nothing is delivered.

Does a bounce checker send an email to the address?

No. ZapBounce ends the SMTP conversation after RCPT TO and before DATA, which is the step where a message body would start. The person at the address sees nothing, and no message sits in any inbox.

Why can a valid address still bounce later?

Because a mailbox can fill up, be closed or start refusing mail after the check. A catch-all domain also says yes to every address at RCPT TO and may bounce the message later. Check lists within a few weeks of sending, not months before.

What is the difference between a hard bounce and a soft bounce?

A hard bounce is permanent, usually a 5xx code such as 550 user unknown, and the address should be removed. A soft bounce is temporary, a 4xx code for a full mailbox or a busy server, and the send can be retried.

Can I check a whole list for bounces?

Yes. Upload a CSV, TXT or XLSX file to the bulk verifier and every address comes back with the same four results. Unknowns and duplicates are never billed, and credits never expire.

Check the whole list, not one address

Upload a file and get valid, invalid, catch-all or unknown for every row. Unknowns are never billed, and credits never expire.