Skip to main content

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

Emailens

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

184 of 300 features work in Outlook iOS · 19 partial · 94 not supported · 3 untested. Its closest client, Outlook Android, agrees on 270 of the 296 features both are tested on.

Works 184 · Partial 19 · Not supported 94 · Untested 3 · of 300

Outlook Mobile · mobile · prefers-color-scheme: works

The checker needs a computer screen.

See what breaks ↓

Outlook iOS 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

What to write instead

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

text-shadow

The fix for Outlook iOS

Use font-weight or border-bottom as alternatives to text-shadow

after
.glow {
  /* text-shadow is not supported in Gmail, Outlook, Yahoo.
     Use font-weight or letter-spacing for emphasis instead. */
  font-weight: bold;
  letter-spacing: 0.5px;
}
Show the original
before
.glow {
  text-shadow: 0 0 10px rgba(255, 255, 255, 0.5);
}

The checker needs a computer screen.

transform

The fix for Outlook iOS

Pre-render transformed states as images or use table layout

The engine still flags this in the fix: An image points to an address no inbox can load (rotated-content.png), so Outlook iOS shows a broken image instead.

after
<!-- Pre-render rotated content as an image -->
<img src="rotated-content.png" width="200" height="200"
  alt="Rotated content"
  style="display: block; border: 0;" />
Show the original
before
<div style="transform: rotate(45deg);">
  Rotated content
</div>

The checker needs a computer screen.

<svg>

The fix for Outlook iOS

Convert inline SVG to an image for email compatibility

after
<img src="https://example.com/icon.png"
  width="24" height="24" alt="Icon"
  style="display: block; border: 0;" />
Show the original
before
<svg width="24" height="24" viewBox="0 0 24 24">
  <path d="M12 2L2 7l10 5 10-5-10-5z" fill="#6d28d9"/>
</svg>

The checker needs a computer screen.

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

The checker needs a computer screen.

Dark mode in Outlook iOS

Live preview: Outlook iOS applies partial color inversion in dark mode.

How to target Outlook iOS

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

css
[data-ogsc] .your-class-name {
  /* Replace this comment with your styles */
}

When changing a color style in dark mode, Outlook will add data-ogsc to the element.

No longer works (2)
css
body[data-outlook-cycle] .your-class-name {
  /* Replace this comment with your styles */
}
css
.olm-fragment-custom .your-class-name {
  /* Replace this comment with your styles */
}

Build one for several clients →

Every feature in Outlook iOS

Show

HTML Elements · 14 of 48 not supported or partial here

HTML Attributes · 6 of 22 not supported or partial here

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

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

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

  • ::after Partial. Partial Works in 6 of 21
  • ::before Partial. Partial Works in 6 of 21
  • ::first-letter Partial. Partial Works in 10 of 21
  • ::first-line Partial. Partial Works in 10 of 21
  • ::marker Not supported Works in 10 of 21
  • ::placeholder The pseudo-element is supported but <input> elements are not. Partial Works in 9 of 21

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

CSS Functions · 8 of 8 not supported or partial here

CSS Properties · 60 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