Skip to main content
Emailens
Checks Gmail, Outlook, Apple Mail, Yahoo and dark mode

Your email looks right to you.
Your client opens it broken.

Gmail, Outlook and dark mode change how your email looks after you send it. A button goes blank, a logo disappears, the layout falls apart, and that is the version your client, or your customer, judges you by. Find it and fix it before you send.

Previews open on a computer

A sample is loaded: The Winter Table. Paste or drop your own email to replace it.
winter-table.html
137 lines
Tab indents. Press Esc, then Tab, to leave the editor. Ctrl+M turns Tab indenting off.
6,055 chars

Simulated, no account needed. Five inboxes, Outlook Classic included. A free account opens all 21 and keeps the report.

Your AI assistant can run every check too. See how

A broken email can cost you the client.

You may never hear about it. Your client forwards it to their boss with the logo missing. A customer looks for the button, finds a blank space, and moves on.

  • The button goes blank

    Classic Outlook for Windows draws email with Microsoft Word, not a browser. A button that works everywhere else can come out blank there.

    “where the button should be is blank, not even the link shows up”

  • The logo disappears

    Over a quarter of email readers use dark mode (Litmus, 2026). Some inboxes flip your colours without asking, and part of your logo can vanish into the background.

    “Half of my logo disappears against the white background.”

  • The layout falls apart

    Gmail can drop CSS it doesn't support, and classic Outlook ignores max-width. Images blow up to full size, columns collapse, and text runs off the side of a phone.

    “Outlook is completely ignoring my max width and displays the image full size.”

“We have a client who, when receives our test emails for approval, is having some serious issues with the design layout.”
An agency, on Reddit, 2024

Emailens checks for all three, on the free plan. Check your email, free

Same email, different inbox

What you sent, and what your client opened

Left: the email as you built it. Right: the same email as their inbox draws it, simulated. Switch inboxes to compare.

spoiler: it's Outlook

Showing 7 of the 21 inboxes Emailens simulates.

Your design
What Outlook Classic renders
1 error17 warnings
Simulated: Outlook drops a shape nested inside another.
What the report saysfound by reading the source, not the render3 of 3 reach Outlook Classic
:46
<v:rect> has an invalid height: "height:px" is missing its number.vml-invalid-dimensionOutlook Classic only
:53
<v:roundrect> is nested inside <v:rect>. Outlook does not support nesting one VML shape inside another.vml-nested-shapeOutlook Classic only
:53
<v:roundrect> has arcsize="120%", outside the valid 0%–100% range.vml-arcsize-rangeOutlook Classic only
Outlook Classic uses Microsoft Word for rendering. Flexbox and Grid layouts will break. Use <table> layouts with <!--[if mso]> conditional comments for Outlook's Word engine.display:flex
outlook-windows-legacy strips "display" from styles. Use tables for layout in email clients.display
outlook-windows-legacy strips "max-height" from styles. Outlook ignores max-height. Truncate content server-side or use a fixed height.max-height
outlook-windows-legacy strips "overflow" from styles. Content will always be visible. Design accordingly.overflow

+14 more. See full report

Know exactly what broke, and how to fix it

Every problem names the inbox it breaks in and comes with the fix, written in your framework. This is what Emailens says about the email above.

The Emailens email page for the sample email: works in 15 of 21 clients, a score for every client, the Outlook Classic render, and the 14 things Outlook Classic rewrites, with AI Fix.
fix generated by @emailens/engine
winter-table.html gap: flagged in 14 of 21 clients
- <div style="display: flex; gap: 16px;">-   <div>Item 1</div>-   <div>Item 2</div>-   <div>Item 3</div>- </div>+ <table role="presentation" cellpadding="0"+   cellspacing="0" border="0">+   <tr>+     <td style="padding-right: 16px;">Item 1</td>+     <td style="padding-right: 16px;">Item 2</td>+     <td>Item 3</td>+   </tr>+ </table>

Use padding or margin on child elements instead of gap.

Every check also looks for

  • Buttons that go blank in Outlook

    One VML shape nested in another, and every Outlook button after it loses its text. Ghost tables and bad corner sizes too.

  • Logos and text lost in dark mode

    Every colour pair re-checked after an inbox inverts the email.

  • Raw merge tags a customer would see

    Unfilled Handlebars, Mailchimp and AMPscript tags, caught before they ship.

  • Things that look like spam

    Shouting caps, image-heavy layouts, a missing unsubscribe link.

  • Emails some readers can't read

    Contrast, alt text, heading order, lang and table semantics.

  • Emails that scroll sideways on a phone

    Fixed widths and unbreakable strings that push the layout off screen.

  • Links that go nowhere

    Broken hrefs, insecure links, empty mailto and vague link text.

  • Cut-off subject lines

    Subject and preheader truncation per inbox. Gmail clipping, which hides the bottom of the email, on Dev.

  • Backgrounds and fonts that fall back badly

    Gradients with no fallback colour, fonts with no web-safe stack.

Then see it on real devices

One click screenshots the email in real Outlook, Apple Mail and Gmail, next to the simulation. Your first check is free.

One email captured in three real clients: Outlook (classic) on Windows in dark mode, which turns the dark masthead light, Apple Mail on a Mac, and Gmail on the web, each in its own window.
See real-device checks

Or let it fix itself, design kept

AI Fix is an agent: it looks at your email in the inbox, fixes what breaks there, from the CSS Gmail drops to rounded cards in Outlook, and re-checks every change in all 21 inboxes. It won't hand you a fix that flattens your design. Your coding assistant can run the same checks.

preview_email audit_email fix_email

  • Not using an assistant? Ask AI Fix in plain words, or let it fix what the check found. Three AI Fixes come with every free account. See how it works

  • Still in Figma? Score the frame before anyone writes code. Get the plugin

Set up the MCP server
.cursor/mcp.json
{
  "mcpServers": {
    "emailens": {
      "command": "npx",
      "args": ["-y", "@emailens/mcp"]
    }
  }
}
Claude Code: claude mcp add emailens -- npx -y @emailens/mcp

emailens/action@v1, threshold 70

✗ emails/welcome.html 66

✓ emails/order-shipped.html 97

✓ emails/summit-invite.html 97

1 of 3 emails below 70. Check failed, the pull request is blocked.

Stop it reaching production

Lint every email on every pull request. A change that breaks an inbox fails the build, like any other test, before a customer sees it.

The engine, CLI and MCP server are open source. See the repos

Add the GitHub Action

Test what your app really sends

Templates pass review and still break once your app fills them in. Send the real thing to a sandbox inbox.

Test inbox

Send to smtp.emailens.dev:2525

All inboxes

  • Your sign-in code

    auth@example.com · now

  • Your order has shipped

    orders@example.com · 11:58

  • Reset your password

    auth@example.com · 11:40

When your app sends

220 smtp.emailens.dev ESMTP

EHLO app.example.com

STARTTLS

AUTH PLAIN ••••••••

MAIL FROM:<auth@example.com>

RCPT TO:<inbox+signup@try.emailens.dev>

250 Captured in your sandbox, not delivered

Checked on arrival

  • SPF pass
  • DKIM pass
  • DMARC pass
  • Works in 19 of 21

Sign-in code

482913

GET /api/sandbox/v1/messages/wait

200 · your test submits the code

SMTP relay smtp.emailens.dev:2525

or mail inbox+…@try.emailens.dev

Explore the sandbox

Keep reaching the inbox

A perfect email in the spam folder still failed. Emailens checks the domain you send from every day.

  • DMARC reports, read for you. Point your rua address at Emailens and see who sends as you, and who fails.

  • An email when it drifts. A record changes or a new source starts failing, and you hear first.

How domain monitoring works
The Emailens domain page: three records failing, SPF first, with the record to add and where to publish it.

Get new email CSS fixes by email

One real rendering bug, the root cause, and a working fix, with code. Usually something Outlook does silently.

Every inbox, on every plan. Free forever. Dev from $9 a month.

All 21 inboxes on every plan. No per-seat fees, no sales call, cancel anytime.

Two months free on Dev and Pro when billed yearly

Free

The whole engine, 30 checks a day

$0forever

  • 30 checks a day
  • All 21 email clients
  • 1 generated inbox · 100 test emails/mo
  • Receive mail at a private @try address
  • Captured-message inspection & OTP/link extraction
  • CSS compatibility report
  • Dark mode preview
  • 1 monitored domain · DNS check
  • 7-day audit & sandbox history
  • 3 AI Fixes to try
  • 1 real-device check to try
  • MCP server · 7 local tools
Check your email, free

Dev

For one developer: 100 checks a day, an API key and a test inbox

$9/mo

  • 100 checks a day
  • 5 generated inboxes · 5k test emails/mo
  • Send through sandbox SMTP or to @try inboxes
  • REST API · 1 key · inspect captured mail in CI
  • 3 monitored domains · SPF, DKIM, DMARC
  • 30-day pre-flight audit & sandbox history
  • Share links & Visual Diff
  • HTML size & 102KB clipping checks
  • MCP screenshots + sharing
  • AI Fix · 10/mo + Builder · 3 builds/mo
Start Building

Pro

Recommended

The pre-send gate in CI, and the history behind every check

$39/mo

  • 50 real-device checks a month · real Outlook, Apple Mail and webmail
  • Re-check the same email free for 7 days
  • Pre-send gate · spam heuristics & regressions
  • 25 generated inboxes · 50k test emails/mo
  • Send through sandbox SMTP or to @try inboxes
  • CI email QA · GitHub Action
  • 10 monitored domains · drift alerts
  • 90-day sandbox & 1-year audit compliance
  • Unlimited checks · all 21 clients
  • Full API access · 10 keys
  • AI Fix · 50/mo + AI Builder · 30 builds/day
  • MCP unlimited screenshots
  • Everything in Dev
Go Pro

Prices exclude applicable sales tax, VAT, or GST (calculated at checkout based on location). Cancel anytime. Upgrade or downgrade in one click.

Compare every plan

See what your client sees. Check it before you send.

Paste the HTML and see five inboxes, Outlook Classic included. No account needed.

Check your email, free

Why I built Emailens

Hi, I'm Philippe, and I build Emailens on my own.

I once spent three days working out why a welcome email looked perfect in Apple Mail and completely broken in Outlook. The fix was a single CSS property. The tools that show you this cost more than I could justify for a few emails, and I wanted one a freelancer could pay for without asking anyone.

AI didn't fix it. An assistant writes an email in seconds, but it never sees how that email looks in Outlook, and nothing hands the result back to be fixed. Emailens is that loop.

The open-source engine has been downloaded 35,000+ times, over half of that in the last month.

So I build Emailens with three things in mind:

  1. Affordable. Every plan simulates all 21 clients, starting free. Screenshots on real devices start at $19 a month, not hundreds.
  2. Open source. The engine, the CLI and the MCP server are on GitHub. Read the code, or run it yourself.
  3. Built for AI assistants. Claude or Cursor checks the email it just wrote and fixes what breaks, before you ever see it.