Thomas Schiavone
April 06, 2026

Table of contents
Why fonts in email don't work like fonts on the web
The industry standard: fallback-first, enhance where you can
Which email clients support custom fonts (and which don't)
How to implement fonts in email HTML
Readability and accessibility standards
A pre-send QA checklist for fonts
How Courier handles this for you
Wrapping up
Pick a font for your website and it works everywhere. Pick a font for your email and you're immediately dealing with a different reality. Fonts in email have never followed the same rules as fonts on the web. Gmail ignores your @font-face declaration. Outlook might swap in Times New Roman. Apple Mail renders your custom typeface perfectly. Your users see three different versions of the same email.
This isn't a new problem, but it's one that trips up even experienced teams because the rules aren't obvious. Email clients don't follow browser standards. They each have their own rendering engine, their own CSS support, and their own opinions about what fonts to show.
This guide covers the practical standard for handling fonts in email: how to build fallback stacks that hold up, where custom fonts actually work, what to do about the clients where they don't, and how to QA all of it before you hit send.
On the web, you declare a font with CSS, point to a hosted file, and browsers load it. It's been reliable for over a decade. Email doesn't work that way.
Every email client is its own rendering environment. The same HTML might pass through Gmail's web interface (which strips <style> blocks and ignores @font-face), Outlook for Windows (which uses Microsoft Word's rendering engine), Apple Mail (which supports most modern CSS), and dozens of others. Each one makes its own decisions about what CSS to keep, what to strip, and what to override.
That fragmentation means your font choice isn't really a design decision. It's a compatibility decision. Three things make it tricky:
@font-face support. Some clients load custom fonts. Others strip the declaration entirely and fall back to their own default.The takeaway: if you want your emails to look intentional across clients, you need to design for what happens when your preferred font doesn't load. Because in most inboxes, it won't.
Look at the guidance from Litmus, Campaign Monitor, Email on Acid, and the support data on Can I Email. The pattern across all of them is the same.
Teams that ship reliable email at scale don't pick one perfect font and hope for the best. They build a fallback-first strategy: start with fonts you know will render everywhere, then layer in custom fonts as a bonus for clients that support them.
Here's what that looks like in practice:
sans-serif, serif, or monospace so you're never leaving the final choice to the client.You'll sometimes hear this called a "web-safe font" strategy. That term comes from old web standards and refers to fonts commonly installed across operating systems. In the email world, the better mental model is email-safe fonts: the subset that reliably renders across major email clients, not browsers.
Support changes over time, so always check a current source like Can I Email before making decisions. That said, the high-level patterns have been stable for years:
| Client family | @font-face support | Notes |
|---|---|---|
| Apple Mail (macOS) | Yes | Solid support since macOS 12.2+ |
| iOS Mail | Yes | Reliable on iOS 10.3+ |
| Gmail (all platforms) | No | Strips @font-face, overrides with its own defaults |
| Outlook for Windows | No | Uses Word's rendering engine, ignores web fonts |
| Outlook for Mac | Yes | Supports @font-face since 2011 |
| Outlook.com (web) | No | Strips custom font declarations |
| Yahoo Mail | No | Strips @font-face |
| Samsung Mail | Partial | Some support on Android 8.0+ |
| Thunderbird | Yes | Full support on desktop |
The practical implication: if your audience skews toward Apple devices, custom fonts can genuinely improve brand expression. If you're sending to a mixed audience (most B2B senders), the majority of opens will come from clients that ignore your custom font entirely.
That's not a reason to skip custom fonts. It's a reason to make sure your fallback looks great, too.
There are three methods for loading custom fonts in email. Each has different levels of client support.
@font-face (recommended for email)This gives you the most control. You declare the font family, weight, style, and source directly, and you can specify the woff2 format, which has the widest support among clients that accept custom fonts.
Copied!
@font-face {font-family: 'Inter';font-style: normal;font-weight: 400;src: url('https://your-cdn.com/fonts/inter-regular.woff2') format('woff2');}
Then reference it in a fallback stack on every text element:
Copied!
<td style="font-family: 'Inter', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.5;">Your order has shipped.</td>
<link> and @importBoth of these pull from an external stylesheet, most commonly Google Fonts. Google Fonts are free to use in email, and their licenses explicitly cover it. They're simpler to set up, but have slightly narrower email client support and can introduce loading delays.
Copied!
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap" rel="stylesheet">
Copied!
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap');
If you use either of these, watch out for an Outlook quirk: some versions will fall back to Times New Roman instead of your declared fallbacks. The @font-face method avoids this, which is one reason it's preferred.
A font stack isn't a list of random alternatives. Each entry should be chosen deliberately:
line-height on every text block so spacing stays consistent regardless of which font loads.Here are example stacks for common styles:
| Style | Stack |
|---|---|
| Sans-serif | 'Inter', 'Segoe UI', Helvetica, Arial, sans-serif |
| Serif | 'Lora', Georgia, 'Times New Roman', Times, serif |
| Monospace | 'JetBrains Mono', 'Courier New', Courier, monospace |
Outlook for Windows deserves special attention. It uses Microsoft Word's rendering engine, which means it ignores most CSS you'd expect to work. For fonts specifically, Outlook can default to Times New Roman when it encounters font declarations it doesn't understand.
The standard fix is an MSO conditional comment that forces a safe font stack for Outlook:
Copied!
<!--[if mso]><style type="text/css">body, table, td, p, a, span {font-family: Calibri, Arial, sans-serif !important;}</style><![endif]-->
Not glamorous. Very effective.
Email typography has one job before all others: be readable. If your subscribers can't comfortably read your content, nothing else about your font strategy matters.
These are the practical defaults that align with WCAG guidance and industry best practices:
line-height explicitly on headings.A few things to avoid:
Use media queries to refine sizing on mobile:
Copied!
@media only screen and (max-width: 480px) {.heading { font-size: 26px !important; line-height: 34px !important; }.body-text { font-size: 15px !important; line-height: 22px !important; }}
You don't need a 30-minute QA process for every email. But you do need a repeatable check that catches font issues before they reach inboxes.
Before every send:
font-family with a fallback stack.Common failures this catches:
Catching these in QA takes minutes. Fixing them after a send takes an apology email.
Everything in this guide boils down to one workflow: pick a font, build a fallback stack, and test it. Courier's notification designer now handles that workflow automatically.
When you design an email in Courier, you choose from a curated set of email-safe fonts that render reliably across major clients. The designer auto-selects compatible fallback fonts for you, so every email template ships with a proper stack out of the box. No hand-coding font-family declarations, no guessing which fallbacks match your primary font's x-height.
If you want to go beyond system fonts, there's a library of 40 Google web fonts available as well. Pick one, and Courier auto-generates the fallback stack the same way. Clients that support web fonts get your custom typeface. Everyone else gets a matched fallback. Progressive enhancement, handled for you.
And if you have opinions about which fallbacks to use (you probably do), you can override the auto-selection and pick your own from the email-safe font set. You get full control without having to write the CSS yourself.
The industry standard for fonts in email comes down to one principle: design for the fallback first, then enhance where you can.
Custom fonts can absolutely strengthen your brand in the inbox. Apple Mail and iOS Mail will render them beautifully. But the majority of your audience is probably opening email in a client that ignores custom fonts entirely, and your emails need to look intentional there, too.
Build a solid fallback stack. Set readable defaults for size, line-height, and contrast. Handle Outlook explicitly. Test before you send. That's the standard, and it's the standard because it works.

Debug Delivery Issues in Your AI Editor with MCP
Between quarterly audits, delivery issues don’t wait. When emails fail or alerts fire, you need answers fast. Courier’s MCP server lets you debug notifications conversationally—find the message, trace its timeline, and inspect user data in minutes. Instead of jumping between dashboards, your AI agent pulls everything on demand, surfaces root causes, and even automates investigations. The result: faster fixes, less guesswork, and a smarter, always-on reliability workflow.
By Eric Lee
April 03, 2026

Design Studio + Journeys: The Engineering Integration Guide
This is the engineering guide for setting up Design Studio and Journeys. When you move notification logic to Courier, your architecture shifts from a push model to an event model. Your backend stops rendering templates and managing provider APIs directly, and starts emitting events. This guide covers both integration paths (direct API and Segment), how to structure the data object so PMs can build without asking for backend changes, error handling and idempotency, how to use test environments safely, and the specific code you can delete from your repo once it's running.
By Kyle Seyler
March 20, 2026

Courier MCP: Let your AI agent handle customer messaging end to end
The Courier MCP server lets your AI agent send notifications, manage users, debug delivery, and trigger automations. If you can do it in Courier, your agent can too.
By Mike Miller
March 19, 2026
© 2026 Courier. All rights reserved.