Skip to main content

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

Emailens

Outlook Classic email CSS: what breaks, and what to write instead

51 of 300 features work in Outlook Classic · 26 partial · 222 not supported · 1 untested. Of the 222 not supported, 56 work in at least 14 of the other 20 clients.

Works 51 · Partial 26 · Not supported 222 · Untested 1 · of 300

Microsoft Word · desktop · prefers-color-scheme: not supported · Being replaced by Outlook (New) · What changes for HTML email

The checker needs a computer screen.

See what breaks ↓

Outlook Classic is one of the five clients the checker runs with no 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 Outlook Classic is the outlier

56 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 Outlook Classic without them.

All 56

Outlook Classic on real installs

The Emailens probe for each feature, captured on Outlook Classic's own installs, next to the Emailens live preview of Outlook Classic.

What to write instead

19 features Outlook Classic does not fully support have a written fix. See them in the table ↓

display:flex

The fix for Outlook Classic

Use table layout as fallback for flexbox in Outlook

after
<!--[if mso]>
<table role="presentation" width="100%" cellpadding="0"
  cellspacing="0" border="0"><tr>
  <td width="50%" valign="top">Column 1</td>
  <td width="50%" valign="top">Column 2</td>
</tr></table>
<![endif]-->
<!--[if !mso]><! -->
<div style="display: flex; gap: 16px;">
  <div style="flex: 1;">Column 1</div>
  <div style="flex: 1;">Column 2</div>
</div>
<!-- <![endif]-->
Show the original
before
<div style="display: flex; gap: 16px;">
  <div style="flex: 1;">Column 1</div>
  <div style="flex: 1;">Column 2</div>
</div>

The checker needs a computer screen.

display:grid

The fix for Outlook Classic

Replace CSS Grid with table layout for email compatibility

after
<table role="presentation" width="100%" cellpadding="0"
  cellspacing="0" border="0">
  <tr>
    <td width="50%" style="padding: 8px;" valign="top">
      Item 1
    </td>
    <td width="50%" style="padding: 8px;" valign="top">
      Item 2
    </td>
  </tr>
</table>
Show the original
before
<div style="display: grid;
            grid-template-columns: 1fr 1fr; gap: 16px;">
  <div>Item 1</div>
  <div>Item 2</div>
</div>

The checker needs a computer screen.

border-spacing

The fix for Outlook Classic

Use the cellspacing HTML attribute instead of border-spacing CSS

after
<table cellspacing="8" style="border-collapse: separate;">
  <tr><td>Cell</td></tr>
</table>
Show the original
before
<table style="border-spacing: 8px; border-collapse: separate;">
  <tr><td>Cell</td></tr>
</table>

The checker needs a computer screen.

Paste your email and see what Outlook Classic does to it.

The checker needs a computer screen.

Dark mode in Outlook Classic

Live preview: Outlook Classic applies full color inversion in dark mode. Colors may shift unexpectedly.

How to target Outlook Classic

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

css
<!--[if mso | ie]>
Target Outlook Windows
<![endif]-->

<!--[if true]>
Target Outlook Windows
<![endif]-->

<!--[if false]>
Hide from all Outlook Windows
<![endif]-->

<!--[if !mso]><!-->
Hide from all Outlook Windows 
<!--<![endif]-->
This will also hide content from t-online.de - see below for fix.

<!--[if !mso]><! -->
Only Hide from Outlook Windows
<!-- <![endif]-->
** Note the space after the ! above ^ **
If no space is used the comment will hide the content from t-online.de


<span style="mso-element:field-begin;"></span>
 Content to hide from Outlook 
<span style="mso-element:field-end;"></span>

<!--[if mso 12 | mso 14 | mso 15 ]>
Target Outlook 2007/10/13
<![endif]-->

<!--[if mso 12]>
Target Outlook 2007
<![endif]-->

<!--[if mso 14]>
Target Outlook 2010
<![endif]-->

<!--[if mso 15]>
Target Outlook 2013
<![endif]-->

<!--[if mso 16]>
Outlook 2016 and up
Also Windows mail
<![endif]-->

Using the above comment and the different elements we can target specific Outlooks.

No longer works (1)
css
@media (min-resolution: 1dpi) {
  body[data-outlook-cycle] .your-class-name {
    display: block!important;
  }
}

Build one for several clients →

Before you send to Outlook Classic

  • Always test in real Outlook 2016/2019, browser-based previews do not capture every Word quirk.
  • Check at 100% and 125% Windows display scaling to catch DPI-induced layout breaks.
  • Verify that VML fallbacks render correctly when Microsoft's image-blocking is on; some VML elements depend on referenced images.

The live preview follows Word's rendering rules, but some quirks only show in the real app.

Every account includes one free real-device check in classic Outlook, Outlook for Mac and Apple Mail, after you verify your email and run one preview, while this month's free capacity lasts. How real-device checks work →

Every feature in Outlook Classic

Show

HTML Elements · 31 of 48 not supported or partial here

HTML Attributes · 17 of 22 not supported or partial here

HTML & Email Structure · 5 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 · 8 of 8 not supported or partial here

  • calc Not supported Works in 8 of 21
  • clamp Not supported Works in 6 of 21
  • conic-gradient Not supported Works in 6 of 21
  • fit-content Not supported Works in 11 of 21
  • linear-gradient Gradients can be created in VML using type="gradient" on a <v:fill>. Not supported Works in 9 of 21
  • max Not supported Works in 6 of 21
  • min Not supported Works in 6 of 21
  • radial-gradient Gradients can be created in VML using type="gradientRadial" on a <v:fill>. Not supported Works in 10 of 21

CSS Properties · 144 of 164 not supported or partial here

How Outlook Classic renders email

Outlook Classic (2007-2021) uses Microsoft Word's rendering engine instead of a browser engine. Flexbox, grid, border-radius, CSS animations, background images and dozens of other properties are not supported, and a property Word does not support is removed without a warning. Microsoft is replacing it with New Outlook, which renders with a web engine.

display: flex / grid
Completely ignored. Word has no concept of CSS layout modes. Use nested <table> elements for all layout.
border-radius
border-radius is not supported in Outlook Classic; rounded corners render square. Use VML (Vector Markup Language) inside conditional comments for rounded buttons.
background-image (CSS)
CSS background images are stripped. Use <v:rect> VML inside <!--[if mso]> conditionals for background images.
max-width
Works only on <table> elements. On a <div> it is ignored, so a centered 600px layout needs a table, or an MSO conditional table around it.
margin: auto
Unreliable for centering. Use align="center" on the parent <table> instead.
  • Word's rendering engine treats unknown CSS properties as a silent no-op. There are no errors, no warnings, your gradient hero simply renders as a solid background-color, your rounded button as a sharp rectangle.
  • DPI scaling is 96 by default but is multiplied at the OS level by user accessibility settings. A 600px-wide email can render at 750 effective pixels on a 125% scaling configuration, breaking pixel-perfect designs.
  • Conditional comments (<!--[if mso]>...<![endif]-->) are the most reliable mechanism for Outlook-specific overrides, since they target only the Word renderer without affecting modern clients.
  • VML (Vector Markup Language) can draw rounded buttons, gradient backgrounds, and even simple SVG-like shapes inside Outlook. The syntax is verbose but well-documented in the email-development community.

Guides for Outlook Classic

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