Proton Mail vs Gmail: CSS Support Differences
Proton Mail renders with Proton; Gmail renders with Gmail Web. Both clients break features the other renders, on 43% of the 298 features verified in both. There is no "stricter" client here to build against, so the safe set is the 120-feature intersection.
Support data derived from caniemail.com (MIT) - last synced Sep 2, 2026 - engine data v0.12.2
120
work in both
the safe intersection
71
only in Proton Mail
breaks in Gmail
27
only in Gmail
breaks in Proton Mail
30
partial on one side
renders, with caveats
Works in Proton Mail, breaks in Gmail
Each of these needs a fallback if the send reaches both.
- <bdi>
- <meter>
- <progress>
- <rp>
- <rt>
- <ruby>
- <svg>
- [aria-describedby]
- [aria-labelledby]
- [hidden]
- [popover]
- @media hover
- align-items
- aspect-ratio
- backdrop-filter
- block-size
- border-image
- border-inline
- border-inline-individual
- border-inline-longhand
- border-radius-logical
- bottom
- box-shadow
- clip-path
- conic-gradient
- custom-properties
- filter
- flex-direction
- flex-wrap
- grid-template-columns
- hyphenate-character
- hyphenate-limit-chars
- hyphens
- inline-size
- justify-content
- left
- margin-block-start-end
- margin-inline-block
- margin-inline-start-end
- max-block-size
- max-inline-size
- min-block-size
- min-inline-size
- orphans
- outline-offset
- padding-block-start-end
- padding-inline-block
- padding-inline-start-end
- position
- pseudo-class-active
- right
- scroll-snap
- shape-margin
- shape-outside
- tab-size
- text-decoration-skip-ink
- text-decoration-thickness
- text-emphasis-position
- text-shadow
- text-underline-offset
- text-wrap
- top
- transform
- visibility
- white-space-collapse
- widows
- z-index
- :focus
- :focus-visible
- :focus-within
- :lang
Works in Gmail, breaks in Proton Mail
- <button type="reset">
- <button type="submit">
- <form>
- <input type="checkbox">
- <input type="hidden">
- <input type="radio">
- <input type="reset">
- <input type="submit">
- <input type="text">
- @media orientation
- amp4email
- anchor-links
- bimi
- doctype
- image-maps
- min-height
- text-decoration
- :adjacent-sibling
- :chaining
- :child-combinator
- :class-selector
- :descendant-combinator
- :general-sibling
- :grouping
- :id-selector
- :type-selector
- :universal-selector
Partial on one side
These render in both, but one client applies caveats the other does not. They fail quietly, which makes them the expensive ones.
- <base>
- <body>
- <marquee>
- <style>
- <textarea>
- <ul>
- [align]
- @media
- @media prefers-reduced-motion
- !important
- cursor
- gap
- html5-semantics
- light-dark
- list-style
- mailto-links
- margin
- mask-image
- nesting
- overflow
- overflow-wrap
- rgb
- rgba
- system-ui
- text-indent
- text-justify
- unit-initial
- user-select
- word-break
- :attribute-selector
A further 50 features render in neither client. Not a difference between them, but the other half of the answer to what you can actually use, so the four counts above deliberately do not sum to 298.
Where the divergence sits
Two pairs with the same headline number can be different problems. For these two it concentrates in CSS Properties.
- CSS Properties 74
- HTML Elements 22
- Pseudo-Classes & Selectors 16
- HTML & Email Structure 6
- HTML Attributes 5
- CSS At-Rules 4
12 of these already have a fix
Each links to a copy-paste snippet that keeps the feature working in Gmail without dropping it in Proton Mail.
Check your own HTML against both
Check your own HTML
Paste your own, or run the sample below. Analyzed in this page, with no signup and nothing stored.
Questions
- How different are Proton Mail and Gmail?
- They disagree on 128 of the 298 features verified in both clients, or 43%. 120 features render in both and are the safe intersection to build on.
- What works in Proton Mail but not Gmail?
- 71 features, including <bdi>, <meter>, <progress>, <rp>, <rt> and 66 more. Each needs a fallback if the send reaches both clients.
- Which engines are these two clients using?
- Proton Mail renders with Proton; Gmail renders with Gmail Web. Where two clients share an engine the divergence is usually configuration, and where they do not it is the engine itself.
- Is this measured in the real clients?
- No. These are documented support levels derived from caniemail.com (MIT-licensed), carried in @emailens/engine data version 0.12.2 and last synced Sep 2, 2026. That sync date is not a test date: caniemail's own per-feature tests run from Feb 28, 2019 to Jul 13, 2026. Anything described as a transform is applied per those documented rules rather than captured from a real client.
Test your email in Gmail, Outlook and Apple Mail
Preview rendering, catch CSS issues, and see what Outlook does to your VML. Free, no account. All 21 clients with one.
Instant live preview · No signup required · 21 email engines