Catch the HTML-email bugs that only show up in Outlook, Gmail, and Apple Mail — before you send.
Why email HTML is different. Email is still largely 1990s HTML rendered by inconsistent engines: Outlook desktop uses Microsoft Word to render HTML (yes, really), Gmail strips most <style> blocks, Apple Mail is the most forgiving but still quirky. Flexbox, grid, and position: fixed break in most clients. Tables-based layout is not retro — it is the reliable default.
What this linter checks.
- Unsupported CSS —
display: flex/grid, position: fixed/absolute, <picture>, background-image without a fallback color, modern units (vh, vw, rem).
- Non-inline CSS —
<style> blocks in <head> work in some clients but are stripped by Gmail on mobile; recommends inlining critical styles.
- Outlook traps — missing MSO conditional comments (
<!--[if mso]>) for VML backgrounds, images without explicit width, buttons relying on border-radius (Outlook ignores it).
- Table layout —
<table> without role="presentation", missing cellpadding/cellspacing=0, nested tables without borders reset.
- Images — missing
alt, no width/height (causes reflow), <img> as the only content (spam-risk), oversized images.
- Accessibility & deliverability — missing
lang, low-contrast text color, tracking pixels without alt="", forms/<input> (broken in most clients).
- Links —
<a> without explicit color, mailto without subject.
Severity levels.
- 🔴 Error — will break in major clients (flex layout, missing table attrs).
- 🟡 Warning — inconsistent across clients (
<style> in head, border-radius buttons).
- 🔵 Info — best-practice / accessibility (missing alt, lang attribute).
Strictness. Strict surfaces info-level issues too; Lenient only flags errors and the most impactful warnings.
Limitations. This is a static rule checker — it cannot run the email in actual clients. For pixel-perfect QA, pair it with a rendering service like Litmus or Email on Acid.