Skip to main content

Our email CSS engine is open source. Give it a star on GitHub 

Emailens

Proton Mail email CSS: what breaks, and what to write instead

200 of 300 features work in Proton Mail · 18 partial · 82 not supported. Of the 82 not supported, 17 work in at least 14 of the other 20 clients.

Works 200 · Partial 18 · Not supported 82 · Untested 0 · of 300

Proton · webmail · prefers-color-scheme: not supported

The checker needs a computer screen.

See what breaks ↓

Proton Mail opens with a free account.

A free account opens all 21 clients and keeps your checks for 7 days. Create a free account →

@emailens/engine 0.18.22 · data last changed 10 Nov 2026

Where Proton Mail is the outlier

17 features work in at least 14 of the other 20 clients and are not supported here.

So an email that looks right in most clients can reach your reader in Proton Mail without them.

All 17

What works in Proton Mail and breaks elsewhere

54 features work in Proton Mail and in 6 or fewer of the other 20 clients, so they need a fallback.

All 54

What to write instead

4 features Proton Mail does not fully support have a written fix. See them in the table ↓

<form>

The fix for Proton Mail

Replace embedded form with a link to a hosted form

The engine still flags this in the fix: Proton Mail does not support "text-decoration".

after
<table role="presentation" cellpadding="0" cellspacing="0">
  <tr>
    <td style="background-color: #6d28d9; border-radius: 6px;
               padding: 12px 32px;">
      <a href="https://example.com/subscribe"
        style="color: #fff; text-decoration: none;
               font-family: Arial, sans-serif;
               font-weight: bold;">
        Subscribe Now
      </a>
    </td>
  </tr>
</table>
Show the original
before
<form action="/subscribe" method="POST">
  <input type="email" placeholder="Email" />
  <button type="submit">Subscribe</button>
</form>

The checker needs a computer screen.

animation

The fix for Proton Mail

Replace CSS animation with an animated GIF

after
<!-- Use an animated GIF for the effect -->
<img src="https://example.com/badge-animated.gif"
  width="60" height="24" alt="New!"
  style="display: inline-block; border: 0;" />
Show the original
before
<style>
  @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
  .badge { animation: pulse 2s infinite; }
</style>
<span class="badge">New!</span>

The checker needs a computer screen.

<video>

The fix for Proton Mail

Replace video with animated GIF or linked thumbnail

after
<a href="https://example.com/watch" target="_blank">
  <img src="https://example.com/video-thumb.gif"
    width="600" alt="Watch the video"
    style="display: block; border: 0; max-width: 100%;" />
</a>
Show the original
before
<video width="600" autoplay muted>
  <source src="demo.mp4" type="video/mp4">
</video>

The checker needs a computer screen.

Paste your email and see what Proton Mail does to it.

The checker needs a computer screen.

Dark mode in Proton Mail

How to target Proton Mail

Selectors that single out Proton Mail, from the community list the engine ships (howtotarget.email). Copy one and replace .your-class-name.

css
#proton-root .your-class-name {
  /* Replace this comment with your styles */
}

Build one for several clients →

Every feature in Proton Mail

Show

HTML Elements · 20 of 48 not supported or partial here

HTML Attributes · 6 of 22 not supported or partial here

HTML & Email Structure · 6 of 8 not supported or partial here

CSS At-Rules · 9 of 10 not supported or partial here

Pseudo-Elements · 6 of 6 not supported or partial here

Pseudo-Classes & Selectors · 28 of 34 not supported or partial here

CSS Functions · 0 of 8 not supported or partial here

CSS Properties · 25 of 164 not supported or partial here

Get new email CSS fixes by email.

caniemail (MIT) via @emailens/engine 0.18.22 · data last changed 10 Nov 2026