Gmail vs Outlook Classic: CSS Support Differences
Gmail renders with Gmail Web; Outlook Classic renders with Microsoft Word. The gap runs almost entirely one way: 87 features work in Gmail and break in the other, against 3 in the reverse direction. Build for the stricter one and the permissive one follows.
Support data derived from caniemail.com (MIT) - last synced Nov 10, 2026 - engine data v0.18.22
A browser against a word processor
Gmail on the web renders a sanitised copy of your HTML in the browser. Outlook Classic hands it to Microsoft Word. That is why the gap runs one way: Word rejects most of what a browser accepts, while Gmail's own restrictions are mostly about what it strips before rendering.
What sets this pair apart from Outlook on the web vs Outlook Classic is the modern sizing and colour Gmail keeps: calc(), clamp(), min() and max(), linear and radial gradients, AMP for Email and BIMI logos all work in Gmail and fail in Outlook Classic, and none of them work in Outlook on the web either. A layout that sizes itself with clamp() is a Gmail-only layout.
The few features that run the other way are about where styles come from. Outlook Classic reads an external stylesheet through <link> or @import; Gmail removes both, so any rule that lives only in an external file never reaches a Gmail reader.
Building for both
- Use tables, inline styles and bgcolor attributes as the base. Both clients read them.
- Add gradients, rounded corners and fluid sizing as enhancements, with a solid colour or fixed width underneath for Outlook Classic.
- Put Outlook-only fixes in <!--[if mso]> comments. Gmail ignores what is inside, but the bytes still count toward the 102KB at which Gmail clips a message, so VML and ghost tables have a size cost in the other client.
- Keep every style inline or in a <style> block in the head. Nothing in an external stylesheet reaches Gmail.
46
work in both
the safe intersection
87
only in Gmail
breaks in Outlook Classic
3
only in Outlook Classic
breaks in Gmail
37
partial on one side
renders, with caveats
Works in Gmail, breaks in Outlook Classic
Each of these needs a fallback if the send reaches both.
- <abbr>
- <acronym>
- <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">
- <select>
- <textarea>
- <wbr>
- [aria-hidden]
- [aria-label]
- [aria-live]
- [background]
- [role]
- @media orientation
- amp4email
- background-blend-mode
- background-clip
- background-image
- background-origin
- background-position
- background-repeat
- background-size
- bimi
- border-radius
- border-spacing
- box-sizing
- calc
- caption-side
- clamp
- clear
- column-count
- columns
- doctype
- empty-cells
- fit-content
- float
- font-kerning
- font-size-adjust
- font-stretch
- image-maps
- linear-gradient
- list-style-position
- max
- max-height
- min
- min-height
- min-width
- mix-blend-mode
- object-fit
- object-position
- opacity
- outline
- radial-gradient
- system-ui
- table-layout
- text-align-last
- text-decoration-color
- text-decoration-line
- text-decoration-style
- text-emphasis
- text-orientation
- text-overflow
- text-underline-position
- unit-ch
- unit-rem
- unit-vh
- unit-vmax
- unit-vmin
- unit-vw
- white-space
- word-break
- word-spacing
- writing-mode
- :adjacent-sibling
- :chaining
- :child-combinator
- :general-sibling
- :hover
- :universal-selector
- display:flex
- display:grid
Works in Outlook Classic, breaks in Gmail
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>
- <dfn>
- <style>
- <ul>
- [dir]
- [height]
- [target]
- [width]
- @media
- !important
- background
- border
- display
- font-size
- font-weight
- gap
- height
- html5-semantics
- letter-spacing
- line-height
- list-style
- margin
- max-width
- overflow
- padding
- rgb
- rgba
- text-align
- text-decoration
- text-indent
- text-justify
- text-transform
- unit-initial
- width
- :attribute-selector
- display:none
A further 126 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 299.
1 of 300 features have no confident data point for at least one of these clients, so they are excluded from every count above rather than assumed either way.
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 76
- HTML Elements 20
- HTML Attributes 9
- Pseudo-Classes & Selectors 8
- CSS Functions 7
- HTML & Email Structure 4
22 of these already have a fix
Each links to a copy-paste snippet that keeps the feature working in Outlook Classic without dropping it in Gmail.
Check your own HTML against both
Paste your email
Questions
- Does Outlook-only VML code affect Gmail?
- It does not render there, because Gmail skips conditional comments. It still adds to the message size, and Gmail clips anything over 102KB behind a 'View entire message' link. Heavy VML fallbacks for Outlook Classic are a common reason a Gmail send gets clipped.
- Which of the two should I test first?
- Outlook Classic. Far more features work in Gmail and break in Outlook Classic than the reverse, so an email that holds up in Word usually holds up in Gmail. The exceptions are styles that only exist in an external stylesheet.
- How different are Gmail and Outlook Classic?
- They disagree on 127 of the 299 features verified in both clients, or 42%. 46 features render in both and are the safe intersection to build on.
- What works in Gmail but not Outlook Classic?
- 87 features, including <abbr>, <acronym>, <button type="reset">, <button type="submit">, <form> and 82 more. Each needs a fallback if the send reaches both clients.
- Which engines are these two clients using?
- Gmail renders with Gmail Web; Outlook Classic renders with Microsoft Word. 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.18.22 and last synced Nov 10, 2026. That sync date is not a test date: caniemail's own per-feature tests run from Feb 28, 2019 to Sep 16, 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.
Check your email, freeNo signup · Five clients free, Outlook Classic included · All 21 with an account