Skip to main content

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

Emailens

Selector or pseudo-class · data last changed 10 Nov 2026

:nth-child in email clients

Works in 6 of 21. Not supported in Gmail, Gmail Android, Gmail iOS and 11 more. Untested in Superhuman.

Your reader in Outlook Classic sees the email without :nth-child, even if it looks right where you tested it.

caniemail (MIT) via @emailens/engine 0.18.22

What to do instead in Outlook Classic

Decide the position when the email is built, not when it is read. Most templating languages give a loop index, so write the stripe straight onto the row: style="background-color:#f6f6f6" on every other <tr>, or the bgcolor attribute on its cells for Outlook Classic. The same goes for grids: give the last card in each row its own spacing inline. Keep :nth-child() only as a refinement for the clients that support it, never as the thing that makes a table readable.

There is no drop-in fix for :nth-child in Outlook Classic. Design so the email still reads without it.

The checker needs a computer screen.

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

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 →

:nth-child is not among the 24 features we have screenshotted on real installs. The ones we have →

All 21 clients, problems first

ClientSupport
Gmail Not supported
Gmail Android Not supported
Gmail iOS Not supported
Outlook 365 Not supported
Outlook (New) Not supported
Outlook Classic Not supported
Outlook iOS Not supported
Outlook Android Not supported
Outlook for Mac Not supported
Yahoo Mail Not supported See caveat 1
Yahoo Mail Android Not supported See caveat 1
Yahoo Mail iOS Not supported See caveat 1
Proton Mail Not supported
AOL Mail Not supported See caveat 1
Superhuman Untested
Works in 6: Apple Mail, Apple Mail iOS, Samsung Mail and 3 more. Show all
ClientSupport
Apple Mail Works
Apple Mail iOS Works
Samsung Mail Works
Thunderbird Works
HEY Mail Works
Fastmail Works

Caveats (1)

  1. 1. Yahoo Mail, Yahoo Mail Android, Yahoo Mail iOS, AOL Mail: Not supported. Removes the parenthesis part.

Caveats as recorded by caniemail (MIT), one entry per wording.

How :nth-child behaves

The :nth-child() selector picks elements by their position, which is how a web page stripes table rows or clears every third card. In email it only works in a minority of clients: Apple Mail, Samsung Email, Thunderbird, HEY and Fastmail. Gmail, every Outlook and Yahoo Mail ignore it, so a design that depends on it loses its stripes or its spacing for most readers.

  • No Outlook supports :nth-child(): not Outlook Classic, Outlook (New), Outlook 365 or the mobile apps, and not the new Outlook for Mac, which drops the rule (only the legacy Mac app applied it).
  • Gmail, on the web and in its apps, does not support it either.
  • Yahoo Mail and AOL remove the part in parentheses, so tr:nth-child(2n) arrives as tr:nth-child, a selector that no longer means what was written.

Questions

Does :nth-child work in Outlook?

No. Every current Outlook ignores it, Outlook for Mac included, so set alternating styles inline on each row instead.

How do I stripe table rows in an email without :nth-child?

Generate the stripe in the template: use the loop index to add style="background-color:..." (and bgcolor for Outlook Classic) to every other row. That works in every client.

Your next question

Every feature in Outlook Classic · All email CSS features · What real installs show

Get new email CSS fixes by email.

caniemail (MIT) via @emailens/engine 0.18.22 · tested upstream 19 Oct 2019 · data last changed 10 Nov 2026 · Outlook (New) cells are the engine's mapping