For HTML email deliverability: maintain a visible text-to-image ratio (don't send all-image emails), use your own custom tracking domain (not your ESP's default), limit links to 3-5 per marketing email, avoid URL shorteners (bit.ly is heavily associated with spam), include a plain-text version, keep total email size under 100KB, and always include a visible unsubscribe link. Content matters less than reputation and authentication — fix those first.
HTML Email Best Practices for Deliverability (2026)
What Actually Matters for Content-Based Deliverability
Let's be clear: sender reputation and authentication account for ~80% of deliverability outcomes. Content is the remaining ~20%. Fix infrastructure before optimizing content.
That said, here's what modern spam filters evaluate in your email content.
The Rules That Actually Matter
1. Don't Send All-Image Emails
An email that's a single image (or mostly images with minimal text) is a red flag. Spam filters can't read image content reliably, so they distrust image-heavy emails.
| Ratio | Risk Level |
|---|---|
| 80%+ text | Low |
| 60% text / 40% images | Low |
| 40% text / 60% images | Medium |
| Image-only (no text) | High — almost guaranteed spam filtering |
Fix: Ensure every email has meaningful text content. Use images to complement, not replace, your message.
Practitioner note: I see the image-only problem most with fashion and retail brands. Their designers create beautiful emails in Photoshop, export as images, and the deliverability team wonders why 30% of email goes to spam. Always include real text in your HTML, even if the visual design is image-forward.
2. Use Custom Tracking Domains
Your ESP tracks clicks by rewriting your links through their tracking domain. The default tracking domain is shared across all customers on that ESP.
If another customer on your ESP's shared tracking domain gets flagged for spam, links through that domain become suspect — including yours.
Fix: Configure a custom tracking domain (e.g., links.yourdomain.com or email.yourdomain.com). Every major ESP supports this. It takes 5 minutes and a CNAME record.
3. Limit Links
More links = more opportunities for spam filters to find something suspicious.
- Marketing email: 3-5 links maximum (including the unsubscribe link)
- Transactional email: 1-2 links (the primary action)
- Avoid: 10+ links in a single email
4. Never Use URL Shorteners
bit.ly, tinyurl, ow.ly — these are heavily associated with spam and phishing. Spam filters flag shortened URLs because they obscure the destination.
Fix: Use full URLs through your custom tracking domain. If links are long, use descriptive anchor text.
5. Keep Email Size Under 100KB
Gmail clips emails with HTML over 102KB, showing only part of the message with a "View entire message" link. When clipped, you lose engagement (most people don't click through), tracking (your open pixel and links may be below the fold), and unsubscribe visibility (if the link is in the clipped footer). Aim for 80KB to stay safe.
Fix: Optimize images (compress before embedding), use hosted images instead of inline Base64, remove redundant wrapper tables, and strip HTML comments and whitespace.
6. Include Unsubscribe Infrastructure
Required by law (CAN-SPAM, GDPR) and by Gmail/Yahoo bulk sender requirements:
- Visible unsubscribe link in the email body
- List-Unsubscribe header in email headers
- List-Unsubscribe-Post header for one-click unsubscribe (RFC 8058)
- Unsubscribe must work within 10 days (2 days recommended)
Most ESPs handle headers automatically. Verify they're present by viewing raw email source.
What Doesn't Matter (Anymore)
Spam trigger words: "Free," "buy now," "limited time" — these haven't been meaningful spam signals since the early 2010s. Modern filters use reputation and engagement, not keyword lists. For the full picture, see our spam trigger words analysis.
Exclamation marks and caps: Using one exclamation mark is fine. Using "BUY NOW!!! FREE!!!" in your subject line looks like spam to humans and algorithms alike, but that's a different problem.
Specific HTML elements: Using <table> vs <div>, inline styles vs embedded — these affect rendering but not deliverability.
Testing Your Email
Before sending to your full list:
- Mail-Tester.com: Send a test email, get a deliverability score (0-10). Shows content issues, authentication status, and blacklist checks.
- Litmus: Full rendering preview across 90+ email clients + spam filter analysis.
- Email on Acid: Similar to Litmus with content analysis.
And run this checklist before every campaign:
- Image-to-text ratio is 60/40 or better
- HTML weight is under 80KB
- 10 or fewer links total
- All links resolve (no 404s)
- Clean HTML with no broken tags
- Plain text version included
- 600px max-width
- Unsubscribe link visible in footer
- Alt text on all images
- Renders correctly in Gmail, Outlook, Apple Mail
Practitioner note: I've seen companies spend weeks optimizing email content when their SPF record was broken. Fix authentication and reputation first. Then worry about HTML structure. Content optimization on top of broken infrastructure is polishing a car with no engine.
Practitioner note: Custom tracking domains are the most underrated deliverability improvement. It takes 5 minutes to set up and immediately removes your dependency on your ESP's shared tracking domain reputation. Do this today.
If your email content is fine but deliverability is still poor, the problem is infrastructure. Schedule an audit — I'll find the real cause.
Sources
- Google: Email Sender Guidelines
- RFC 8058: One-Click List Unsubscribe
- Litmus: Email Design Best Practices
v1.0 · March 2026
Frequently Asked Questions
Does HTML email hurt deliverability?
No. HTML email is standard and expected. What hurts deliverability: all-image emails with no text, broken HTML that renders poorly, excessive links, and URL shorteners. Well-structured HTML with a balance of text and images is fine.
What's the ideal image-to-text ratio?
There's no magic number, despite what many guides claim. The practical rule: every email should make sense as plain text. If you stripped all images and the email says nothing, it's too image-heavy. A roughly 60% text / 40% image split is a safe guideline.
Do spam trigger words actually matter in 2026?
Far less than they used to. Modern spam filters rely primarily on sender reputation, authentication, and engagement signals — not keyword matching. That said, extremely spammy language (ALL CAPS, excessive exclamation marks, known phishing phrases like 'verify your account') can still trigger content-based filters as a secondary signal.
Should I include a plain-text version?
Yes. Most ESPs generate a plain-text version automatically. Having both HTML and plain-text (multipart/alternative) is a positive signal. Some spam filters penalize HTML-only emails without a plain-text alternative.
Does dark mode affect deliverability?
No, but it affects rendering. If your email looks broken in dark mode (invisible text, wrong colors), recipients are more likely to ignore or report it. Test dark mode rendering in Litmus or Email on Acid.
How big should an email HTML file be?
Under 100KB total HTML weight. Gmail clips emails over 102KB, showing a 'View entire message' link that kills engagement. Keep it under 80KB to be safe.
Want this handled for you?
Free 30-minute strategy call. Walk away with a plan either way.