Skip to content

Repository files navigation

emailens / engine

The rendering linter for email

CI npm license tests node MCP GitHub stars

Quick Start · What It Catches · Why Emailens · Supported Clients · API Docs

Your email looks perfect in Apple Mail. Gmail strips half the CSS. Outlook renders it in Word.

@emailens/engine analyzes HTML, React Email, MJML, and Maizzle against 21 email clients and scores compatibility before your email goes out. It catches the issues in the engine, in the terminal, in CI, and inside AI coding workflows.

If you want the fastest path to trying it locally, start with the CLI:

npx @emailens/cli lint email.html

The CLI is the recommended entry point for open-source usage. The engine is the lower-level library for builders, tools, and custom integrations.

emailens.dev is the hosted SaaS for shared previews, screenshots, visual diffs, and team workflows. The open-source packages are the local developer tooling.

Quick Start

Option 1: Try the CLI first

npx @emailens/cli lint email.html

Option 2: Use the engine as a library

npm install @emailens/engine
import { auditEmail } from "@emailens/engine";

const html = `<html><body><div style="display:flex; gap: 12px;">...</div></body></html>`;
const report = auditEmail(html, { framework: "jsx" });

console.log(report.compatibility.scores["outlook-windows"]);

What It Catches

  • CSS compatibility across 21 clients
  • Spam scoring and content hygiene signals
  • Accessibility checks for contrast and semantics
  • Image and link validation
  • Inbox preview and client-specific rendering issues
  • Template variable and overflow problems
  • AI fix generation for structural issues

Every finding may include source positions, so a result can be pointed at, annotated, or fixed in place.

Why Emailens?

  • Offline-first: runs locally with no account required
  • Unified audit: a single tool checks CSS, spam, accessibility, links, images, and more
  • Framework-aware: works with raw HTML, React Email, MJML, and Maizzle
  • AI-ready: structural fixes can be generated with any model provider
  • Programmable: use it in CI, editors, scripts, or custom tooling

Supported Email Clients

Client ID
Gmail gmail-web
Gmail Android gmail-android
Gmail iOS gmail-ios
Outlook 365 outlook-web
Outlook (New) outlook-windows
Outlook Classic outlook-windows-legacy
Outlook iOS outlook-ios
Outlook Android outlook-android
Outlook for Mac outlook-macos
Apple Mail apple-mail-macos
Apple Mail iOS apple-mail-ios
Yahoo Mail yahoo-mail
Yahoo Mail Android yahoo-mail-android
Yahoo Mail iOS yahoo-mail-ios
Samsung Mail samsung-mail
Thunderbird thunderbird
HEY Mail hey-mail
Proton Mail protonmail
AOL Mail aol
Fastmail fastmail
Superhuman superhuman

Ecosystem

Package Use it for
@emailens/engine Core library and analysis API
@emailens/cli Lint locally and in CI
@emailens/mcp AI agent access to email QA
emailens/action GitHub Action quality gate
emailens/vscode VS Code linting and preview
emailens.dev Hosted previews and team workflows

License

MIT, Copyright 2025 Emailens


If this saved you from an Outlook surprise, a star helps other email developers find it.

About

The rendering linter for email, in your terminal and CI. HTML, react.email, mjml and maizzle checked against 255 CSS and HTML features across 21 clients, with file:line positions and exit codes. Offline, no account.

Topics

Resources

Code of conduct

Contributing

Stars

14 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages