Skip to content

HTML Email Preview: Desktop, Mobile and Dark Mode

A free HTML email preview: see your email at desktop and mobile widths in light, dark and forced dark, with checks for Gmail clipping, alt text and links.

  • Runs in your browser
  • Loads remote images when you ask

Checked

01Tool

Tool

Paste it, or drop an .html file here

Showing a sample email until you paste your own.

Width
Colours
Show

Each image’s host sees your IP address, and a tracking pixel counts an open. Only https images load.

The preview appears once the page has loaded.

Light: the rules inside @media (prefers-color-scheme: dark) stay off, whatever your system uses.

The HTML stays in this tab. Nothing is uploaded, stored or put in the address. The preview never fetches stylesheets or fonts, and loads remote images only while you have them switched on.

02Guide

How it works

A browser preview is a first pass

Email clients don't render HTML the way browsers do. Each one strips, rewrites or ignores parts of it. This tool renders your HTML with your browser's engine inside a sandboxed frame, then checks what the markup alone can tell: size, styles, images, links and text. That catches the mistakes every client shows. It can't reproduce one particular client, so send the final version to real Gmail, Outlook and Apple Mail inboxes before it reaches customers.

Dark mode is two different things

Some clients honour @media (prefers-color-scheme: dark). Can I email lists Apple Mail, Outlook.com and the Outlook apps for Mac, iOS and Android among them. They apply your dark rules and leave the rest of the design alone. Other clients ignore the query and recolour the message themselves. Litmus sorts those into partial inversion, which darkens light backgrounds, and full inversion, which changes dark ones too, and puts the Gmail app on iOS in the second group.

A design has to survive both. Dark rules that recolour only some of it leave the rest light, and an app that inverts the message also flips the colours you picked for contrast while leaving images alone, so a dark logo on a transparent background disappears. Declare <meta name="color-scheme" content="light dark"> only once your dark rules cover the whole design: it tells clients the email supports dark mode, and the ones that honour it turn the default page and text colours dark as well.

Images, alt text and tracking pixels

Remote images start as grey boxes here, drawn at their width and height attributes with the alt text inside, so the preview doubles as the view a reader with images off gets. If the message still makes sense in it, it works for them. Give every image an alt attribute: a short description, or alt="" for spacers and decoration, which screen readers then skip. A width attribute keeps the layout steady in clients that ignore CSS sizes.

Switch on Load remote images to see the real ones. The preview then keeps https images in img elements, picture sources, background attributes and CSS backgrounds, borders and list markers. It still drops http images, fonts, stylesheets and every other file. Each host sees your request as it would a reader's, so a tracking pixel in the email counts an open. The frame inherits this page's Content Security Policy, which lets https images through on this page, so the preview also gives the frame a policy of its own: inline images only while the switch is off, and https images too while it is on. The switch starts off each time you open the page and never goes into the address.

Size, styles and what Gmail drops

When Gmail clips a message it hides the end, which usually holds the unsubscribe link, the postal address and the open pixel. It measures the message as it arrives, with any click-tracking links your sending service swapped in, so a message that passes here with little room can still clip. Inline the styles that matter and keep only media queries in a short <style> in the head. The table below gives each limit Gmail and Outlook.com apply and where it comes from.

Preview a Maizzle email

Preview the built file, not the template: Maizzle turns your classes into inline styles during the build, so the source holds classes no client understands. Drop a file from the output folder, dist by default, on the editor. If your sending service adds a footer or tracking, also preview the HTML of a message you sent to yourself.

Before you send

  • The preheader reads well beside the subject line.
  • Every image has alt text, and the message makes sense with images off.
  • Every link uses https and goes where its text says.
  • The design is readable in both the Dark and Forced dark views.
  • Marketing mail has a visible unsubscribe link and the one-click List-Unsubscribe-Post header from RFC 8058.
  • A test send looks right in Gmail, Outlook and Apple Mail.

03Rates

The numbers it uses

ItemRateSource
Gmail clips a message above 102 KB of HTMLmailchimp.com
Gmail keeps style blocks up to Blocks past the limit are dropped.16,384 bytes in totalgithub.com
Gmail reads style blocks inside the body Nocaniemail.com
Gmail and Outlook.com load linked stylesheets Nocaniemail.com
Clients that honour prefers-color-scheme Not Gmail, Yahoo Mail or classic Outlook for Windows.Apple Mail, Samsung Email, Outlook.com, and Outlook for Mac, iOS and Androidcaniemail.com
Visible unsubscribe link and one-click unsubscribe Marketing mail from senders of more than 5,000 a day to Gmailsupport.google.com
One-click unsubscribe in transactional mail Not requiredsupport.google.com

04Questions

Questions

How do I preview an HTML email in dark mode?
Paste the HTML and pick Dark. That view applies your prefers-color-scheme dark rules, which is what Apple Mail, Outlook.com and the Outlook apps do. Forced dark approximates apps that recolour the message themselves, such as the Gmail app on iOS. Check those apps too, because each one recolours differently.
Why are remote images grey boxes?
Loading them would make your browser contact every image host, and a tracking pixel would record an open. So before the frame renders anything, the preview swaps each remote or relative image for a grey box of the same size with its alt text inside. Images embedded as data URLs still render. Switch on Load remote images to load the https ones from their hosts. The switch is off each time you open the page, and fonts, stylesheets and other files stay blocked either way.
Does this tool send my email anywhere?
No. The HTML is parsed and rendered in this tab, and it never goes into the address or into browser storage. The page sends no request with it. The only requests it can cause are for the email's https images, after you switch on Load remote images. Closing the tab discards it.
Will my email look the same in Gmail and Outlook?
Not exactly. Gmail ignores <style> inside the body and caps how much CSS it keeps, classic Outlook for Windows ignores prefers-color-scheme and forms, and each app treats dark mode its own way. This preview uses your browser's engine, so treat it as a first pass and send the final version to the clients your readers use.
How do I preview a Maizzle email template?
Run npx maizzle build and paste a file from the output folder, which is dist unless output.path says otherwise. The build inlines your CSS, so the built file is much closer to what you send than the template source.
Why don't scripts or links work in the preview?
The frame is sandboxed with no permissions, so scripts don't run, forms don't submit and nothing can open a window or navigate. Links keep their look and show their address on hover, and the link list under the checks shows every URL.

05Sources

Sources

Every fact on this page was read from these pages on .

  1. Mailchimp, Gmail is clipping my emailmailchimp.com/help/gmail-is-clipping-my-email/
  2. Klaviyo, Why is my email being clipped?help.klaviyo.com/hc/en-us/articles/115000591251
  3. email-bugs, issue 41, where Gmail clips a messagegithub.com/hteumeuleu/email-bugs/issues/41
  4. email-bugs, issue 90, how much style Gmail keepsgithub.com/hteumeuleu/email-bugs/issues/90
  5. Can I email, the style elementcaniemail.com/features/html-style/
  6. Can I email, the link elementcaniemail.com/features/html-link/
  7. Can I email, @media (prefers-color-scheme)caniemail.com/features/css-at-media-prefers-color-scheme/
  8. Can I email, the form elementcaniemail.com/features/html-form/
  9. Litmus, The ultimate guide to dark mode for email marketerslitmus.com/blog/the-ultimate-guide-to-dark-mode-for-email-marketers
  10. Google, Email sender guidelinessupport.google.com/a/answer/81126
  11. Google, Email sender guidelines FAQsupport.google.com/a/answer/14229414
  12. RFC 8058, Signaling one-click functionality for list email headersrfc-editor.org/rfc/rfc8058
  13. Customer.io docs, Custom preheader textdocs.customer.io/journeys/channels/email/headers/custom-preheader-text/
  14. MDN, The iframe elementdeveloper.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/iframe
  15. HTML Standard, the policy container of an about:srcdoc documenthtml.spec.whatwg.org/multipage/browsers.html#determining-navigation-params-policy-container
  16. Maizzle docs, Configurationmaizzle.com/docs/development/configuration
  17. Maizzle docs, CLImaizzle.com/docs/cli

Found something out of date? Tell us.

Nuxter

Building a SaaS on Nuxt?

Nuxter's emails are Vue templates that Maizzle compiles to inlined HTML when the app builds, sent through Cloudflare Email Service or Resend. Its product and marketing mail carries one-click List-Unsubscribe headers by itself.

See what Nuxter includesFrom $249, one-time.