Hard bounce vs soft bounce: differences and what to do
You send a campaign to 10,000 addresses. An hour later the report shows: 347 hard bounces, 89 soft bounces. What do those numbers mean, and what do you actually do with each type?
A bounce means the message never reached the recipient. The receiving server rejected it and sent it back. The reason for that rejection determines the bounce type and your response.
Hard bounce: the address is permanently dead
A hard bounce is a permanent delivery failure. The recipient address no longer exists, and retrying changes nothing. The server says plainly: "This mailbox does not exist. Stop sending here."
Think of mailing a letter to an address where the building was demolished. The carrier returns it stamped "addressee not found." Hard bounces work exactly the same way.
Common causes of hard bounces
- ●The address does not exist. Someone left a company and the mailbox was deleted. Or a signup typo: gmial.com instead of gmail.com.
- ●The domain is gone. The company closed, the domain lapsed. No mail server left to accept anything.
- ●The server permanently blocked the sender. Some systems block a specific domain or IP and return hard bounces for every message from it.
- ●Invalid address format. Spaces, two @ signs, disallowed characters. These addresses cannot exist by RFC definition.
Based on our data, roughly 60% of hard bounces come from deleted mailboxes, 25% trace back to signup typos, and the remaining 15% split between dead domains and sender blocks.
What to do with a hard bounce
Remove it immediately, after the first occurrence. The address is dead, and each retry damages your sender reputation. Most ESPs handle this automatically — but check your settings, since some platforms only flag the address rather than removing it.
Soft bounce: a temporary problem
A soft bounce means the address exists, but delivery failed right now for a temporary reason. A retry may succeed. Physical mail analogy: the mailbox is jammed with newspapers, so the new envelope won't fit. The box exists — once cleared, the next delivery goes through fine.
Common causes of soft bounces
- ●Mailbox over quota. The recipient's storage limit is full. Hits corporate mailboxes with 1-2 GB caps most often.
- ●Server temporarily unavailable. Maintenance, overload, a restart. Usually resolves within an hour or two.
- ●Message too large. Some servers cap incoming size at 10-25 MB depending on config.
- ●Content blocked by a filter. The server accepted the connection but rejected the message body.
- ●DNS issues. A temporary fault in the recipient's DNS records means your server can't resolve where to route the message.
What to do with a soft bounce
Don't panic. Most ESPs retry delivery 2-3 times over 24-72 hours automatically. If all retries fail, the address moves to "problem" status.
There's a nuance worth knowing. An address that soft-bounces on every campaign is effectively dead. Three consecutive soft bounces from the same address? Treat it as a hard bounce and remove it. Some platforms (Mailchimp, Sendsay) automate this after 3-5 consecutive soft bounces.
Hard bounce vs soft bounce: a quick comparison
| Parameter | Hard bounce | Soft bounce |
|---|---|---|
| Nature | Permanent | Temporary |
| Retrying | Pointless | May help |
| Action | Remove immediately | Wait, retry 2-3 times |
| SMTP codes | 5xx (550, 551, 553) | 4xx (421, 450, 452) |
| Reputation risk | High | Moderate |
| Safe threshold | < 2% | < 5% (total bounce) |
Codes starting with 5 signal a permanent error; codes starting with 4 signal a temporary one. It's not absolute — exceptions exist — but it holds in around 90% of cases.
SMTP error codes: a marketer's reference
When a server rejects a message it returns a three-digit code. Here are the ones you'll see most often.
Hard bounce codes (5xx series)
550 Mailbox unavailable / User unknown. The most common code. The mailbox doesn't exist — deleted, never created, or permanently blocked. Every 550 means: remove that address.
551 User not local. The server doesn't handle this address. Usually a DNS misconfiguration or a typo in the domain portion.
552 Exceeded storage allocation. Ambiguous code: some servers return it as a soft bounce (full mailbox, still exists), others treat it as hard. If you see 552 three campaigns in a row, treat it as a hard bounce.
553 Mailbox name not allowed. Invalid format: disallowed characters, double dots, spaces. The address can't exist technically.
554 Transaction failed. Often spam-filter related. The server decided your message was suspicious and rejected the entire transaction — a sign of domain or IP reputation problems.
Soft bounce codes (4xx series)
421 Service not available. Recipient server temporarily down. Typically clears on its own within a few hours.
450 Mailbox busy. Rare. A retry 15-30 minutes later almost always succeeds.
451 Local error in processing. A fault on the receiving server's side. Retry later.
452 Insufficient system storage. Server-level disk space exhausted, not a single mailbox. Admins usually fix this quickly.
Quick rule: 5xx means remove the address. 4xx means wait. An address still returning 4xx after a week gets removed too.
Why you can't ignore bounce rate
Bounce rate directly affects your domain's sending reputation. Gmail and Yahoo track what percentage of your messages come back. When that number climbs, they start filtering all your mail — including messages to valid, active addresses.
Hard bounce above 2% per campaign is a problem. Above 5% is critical — Mailchimp and Sendsay can pause sending at that point. Mailchimp's benchmark puts the industry average below 1.3%. If yours is higher, the list needs work.
6 ways to reduce bounce rate
1. Validate before sending. Upload your list to an email verification service. It flags dead, risky, and clean addresses. A first-time validation typically removes 8-15% of a list; older lists can hit 30%.
2. Use double opt-in. Signup conversion drops 20-30%, but typo addresses never enter the list — the confirmation link simply never arrives.
3. Clean your list on a schedule. A list loses roughly 20-25% of valid addresses per year. Run verification every 3-6 months.
4. Remove hard bounces immediately. If you send via raw SMTP or a custom setup, configure bounce processing. Every ignored hard bounce chips away at domain reputation.
5. Set up SPF, DKIM, and DMARC. Without them, some servers reject your messages before checking the recipient address. Since 2024, Gmail and Yahoo require DMARC for senders above 5,000 messages per day.
6. Don't buy lists. A purchased list delivers 20-50% hard bounces, spam traps, and complaints from people who never subscribed. One import can destroy a domain reputation built over months.
How ESPs handle bounces automatically
Mailchimp marks an address as "cleaned" after the first hard bounce and never sends to it again. Soft bounces get up to 7 retry attempts; if the same address soft-bounces across 3 campaigns, Mailchimp converts it to a hard bounce. Unisender blocks hard bounces immediately and gives soft bounces 5 attempts. SendPulse allows 3 retries before removing the address.
What ESPs won't do: verify your list before the first send. Upload 50,000 addresses with 10,000 dead ones, and the ESP tries all 50,000, logs 10,000 hard bounces, and your campaign shows a 20% bounce rate. The reputation damage happens before any address gets flagged. Verify before loading into the ESP, not after.
Common misconceptions about bounces
"Soft bounces can be ignored." A single one is fine. An address that soft-bounces every campaign is functionally a hard bounce — the mailbox is perpetually full or the server consistently rejects your content. Either way, useless.
"Low bounce rate means everything is fine." Low bounce combined with low open rate often means mail is going to spam. The provider doesn't return a bounce; it quietly routes your message to junk. Technically delivered, practically worthless.
"Retrying a hard bounce might work." No. Each retry signals to mailbox providers that you don't practice basic list hygiene. Direct path to reputation loss.
Step-by-step bounce handling after each campaign
Export the bounce list. Separate hard from soft — most platforms show the type in the report. Delete all hard bounces immediately, no exceptions. Leave soft bounces but track them: 3 soft bounces from one address within 30 days, remove it.
Check the overall bounce rate. Above 2%: run a full list validation before the next send. Enable auto-removal of hard bounces in your ESP and connect validation via API to signup forms so new dead addresses never enter the list.
The whole process takes 20-30 minutes post-campaign. Do it manually the first few times; 80% of it automates from there.
Summary
Hard bounce and soft bounce differ on one axis: permanence. Hard bounces mean the address is dead for good; soft bounces mean a temporary failure. The action differs too: hard bounces come off the list immediately, soft bounces get monitored and removed on repetition.
SMTP codes show the cause: 5xx for permanent errors, 4xx for temporary ones. Keep hard bounce rate below 2% per campaign. The fastest fix is validating the list before sending — dead addresses can't be revived, but they can be found and removed before they cause damage.
Check your list in uChecker. The service identifies invalid, risky, and dead addresses in minutes. 30 free checks to get started.
