Write once. Know how it behaves across 21 email clients.
Web App · Documentation · State of Email CSS Report
Your email looks perfect in Apple Mail. Gmail strips half the CSS. Outlook renders it in Microsoft Word.
Across 298 CSS and HTML features tracked, only 6 are fully supported across all 21 email clients.
Emailens catches the other 292 before your users do: in the engine, in your terminal, in CI, and in AI coding agents.
Frameworks: React Email · MJML · Maizzle · Tailwind CSS · Raw HTML
Clients: Gmail · Outlook · Apple Mail · Yahoo Mail · Thunderbird · HEY · Superhuman · Samsung · Proton
| Package | Status | Use It For | Quick Start |
|---|---|---|---|
@emailens/engine |
v0.12.3 (npm) |
Core email compatibility & CSS scoring (298 features, 21 clients) | npm install @emailens/engine |
@emailens/cli |
v0.6.0 (npm) |
Terminal linting & automated CI/CD exit codes | npx @emailens/cli lint email.html |
@emailens/mcp |
v0.8.0 (npm) |
Email QA in Claude Code, Cursor, and AI agents | claude mcp add emailens -- npx -y @emailens/mcp |
emailens/action |
v1 (Action) |
Pull request quality gate in GitHub Actions | uses: emailens/action@v1 |
emailens/vscode |
In Development | Editor linting & side-by-side Outlook preview | Coming soon to Marketplace |
The open-source core powers all Emailens tooling. It parses HTML, simulates client quirks, transforms CSS per client, and evaluates 298 rules with 1,288 automated tests.
npm install @emailens/engineimport { auditEmail } from "@emailens/engine";
const report = await auditEmail(htmlSource, {
clients: ["gmail-web", "outlook-windows", "apple-mail"],
});
console.log(report.overallCompatibility); // 0-100 worst-client score
console.log(report.compatibility); // per-client scores & issues
console.log(report.spam); // heuristic spam flags
console.log(report.accessibility); // WCAG contrast & alt checksAnalyze files locally or fail CI pipelines on breaking markup:
# Analyze a single email
npx @emailens/cli analyze email.html
# Lint an entire template directory with a minimum score threshold
npx @emailens/cli lint ./emails --threshold 80AI models write great code, but routinely generate email HTML that fails in Outlook, strips styles in Gmail, and breaks dark mode.
Connect Emailens to Claude Code or Cursor so your agent can lint, audit, and self-repair emails directly:
claude mcp add emailens -- npx -y @emailens/mcpIncluded tools: preview_email, analyze_email, audit_email, fix_email, diff_emails, check_deliverability, list_clients.
Block pull requests that introduce email regressions:
- uses: emailens/action@v1
with:
pattern: "emails/**/*.html"
threshold: "75"☁️ Hosted QA SaaS (emailens.dev)
While the core tools run 100% offline, emailens.dev provides hosted infrastructure for teams:
- Real Browser Screenshots: High-fidelity captures across 21 real clients in light and dark mode.
- Client Share Links: Share preview audits with stakeholders without requiring an account.
- Visual Diff Engine: Pixel-level regression comparisons between email revisions.
- Pre-Send Delivery Gate: REST API and webhook blocking deliverability and spam issues before launch.
- Self-Healing AI Builder: Describes and compiles templates, automatically running self-repair loops until output passes 90+ on every client.
Made with care for developers who hate broken inboxes.
emailens.dev
