Skip to main content
CSS Properties

visibility

CSS property · 10 supported, 0 partial, 5 unsupported across 15 clients

Client Support

ClientCategoryEngineSupport
GmailwebmailGmail WebUnsupported
Gmail AndroidmobileGmail MobileUnsupported
Gmail iOSmobileGmail MobileUnsupported
Outlook 365webmailOutlook WebSupported
Outlook (New)desktopOutlook WebUnsupported
Outlook ClassicdesktopMicrosoft WordUnsupported
Outlook iOSmobileOutlook MobileSupported
Outlook AndroidmobileOutlook MobileSupported
Apple MaildesktopWebKitSupported
Apple Mail iOSmobileWebKitSupported
Yahoo MailwebmailYahooSupported
Samsung MailmobileSamsungSupported
ThunderbirddesktopGeckoSupported
HEY MailwebmailWebKitSupported
SuperhumandesktopBlinkSupported

Client-by-client behaviour for visibility

Fully supports visibility (10): Outlook 365, Outlook iOS, Outlook Android, Apple Mail, Apple Mail iOS, Yahoo Mail, Samsung Mail, Thunderbird, HEY Mail, Superhuman.

No support (5): Gmail, Gmail Android, Gmail iOS, Outlook (New), Outlook Classic. Plan fallbacks for these clients before relying on visibility in production sends.

Fixes & Workarounds

Gmail

Unsupported

Remove the element or use display:none as an alternative.

Before

<div style="visibility: hidden;">
  Hidden content for screen readers
</div>

After

<!-- For screen readers, use font-size: 0 trick -->
<div style="font-size: 0; max-height: 0; overflow: hidden;
            mso-hide: all;" aria-hidden="true">
  Preheader text
</div>

Use conditional comments or remove hidden content

Gmail Android

Unsupported

Remove the element or use display:none as an alternative.

Before

<div style="visibility: hidden;">
  Hidden content for screen readers
</div>

After

<!-- For screen readers, use font-size: 0 trick -->
<div style="font-size: 0; max-height: 0; overflow: hidden;
            mso-hide: all;" aria-hidden="true">
  Preheader text
</div>

Use conditional comments or remove hidden content

Gmail iOS

Unsupported

Remove the element or use display:none as an alternative.

Before

<div style="visibility: hidden;">
  Hidden content for screen readers
</div>

After

<!-- For screen readers, use font-size: 0 trick -->
<div style="font-size: 0; max-height: 0; overflow: hidden;
            mso-hide: all;" aria-hidden="true">
  Preheader text
</div>

Use conditional comments or remove hidden content

Outlook (New)

Unsupported

Remove the element or use display:none as an alternative.

Before

<div style="visibility: hidden;">
  Hidden content for screen readers
</div>

After

<!-- For screen readers, use font-size: 0 trick -->
<div style="font-size: 0; max-height: 0; overflow: hidden;
            mso-hide: all;" aria-hidden="true">
  Preheader text
</div>

Use conditional comments or remove hidden content

Outlook Classic

Unsupported

Remove the element or use display:none as an alternative.

Before

<div style="visibility: hidden;">
  Hidden content for screen readers
</div>

After

<!-- For screen readers, use font-size: 0 trick -->
<div style="font-size: 0; max-height: 0; overflow: hidden;
            mso-hide: all;" aria-hidden="true">
  Preheader text
</div>

Use conditional comments or remove hidden content

Production guidance for visibility

visibility is a CSS property. Across the email client matrix, 10 of 15 tracked clients support it fully, 0 only partially, and 5 not at all. The clients most likely to require a workaround for this feature are Gmail, Gmail Android, Gmail iOS. Each of them needs a tailored fallback — see the per-client examples above for the specific code fix Emailens recommends.

When in doubt, ship a baseline that renders without visibility and treat it as progressive enhancement on clients where support is verified. Emailens automatically detects cross-client divergence on this feature when you preview an email, so you can see exactly which template paths break before a campaign goes out.

Related Features

Test your email across all 15 clients

Preview rendering, catch CSS issues, and get actionable fixes — free.

Try Emailens Free

Support data last updated Apr 27, 2026 · synced from caniemail.com via @emailens/engine.