Open-source email QA
for developers.
Find what breaks in Outlook while the email is still a pull request, not after your client opens it. The rendering engine, CLI, MCP server, VS Code extension and GitHub Action are free and open source: run them locally, in CI, or inside Claude and Cursor. Add the hosted app when you need screenshots and share links.
Pick an open-source entry point
Each path is an MIT-licensed repo on GitHub. The hosted app at emailens.dev is separate and not open source today.
- Terminal & CI Lint HTML in pre-commit hooks or GitHub Actions. CLI docs
- AI assistant Analyze and fix emails from Claude, Cursor, or Windsurf. MCP setup
- VS Code extension Live preview and scores while you edit MJML or React Email. VS Code docs
- Embed in your product Use @emailens/engine as a library in Node.js services. Engine API
Three commands developers actually run
Analyze a template with no account, give your assistant the linter, or gate every pull request.
terminal
# analyze a template locally (no account)npx @emailens/cli analyze ./emails/welcome.html --json terminal
# add to Claude Code in one lineclaude mcp add emailens -- npx -y @emailens/mcp .github/workflows/emailens.yml
- uses: emailens/action@v1 with: pattern: "emails/**/*.html" threshold: "70" api-key: ${{ secrets.EMAILENS_API_KEY }} Add the hosted app when your team needs the browser
Open source covers analysis and CI. Sign up when collaborators need links, screenshots or API keys, still powered by the same @emailens/engine.
- 1
Stakeholders need a link, not a terminal
Generate shareable preview URLs so PMs and designers review scores and warnings in the browser without installing anything.
Try shareable previews - 2
You need real browser screenshots
Live previews catch most CSS bugs; hosted capture renders light and dark mode PNGs across 21 clients when you need pixel proof.
Try screenshot previews - 3
Team API keys and preview history
Free tier includes 30 hosted checks a day. Upgrade when you need more keys, CI screenshot gates, or dashboard history.
Create free account
Open-source tools: local vs optional cloud API
Only the MIT repos on github.com/emailens. Cloud API rows need an Emailens account; the web app itself is not open source.
| Capability | Engine | CLI | MCP | VS Code | Action |
|---|---|---|---|---|---|
| CSS/HTML analysis | Local | Local | Local | Local | Cloud API |
| CI lint exit codes | Local | Local | Not included | Not included | Cloud API |
| Dark mode preview | Local | Local | Local | Local | Not included |
| Deliverability checks | Local | Not included | Local | Not included | Not included |
| Browser screenshots (cloud) | Not included | Not included | Cloud API | Not included | Not included |
| Share preview links (cloud) | Not included | Not included | Cloud API | Not included | Not included |
MCP can call hosted screenshots and shares with an API key. The proprietary app adds the dashboard, team usage, and the Figma and Builder integrations. API access
Five projects, one compatibility engine
Each repo is maintained on github.com/emailens. The npm packages are @emailens/engine, @emailens/cli and @emailens/mcp.
@emailens/engine
MIT · 300 features · 21 clients welcome.html, checked five ways-
@emailens/cli
$ emailens lint welcome.htmllocalWorks in 16 of 21, exit 1
-
@emailens/mcp
analyze_email, from your assistantlocalWorks in 16 of 21
-
VS Code extension
on save, beside the editorlocalWorks in 16 of 21
-
emailens/action
pull request #128hostedWorks in 16 of 21, check failed
-
app.emailens.dev
POST /api/previewhostedWorks in 16 of 21
Same email, same engine, same answer. The CLI, MCP server and editor run it on your machine; the Action and the app call it hosted.
-
Core compatibility engine
Parses HTML email, evaluates CSS against 21 client support matrices, transforms markup per client, scores compatibility, previews dark mode, and emits framework-native fix hints. The same engine powers the CLI, MCP server, VS Code extension, and hosted preview API.
298+ CSS and HTML compatibility rules · Per-client transforms and worst-client scoring · React Email, MJML, and Maizzle compile hooks · Runs fully offline in Node.js
-
Terminal lint and CI reports
Preview and analyze emails from the terminal. Pipe HTML in, get structured scores and warnings out. The lint command exits with codes your CI pipeline can gate on.
emailens preview, analyze, and lint subcommands · JSON output for automation · Works with HTML, MJML, Maizzle, and exported React Email · No account required for local analysis
-
Email QA inside AI assistants
Model Context Protocol server with thirteen tools: analyze, preview, audit, fix, diff, deliverability, and client list run locally; hosted screenshots, share links, and SMTP sandbox inbox tools unlock when you add an API key.
Seven tools run 100% locally via @emailens/engine · Claude Desktop, Claude Code, Cursor, Windsurf · Optional EMAILENS_API_KEY for screenshots, sharing, and sandbox inboxes · Remote MCP endpoint at app.emailens.dev/api/mcp
$ npx -y @emailens/mcp -
Live preview in your editor
Side-by-side email preview and compatibility scores while you edit HTML, MJML, or React Email. Uses the open-source engine locally so your source never leaves the machine for analysis.
Live reload on save · Per-client scores and CSS warnings · Inspect elements inside the preview · Published on the VS Code Marketplace
-
GitHub Action CI gate
Fail pull requests when email HTML drops below your compatibility threshold. Sends each template to the Emailens preview API and reports per-client scores as annotations and a job summary.
Score thresholds and client filters · Annotations and a job summary per file · Glob pattern input, including ** for nested folders · Open source, no vendor lock-in
Local-first open core, optional cloud
CSS and HTML analysis, per-client transforms, CLI lint gates, MCP tools without an API key and your editor workflow all run on the open-source stack.
The hosted app adds
- Browser screenshots across 21 clients, light and dark
- Shareable preview links for stakeholders
- Dashboard history, API keys and team usage
- AI Builder and Figma plugin, on the same engine with a proprietary UI
The hosted app is not open source. The free tier includes 30 checks a day. See pricing or check your email, free.
Common questions
Is Emailens open source? +
The email compatibility engine and developer tooling (@emailens/engine, @emailens/cli, @emailens/mcp, the VS Code extension, and the GitHub Action) are open source under the MIT license on github.com/emailens. The hosted web app, screenshot rendering farm, and team features are the commercial SaaS product.
Do I need an Emailens account to use the open-source tools? +
No. Local preview, analysis, linting, and MCP tools that run on @emailens/engine work without signup. Optional hosted features (browser screenshots, shareable preview links, REST API quotas) use the Emailens cloud and may require a free or paid API key.
How does the open-source engine relate to emailens.dev? +
The SaaS at emailens.dev runs the same @emailens/engine logic server-side, adds authenticated storage, share links, screenshot capture across real browser profiles, billing, and team workflows. You can use only the open-source stack, only the cloud, or both.
Where should I start? +
Install @emailens/cli for terminal workflows, add @emailens/mcp if you use Claude or Cursor, or read the @emailens/engine docs if you want to embed scoring in your own product. The documentation at docs.emailens.dev covers each path.
When should I sign up for the hosted app? +
Stay on open source for local linting, CI gates, and editor workflows. Create a free Emailens account when you need shareable preview links for teammates, browser screenshots across clients, or API keys for MCP screenshot and share tools. The free plan includes 30 hosted checks a day.
Does starring the GitHub repos help? +
Yes. Stars on github.com/emailens help other developers discover the engine and tools, signal maintenance to employers evaluating the stack, and notify you of releases. The product roadmap for open-source packages is public in each repo.
Stop it reaching production, from your own terminal.
Start with the CLI or MCP locally, or check one email in the browser first. Create a free account when you need share links, screenshots or team API keys.
Want to contribute rules or fixes? Read the contributing guide