Deliverability
How to Reduce Your Email Bounce Rate: A Practical Checklist
To reduce your email bounce rate, stop bad addresses from getting onto your list, remove dead addresses before you send, and process every bounce so you never mail the same failure twice. In practice that means validating addresses at signup, confirming new subscribers, re-checking lists you haven’t mailed recently, suppressing hard bounces immediately, and authenticating your domain so policy blocks don’t show up as bounces.
Below is the checklist we’d hand to a team that just got a high-bounce warning from its ESP. It’s organized by where in the lifecycle each fix applies: at capture, before a send, during a send, and after a send.
First, find out what kind of bounce problem you have
Before changing anything, pull the bounce data from your last few campaigns and group it by SMTP code. The fix depends on what you find.
| Mostly seeing… | It means | Jump to |
|---|---|---|
5.1.1, “user unknown,” “no such user” | Dead or mistyped addresses | Capture and pre-send sections |
5.1.2, domain not found | Typo domains or defunct companies | Capture section |
5.7.x policy codes | Your mail is being blocked, not your addresses | During-send section |
4xx deferrals at one provider | Throttling or reputation | During-send section |
4.2.2 / 5.2.2 mailbox full | Abandoned mailboxes | After-send section |
If you’re unsure what a code means, SMTP bounce codes explained has a reference table.
Also group bounces by acquisition source (signup form, import, event, partner) and by last engagement date. Most bounce problems trace back to one source or one stale segment.
Stage 1: Stop bad addresses at the point of capture
Every address you prevent from entering your list is a bounce you never have to handle.
1. Validate syntax and domain in real time
Check each address when it’s typed, not after it’s saved. At minimum:
- Is the syntax valid (one
@, a valid local part, a valid domain)? - Does the domain exist in DNS?
- Does the domain have MX records, or an address record that can receive mail?
- Has the domain published a null MX? RFC 7505 defines a single MX record of
0 .as a way for domains to declare that they accept no email.
A quick DNS check from the command line shows what you’re looking for:
$ dig +short MX gmail.com
5 gmail-smtp-in.l.google.com.
10 alt1.gmail-smtp-in.l.google.com.
...
$ dig +short MX gmial.com
(no answer, or records for an unrelated parked domain)
2. Catch typos before they’re saved
Misspelled domains like gmial.com, hotmal.com, and yaho.com are a steady source of hard bounces. A “Did you mean gmail.com?” prompt fixes them while the user is still on the page. Our post on common email typos lists the patterns to look for.
3. Filter disposable addresses where it makes sense
Temporary inbox services produce addresses that work for minutes or hours and then bounce. If your signup offers something people might want without a long-term relationship (a download, a trial), decide whether to block or flag them.
4. Use confirmed opt-in
Double opt-in sends a confirmation link and only adds the address once it’s clicked. Every confirmed address has received at least one email successfully. The M3AAWG Sender Best Common Practices warn that single opt-in should be used with extreme caution, because it lets typos and forged addresses onto lists and leads to complaints and bounces.
5. Protect forms from bots
Bots fill forms with random or stolen addresses, which bounce or generate complaints. Amazon SES’s guidance on “listbombing” recommends a CAPTCHA on every web signup form and a confirmation email for new signups (AWS).
You can test individual addresses or small batches with the free email verifier on this site. It checks syntax, domain and MX records, disposable domains, role-based addresses like info@ and sales@, free-provider domains, and common domain typos. It doesn’t connect to the mailbox over SMTP, so it won’t tell you whether a specific inbox exists.
Stage 2: Clean the list before you send
6. Never send to purchased or rented lists
Amazon SES’s email program guidance warns that bought or rented lists can contain large numbers of invalid addresses and spam traps, and that hitting spam traps can damage your sender reputation badly. Most ESPs forbid them outright.
7. Re-verify segments you haven’t mailed recently
Addresses die on predictable schedules. Major providers close inactive accounts:
- Yahoo: a mailbox not accessed for 12 months becomes inactive and stops receiving new email (Yahoo Help).
- Outlook.com: Microsoft closes the mailbox if the owner hasn’t signed in at least once in a one-year period (Microsoft Support).
- Google: personal accounts not used within a two-year period may be deleted (Google).
Business addresses die when people change jobs. So any segment you haven’t mailed in many months should be verified before it goes back into rotation.
8. Re-permission old segments instead of blasting them
For contacts you can’t confirm through other signals, Amazon SES suggests checking status through other means first (such as website logins or purchase history) and otherwise sending a win-back email, then removing everyone who doesn’t respond (AWS). Send that win-back to small batches so a bad segment doesn’t sink your whole send. Our guide to re-engagement campaigns has templates and timing.
9. Deduplicate and normalize
Duplicates don’t cause bounces by themselves, but they double the damage when an address is bad. Trim whitespace, lowercase the domain, remove obvious junk like test@test.com, and merge duplicates before import.
10. Check suppression at send time
Make sure every send, including one-off sends from sales tools and imports into new platforms, checks the global suppression list. A common cause of repeat hard bounces is a second tool that never got the suppression list. Our existing guide on suppression list design covers the details.
Stage 3: Send in a way that doesn’t create bounces
Some “bounces” are really blocks. These steps reduce rejections that have nothing to do with bad addresses.
11. Authenticate your domain
Gmail rejects mail that fails the sender domain’s DMARC policy with 550 5.7.26, and mail from IPs without a PTR record with 550 5.7.25, according to Google’s SMTP error list. Since February 1, 2024, Google has required SPF or DKIM for all senders to Gmail accounts, and SPF, DKIM, and DMARC for senders of more than 5,000 messages a day (Google sender guidelines). Follow How to Set Up SPF, DKIM, and DMARC.
12. Throttle per provider
Sending too fast triggers deferrals like Gmail’s 421 4.7.28 (“Gmail has detected an unusual rate of email”). Google advises reducing sending volume when messages start bouncing or getting deferred, until the error rate decreases. Spread large sends over time and limit concurrency per receiving domain.
13. Warm up new domains and IPs
A brand-new sending domain or IP has no reputation, and receivers are cautious with it. Ramp volume gradually, starting with your most engaged contacts.
14. Keep messages a reasonable size
Amazon SES classes MessageTooLarge and AttachmentRejected as transient bounces that you can fix by shrinking the message or changing the attachment (AWS). Link to large files instead of attaching them.
Stage 4: Handle bounces after every send
15. Suppress hard bounces immediately
Don’t wait for the next cleanup. Amazon SES’s guidance is to remove a hard-bouncing address immediately and never try to resend to it. Most ESPs do this automatically. Confirm yours does, and that the suppression syncs back to your CRM.
16. Set a rule for repeated soft bounces
A single soft bounce is noise. Repeated soft bounces mean an abandoned mailbox. Pick a rule that combines a count and a time window. Two published examples:
- M3AAWG: remove an address that bounces consecutively at least two times over two weeks or more.
- Mailchimp: converts a soft bounce to a hard bounce after 7 soft bounces for contacts with no activity and up to 15 for contacts with previous activity (Mailchimp).
17. Don’t suppress on policy blocks
If a bounce carries a 5.7.x code, the address is probably fine. Suppressing it loses a real subscriber and hides the actual problem. Fix authentication or reputation and resend later.
18. Feed bounce data back to the source
Tag every bounce with where the address came from. If one form, partner, or event produces most of your bounces, fix that source. Cleaning up after it every month is the expensive way to handle it.
19. Monitor and alert
Set alerts on hard bounce rate per campaign and on a rolling window. Amazon SES, for example, recommends a CloudWatch alarm when the account bounce rate reaches 5% (AWS). Set your own alert well below whatever level your provider enforces.
The checklist at a glance
- Validate syntax, domain, and MX at signup
- Suggest corrections for typo domains
- Decide on a disposable-address policy
- Use confirmed opt-in
- Add bot protection to forms
- Never use purchased lists
- Re-verify stale segments
- Re-permission inactive contacts
- Deduplicate and normalize
- Check suppression at send time, in every tool
- Authenticate with SPF, DKIM, and DMARC
- Throttle per provider
- Warm up new domains and IPs
- Keep messages small
- Suppress hard bounces immediately
- Set a repeated-soft-bounce rule
- Don’t suppress on policy blocks
- Fix the worst source
- Monitor and alert
FAQ
What’s the fastest way to lower my bounce rate?
Stop sending to segments you haven’t mailed in a long time and make sure every hard bounce is suppressed. Those two steps usually remove most repeat failures within one or two campaigns. Then fix collection so new bad addresses stop coming in.
Will email verification eliminate bounces?
No. It removes a large share of preventable ones, such as syntax errors, typo domains, dead domains, and disposable addresses, but no check can predict every future failure. Mailboxes fill up, people leave jobs, and some servers accept everything at check time and reject later. Our post on why emails still bounce after verification explains the gaps.
Does sending more slowly reduce bounces?
It reduces deferrals and rate-limit errors, which some tools count as soft bounces. It doesn’t fix invalid addresses. If your bounces are mostly 4xx codes at one provider, slowing down helps. If they’re 5.1.1 errors, you need list cleaning.
How often should I clean my email list?
Process bounces after every send. Re-verify any segment before mailing it if you haven’t sent to it in several months, and verify every imported list before its first send.
Free email verifier: syntax, MX, disposable and role-based addresses, typos. Paste up to 100 at once.