Lint HTML email for client compatibility
Deterministic static analysis for HTML email. Catch unsupported CSS and blocked elements before you send - offline, in CI, and right here in your browser. Your HTML never leaves your machine.
Why EmailLint
Try it in your browser
How it works
1. Paste
Drop your email HTML into the editor, or load a sample.
2. Analyze
EmailLint scores it 0–100 and lists every compatibility issue with line numbers.
3. Fix
Each issue tells you why it breaks and how to fix it, plus per-client support.
Score starts at 100: each error subtracts 15, each warning 5, info 0. A single rule is capped at −15 so one prolific issue can't floor the score alone. Minimum 0.
Rules - 39
EmailLint checks email compatibility, not HTML correctness. Every rule explains why it fires, how to fix it, and which email clients are affected.
Compatibility - 23
Performance - 2
Quality - 3
Try it in 10 seconds
v0.14.0 on npm. No config, no account, no network - the linter runs where your email HTML lives.
$ npx @emaillint/cli newsletter.html
newsletter.html:22:3 IMG_MISSING_ALT warning <img> is missing an alt attribute.
newsletter.html:8:85 CSS_FLEXBOX warning display:flex is not reliably supported…
newsletter.html:12:3 SCRIPT_ELEMENT error <script> is not supported in email.
newsletter.html:2:1 HTML_MISSING_LANG warning <html> is missing a lang attribute.
1 file, 14 issues (1 error, 10 warnings, 3 info) — exit 1# .github/workflows/lint-emails.yml
- uses: alurulabs/emaillint/.github/actions/emaillint@main
with:
paths: 'emails/**/*.html'Exit code 1 on any error-severity issue, so it gates merges. SARIF output feeds GitHub Code Scanning; --baseline fails only on new errors; --profile strict escalates warnings.
Where EmailLint fits
EmailLint does not replace visual email testing. It catches problems before you need to render and manually check the email - complementary layers, not rivals.
- Write email HTML
- EmailLint static analysis
- Fix structural / compatibility / accessibility issues
- Visual email testing
- Send
| Capability | EmailLint | Visual testing platforms | Can I Email |
|---|---|---|---|
| Static source analysis | ✓ | — | — |
| Email-client compatibility rules | ✓ | ✓ | ✓ |
| Deterministic, offline results | ✓ | — | ✓ |
| CLI + CI gating (exit codes, SARIF) | ✓ | — | — |
| Severity profiles & baseline mode | ✓ | — | — |
| Free, open source (MIT) | ✓ | — | ✓ |
| Renders/screenshots in real clients | — | ✓ | — |
| Live compatibility reference lookup | — | — | ✓ |
Rule one for visual testing platforms: they render your email and show you the damage. EmailLint reads your source and tells you what will break and why - in seconds, offline, for free, on every commit.