Accessibility · Email
Email accessibility checker.
Paste the HTML of an email and get a rule-by-rule list of accessibility problems: missing lang, missing alt text, layout tables without role="presentation", vague links, low inline colour contrast, tiny text and skipped headings. Optionally paste the List-Unsubscribe headers to check them against RFC 8058. Nothing leaves your browser.
Input
Result
Paste email HTML and press Check email.
The rules, with sources
- Language: the
htmlelement needs alangattribute (WCAG 2.2 SC 3.1.1, Level A; technique H57). - Alt text: every
imgneeds analtattribute, empty only for decoration (SC 1.1.1, Level A; H37). An image that is the only content of a link needs a name (F89); a file name as alt text is a failure pattern (F30). - Layout tables: most email layout is tables. A table with no header cells and no caption is treated as layout and should carry
role="presentation"(WAI-ARIA 1.2 presentation role); a layout table that containsthorcaptionfails F46 under SC 1.3.1. - Link text: a link needs a name (SC 2.4.4, Level A). Empty links fail. "Click here" style text is only a warning, because 2.4.4 accepts a purpose that is clear from the surrounding sentence.
- Contrast: text needs at least 4.5:1 against its background, or 3:1 for large text, which is at least 18 point (24px) or 14 point bold (about 18.67px) (SC 1.4.3, Level AA).
- Font size: advisory only. WCAG has no minimum size; SC 1.4.4 requires that text can be resized to 200%. The threshold is yours to set.
- Headings: real
h1-h6elements give structure (H42, G141). Skipped levels are advisory, not a WCAG failure. - Unsubscribe: RFC 8058 one-click needs a
List-Unsubscribeheader with an HTTPS URI and aList-Unsubscribe-Postheader of exactlyList-Unsubscribe=One-Click, with a valid DKIM signature covering both (RFC 8058, January 2017).
How contrast is calculated
Each sRGB channel is divided by 255, then linearised: values at or below 0.04045 are divided by 12.92, others become ((c + 0.055) / 1.055)2.4. Relative luminance is L = 0.2126 R + 0.7152 G + 0.0722 B. The ratio is (L1 + 0.05) / (L2 + 0.05) with L1 the lighter colour. Source: WCAG 2.2, definition of relative luminance and contrast ratio, checked 2026-09-30.
Worked example
Load the example. It has no lang, an image with no alt, a "Click here" link, a layout table with no role, grey #999999 text on white and an h1 followed by an h3. The grey text is 2.85:1, below the 4.5:1 needed for normal text. Changing it to #767676 gives 4.54:1 and passes.
What this tool does not check
It reads inline style attributes, bgcolor and font color only. It does not apply <style> block rules, media queries, dark-mode inversion, background images, gradients or how a given email client renders the message. Colours it cannot resolve (rgba, hsl, default link colours) are skipped and counted, not guessed. It cannot see DKIM signatures, reading order, colour-only meaning, image content or the quality of your alt text. A clean result is not a full WCAG conformance claim; test with a screen reader and in real clients as well.
Frequently asked questions
Does the email have to meet WCAG?
WCAG is a web standard, but its success criteria are the usual yardstick for accessible HTML email. Whether a law requires it depends on your jurisdiction and audience; this tool does not give legal advice.
Why do layout tables need role="presentation"?
Without it, a screen reader may announce table, row and column structure for a layout grid, which adds noise. The role removes that table semantics so the content reads in order.
Is there a minimum font size in WCAG?
No. WCAG 2.2 sets contrast and resizing requirements but no minimum point size, so the font-size result here is a setting you control, not a standard.
Where do the List-Unsubscribe headers go?
They are message headers set by your sending platform, not part of the HTML. Paste them above the HTML if you want their shape checked. A pass here does not confirm the DKIM signature RFC 8058 also requires.
Rule-based scan, not an audit
This tool applies a fixed set of checks to the markup you paste. It does not render the email, so a clean result is not proof of WCAG conformance and a finding may be a false positive. Sources: WCAG 2.2 (W3C) and RFC 8058 (IETF), checked 2026-09-30.