A hard bounce is a permanent delivery failure, shown by a reply code starting with 5, such as 550 or 5.1.1 for a mailbox that does not exist. A soft bounce is temporary, shown by a code starting with 4, such as a busy server. Remove hard-bounced addresses; let soft bounces retry.
| Hard bounce | Soft bounce | |
|---|---|---|
| First digit of the code | 5 (permanent) | 4 (temporary) |
| Typical cause | Address or domain does not exist | Server busy, mailbox over quota, greylisting |
| Will resending help? | No, not in the same form | Often, after a wait |
| What to do | Stop mailing that address | Retry; stop if it keeps failing |
Updated
Every failed email comes back with a short code from the receiving server. The first digit tells you whether the problem is permanent or temporary, and the extended code after it narrows down why. Paste a bounce message into the classifier to pick out the codes and get a plain reading, then use the tables to check the meaning yourself.
Paste the bounce message: 550 5.1.1 The email account that you tried to reach does not exist.
Hard bounce: a permanent failure. Stop mailing this address.
The meanings below are the standard texts. Codes starting with 4 are transient, codes starting with 5 are permanent.
| Code | RFC 5321 meaning | Bounce type |
|---|---|---|
| 421 | Service not available, closing transmission channel | Soft |
| 450 | Requested mail action not taken: mailbox unavailable | Soft |
| 451 | Requested action aborted: local error in processing | Soft |
| 452 | Requested action not taken: insufficient system storage | Soft |
| 550 | Requested action not taken: mailbox unavailable | Hard |
| 551 | User not local; please try <forward-path> | Hard |
| 552 | Requested mail action aborted: exceeded storage allocation | Hard |
| 553 | Requested action not taken: mailbox name not allowed | Hard |
| 554 | Transaction failed | Hard |
The first digit is the class (2 success, 4 persistent transient failure, 5 permanent failure); the rest says what went wrong.
| Code | Meaning |
|---|---|
| X.1.1 | Bad destination mailbox address: the mailbox does not exist |
| X.1.2 | Bad destination system address: the domain does not exist or cannot accept mail |
| X.2.1 | Mailbox disabled, not accepting messages |
| X.2.2 | Mailbox full |
| X.3.4 | Message too big for system |
| X.4.4 | Unable to route |
| X.7.1 | Delivery not authorized, message refused |
An example we wrote. The Status line carries the dotted code and the Diagnostic-Code line carries the server's reply.
Final-Recipient: rfc822; [email protected]
Action: failed
Status: 5.1.1
Diagnostic-Code: smtp; 550 5.1.1 No such user here
SMTP, the protocol mail servers use to talk to each other, answers each step with a three-digit reply code defined in RFC 5321. Many servers add an enhanced status code from RFC 3463 in the form class.subject.detail, such as 5.1.1.
Both share the same first digit rule. When they appear together, the dotted code is the more specific of the two.
A hard bounce is a fact about the address, so the right response is to suppress it in your email tool. A soft bounce is a fact about that moment, so the right response is patience.
Signup forms that confirm the address before adding it, like double opt-in, stop most hard bounces before they start.
Most often a typo in the address, a mailbox that was closed, or a domain that no longer receives mail. The receiving server answers with a code starting with 5, which RFC 3463 calls a permanent failure.
RFC 5321 suggests waiting at least 30 minutes between attempts and giving up after at least four to five days. Your email service may use its own schedule.
Repeatedly sending to addresses that do not exist is a common sign of an old or bought list, so it can count against you with inbox providers. Removing hard bounces quickly is the simplest fix.
550 means the mailbox is unavailable and the action was not taken, a permanent reply. Some servers also use it for policy blocks, so read the dotted code and message text before deciding the address is dead.
Not after one failure. If the same address soft-bounces on several separate sends, treat it like a hard bounce and stop mailing it.
Related: Double opt-in, Google Postmaster Tools, Email list syntax checker, Email header analyzer, SPF, DKIM and DMARC.
Start for free or see all free tools. We.Inc is free to start, with no card needed. AI building is on paid plans from $20 a month.
We.Inc is an AI-powered website builder you can resell under your own brand. Launch a branded client dashboard, bill on Stripe Connect, and deliver AI-generated websites in minutes. White-label plans start at $99 a month for 25 client sites, with a 7-day free trial and no per-site fees.