The 2026 email accessibility report found that almost no emails pass basic checks. Here are key tips for improving your email accessibility.
The Email Markup Consortium just released its 2026 email accessibility report, analyzing 376,348 emails.
Of all emails analyzed, only eight passed every check (just 0.002%!). Nearly all failed emails contained issues rated Serious or Critical, and yet most of the fixes are small, mechanical changes.
In this post, we'll cover what the report found and what you can do about it.
Accessibility is often easy for developers to ignore, but it's crucial for every recipient.
Building accessible emails is best for everyone.
The report's most common issues are also its most fixable.
Here are the ones worth your attention, with the fix in plain terms.
Tell clients what language you are speaking and the direction the text flows. A lang and dir attribute were missing on the body of roughly 96% of emails. Without them, assistive tech guesses pronunciation and translation tools stumble.
Your email HTML should include lang and dir attributes on the <html> element and on the <body>'s direct children.
lang: the language of the email, written in BCP 47 language tagdir: the direction of the email content
ltr: left-to-rightrtl: right-to-leftauto: as a last resort<html lang="en" dir="ltr"><head><title>Your weekly product updates</title></head><body><div lang="en" dir="ltr"><!-- email content --></div></body></html>
Several email clients strip the attributes from <html>, which is why duplicating them on the body's children is important.
Email layouts rely on table elements, but if you don't define them as role="presentation", screen readers announce each row (for example, "table, row 1 of 6") and make your emails nearly unreadable.
<table role="presentation"><tr><td>...</td></tr></table>
In their testing, the Email Markup Consortium found that 84% of emails didn't correctly identify presentation-only tables.
Screen readers, agents, and clients scan content based on the headings in an email. As with the web, each email should have a clear, hierarchical structure using headings.
<h1>Main Heading</h1><h2>Subheading 1</h2><h3>Sub-subheading 1.1</h3><h3>Sub-subheading 1.2</h3><h2>Subheading 2</h2><h3>Sub-subheading 2.1</h3><h3>Sub-subheading 2.2</h3>
The test found that 74% of emails have no <h1>. Provide a clear structure to map your email's content and make it easy to scan and understand quickly.
Note that short emails, such as notifications or authentication emails, can be sent without headings since readers can easily discern their purpose and content.
Links should have descriptive text that tells the user what to expect when they click.
<a href="...">click here</a><a href="...">learn more about our new product</a>Images should have an alt attribute that describes the image visually.
<img src="..." alt="photo of a bike"><img src="..." alt="A red bicycle leaning against a brick wall on a rainy street">Good alt text describes the image’s purpose and important details in context. Poor alt text is too vague, redundant (for example, "a photo of ..."), or obvious.
If your image is decorative only, it should use an empty alt="" so it is skipped cleanly.
<title> tagMany email clients and assistive technologies read the <title> tag first, and yet it was missing on 45% of emails analyzed.
<title>Weekly product updates from Resend</title>
When possible, the title should describe the specific email content, like a subject line.
Over half of emails fail the 4.5:1 contrast ratio. Use Contrast Checker to verify your colors meet this standard.
Some popular inboxes render every message in dark mode, and they choose dark mode colors based on your initial colors. Ensuring at least a 4.5:1 contrast ratio increases the likelihood that email-client-enforced dark mode colors are still accessible.
Many developers use React Email as the basis for their email templates. We just shipped better accessibility defaults in response to this report.
Update the package to get the latest version and improve your email accessibility.
npm install react-email@latest
Our updates included:
<Body> by default<Img> defaults to an empty alt<Markdown> tables render role="presentation" by default<Preview> now also emits a <title>Along with this, we've improved the React Email agent skill to help your agents build more accessible emails.
Don't use React Email? Check out the Email Best Practices agent skill. We built it to help you write better emails, regardless of your email setup. This skill has also been updated with accessibility best practices.
React Email handles the structural defaults, but many of these findings require your judgment. Here is a quick checklist to get you started:
<h1>, then nest in order.lang and dir to match the content (React Email defaults to lang="en" dir="ltr")Small acts of consideration, repeated across every email you send, add up to a better experience for everyone.
Accessibility is a shared responsibility that makes every email better for every reader. How else can we help you analyze and improve your email accessibility?