animation
CSS property · 5 supported, 1 partial, 9 unsupported across 15 clients
Client Support
| Client | Category | Engine | Support |
|---|---|---|---|
| Gmail | webmail | Gmail Web | Unsupported |
| Gmail Android | mobile | Gmail Mobile | Unsupported |
| Gmail iOS | mobile | Gmail Mobile | Unsupported |
| Outlook 365 | webmail | Outlook Web | Unsupported |
| Outlook (New) | desktop | Outlook Web | Unsupported |
| Outlook Classic | desktop | Microsoft Word | Unsupported |
| Outlook iOS | mobile | Outlook Mobile | Unsupported |
| Outlook Android | mobile | Outlook Mobile | Unsupported |
| Apple Mail | desktop | WebKit | Supported |
| Apple Mail iOS | mobile | WebKit | Supported |
| Yahoo Mail | webmail | Yahoo | Unsupported |
| Samsung Mail | mobile | Samsung | Supported |
| Thunderbird | desktop | Gecko | Supported |
| HEY Mail | webmail | WebKit | Supported |
| Superhuman | desktop | Blink | Partial |
Client-by-client behaviour for animation
Fully supports animation (5): Apple Mail, Apple Mail iOS, Samsung Mail, Thunderbird, HEY Mail.
Partial support (1): Superhuman. Expect rendering quirks unique to each engine — partial support typically means a subset of values, an ignored shorthand, or sanitizer-specific rewrites.
No support (9): Gmail, Gmail Android, Gmail iOS, Outlook 365, Outlook (New), Outlook Classic, Outlook iOS, Outlook Android, Yahoo Mail. Plan fallbacks for these clients before relying on animation in production sends.
Fixes & Workarounds
Gmail
UnsupportedCSS animations are not supported. Use animated GIFs instead.
Before
<style>
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
.badge { animation: pulse 2s infinite; }
</style>
<span class="badge">New!</span>After
<!-- Use an animated GIF for the effect -->
<img src="https://example.com/badge-animated.gif"
width="60" height="24" alt="New!"
style="display: inline-block; border: 0;" />Replace CSS animation with an animated GIF
Gmail Android
UnsupportedCSS animations are not supported. Use animated GIFs instead.
Before
<style>
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
.badge { animation: pulse 2s infinite; }
</style>
<span class="badge">New!</span>After
<!-- Use an animated GIF for the effect -->
<img src="https://example.com/badge-animated.gif"
width="60" height="24" alt="New!"
style="display: inline-block; border: 0;" />Replace CSS animation with an animated GIF
Gmail iOS
UnsupportedCSS animations are not supported. Use animated GIFs instead.
Before
<style>
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
.badge { animation: pulse 2s infinite; }
</style>
<span class="badge">New!</span>After
<!-- Use an animated GIF for the effect -->
<img src="https://example.com/badge-animated.gif"
width="60" height="24" alt="New!"
style="display: inline-block; border: 0;" />Replace CSS animation with an animated GIF
Outlook 365
UnsupportedCSS animations are not supported. Use animated GIFs instead.
Before
<style>
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
.badge { animation: pulse 2s infinite; }
</style>
<span class="badge">New!</span>After
<!-- Use an animated GIF for the effect -->
<img src="https://example.com/badge-animated.gif"
width="60" height="24" alt="New!"
style="display: inline-block; border: 0;" />Replace CSS animation with an animated GIF
Outlook (New)
UnsupportedCSS animations are not supported. Use animated GIFs instead.
Before
<style>
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
.badge { animation: pulse 2s infinite; }
</style>
<span class="badge">New!</span>After
<!-- Use an animated GIF for the effect -->
<img src="https://example.com/badge-animated.gif"
width="60" height="24" alt="New!"
style="display: inline-block; border: 0;" />Replace CSS animation with an animated GIF
Outlook Classic
UnsupportedCSS animations are not supported. Use animated GIFs instead.
Before
<style>
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
.badge { animation: pulse 2s infinite; }
</style>
<span class="badge">New!</span>After
<!-- Use an animated GIF for the effect -->
<img src="https://example.com/badge-animated.gif"
width="60" height="24" alt="New!"
style="display: inline-block; border: 0;" />Replace CSS animation with an animated GIF
Outlook iOS
UnsupportedCSS animations are not supported. Use animated GIFs instead.
Before
<style>
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
.badge { animation: pulse 2s infinite; }
</style>
<span class="badge">New!</span>After
<!-- Use an animated GIF for the effect -->
<img src="https://example.com/badge-animated.gif"
width="60" height="24" alt="New!"
style="display: inline-block; border: 0;" />Replace CSS animation with an animated GIF
Outlook Android
UnsupportedCSS animations are not supported. Use animated GIFs instead.
Before
<style>
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
.badge { animation: pulse 2s infinite; }
</style>
<span class="badge">New!</span>After
<!-- Use an animated GIF for the effect -->
<img src="https://example.com/badge-animated.gif"
width="60" height="24" alt="New!"
style="display: inline-block; border: 0;" />Replace CSS animation with an animated GIF
Yahoo Mail
UnsupportedCSS animations are not supported. Use animated GIFs instead.
Before
<style>
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
.badge { animation: pulse 2s infinite; }
</style>
<span class="badge">New!</span>After
<!-- Use an animated GIF for the effect -->
<img src="https://example.com/badge-animated.gif"
width="60" height="24" alt="New!"
style="display: inline-block; border: 0;" />Replace CSS animation with an animated GIF
Superhuman
PartialCSS animations are not supported. Use animated GIFs instead.
Before
<style>
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
.badge { animation: pulse 2s infinite; }
</style>
<span class="badge">New!</span>After
<!-- Use an animated GIF for the effect -->
<img src="https://example.com/badge-animated.gif"
width="60" height="24" alt="New!"
style="display: inline-block; border: 0;" />Replace CSS animation with an animated GIF
Production guidance for animation
animation is a CSS property. Across the email client matrix, 5 of 15 tracked clients support it fully, 1 only partially, and 9 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 animation 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 FreeSupport data last updated Apr 27, 2026 · synced from caniemail.com via @emailens/engine.