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
Showing a sample email until you paste your own.
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.
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-Postheader from RFC 8058. - A test send looks right in Gmail, Outlook and Apple Mail.
03Rates
The numbers it uses
| Item | Rate | Source |
|---|---|---|
| Gmail clips a message above | 102 KB of HTML | mailchimp.com |
| Gmail keeps style blocks up to Blocks past the limit are dropped. | 16,384 bytes in total | github.com |
| Gmail reads style blocks inside the body | No | caniemail.com |
| Gmail and Outlook.com load linked stylesheets | No | caniemail.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 Android | caniemail.com |
| Visible unsubscribe link and one-click unsubscribe | Marketing mail from senders of more than 5,000 a day to Gmail | support.google.com |
| One-click unsubscribe in transactional mail | Not required | support.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 .
- Mailchimp, Gmail is clipping my emailmailchimp.com/
help/ gmail-is-clipping-my-email/ - Klaviyo, Why is my email being clipped?help.klaviyo.com/
hc/ en-us/ articles/ 115000591251 - email-bugs, issue 41, where Gmail clips a messagegithub.com/
hteumeuleu/ email-bugs/ issues/ 41 - email-bugs, issue 90, how much style Gmail keepsgithub.com/
hteumeuleu/ email-bugs/ issues/ 90 - Can I email, the style elementcaniemail.com/
features/ html-style/ - Can I email, the link elementcaniemail.com/
features/ html-link/ - Can I email, @media (prefers-color-scheme)caniemail.com/
features/ css-at-media-prefers-color-scheme/ - Can I email, the form elementcaniemail.com/
features/ html-form/ - Litmus, The ultimate guide to dark mode for email marketerslitmus.com/
blog/ the-ultimate-guide-to-dark-mode-for-email-marketers - Google, Email sender guidelinessupport.google.com/
a/ answer/ 81126 - Google, Email sender guidelines FAQsupport.google.com/
a/ answer/ 14229414 - RFC 8058, Signaling one-click functionality for list email headersrfc-editor.org/
rfc/ rfc8058 - Customer.io docs, Custom preheader textdocs.customer.io/
journeys/ channels/ email/ headers/ custom-preheader-text/ - MDN, The iframe elementdeveloper.mozilla.org/
en-US/ docs/ Web/ HTML/ Reference/ Elements/ iframe - HTML Standard, the policy container of an about:srcdoc documenthtml.spec.whatwg.org/
multipage/ browsers.html#determining-navigation-params-policy-container - Maizzle docs, Configurationmaizzle.com/
docs/ development/ configuration - 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.