position
CSS property · 1 supported, 8 partial, 6 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 | Partial |
| Outlook (New) | desktop | Outlook Web | Unsupported |
| Outlook Classic | desktop | Microsoft Word | Unsupported |
| Outlook iOS | mobile | Outlook Mobile | Unsupported |
| Outlook Android | mobile | Outlook Mobile | Partial |
| Apple Mail | desktop | WebKit | Partial |
| Apple Mail iOS | mobile | WebKit | Partial |
| Yahoo Mail | webmail | Yahoo | Partial |
| Samsung Mail | mobile | Samsung | Partial |
| Thunderbird | desktop | Gecko | Supported |
| HEY Mail | webmail | WebKit | Partial |
| Superhuman | desktop | Blink | Partial |
Client-by-client behaviour for position
Fully supports position (1): Thunderbird.
Partial support (8): Outlook 365, Outlook Android, Apple Mail, Apple Mail iOS, Yahoo Mail, Samsung Mail, HEY Mail, 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 (6): Gmail, Gmail Android, Gmail iOS, Outlook (New), Outlook Classic, Outlook iOS. Plan fallbacks for these clients before relying on position in production sends.
Fixes & Workarounds
Gmail
UnsupportedUse table-based positioning instead of CSS position.
Before
<div style="position: relative;">
<div style="position: absolute; top: 0; right: 0;">
Badge
</div>
<p>Content</p>
</div>After
<table role="presentation" width="100%" cellpadding="0"
cellspacing="0" border="0">
<tr>
<td valign="top">Content</td>
<td width="80" valign="top" align="right">Badge</td>
</tr>
</table>Use table-based positioning instead of CSS position
Gmail Android
UnsupportedUse table-based positioning instead of CSS position.
Before
<div style="position: relative;">
<div style="position: absolute; top: 0; right: 0;">
Badge
</div>
<p>Content</p>
</div>After
<table role="presentation" width="100%" cellpadding="0"
cellspacing="0" border="0">
<tr>
<td valign="top">Content</td>
<td width="80" valign="top" align="right">Badge</td>
</tr>
</table>Use table-based positioning instead of CSS position
Gmail iOS
UnsupportedUse table-based positioning instead of CSS position.
Before
<div style="position: relative;">
<div style="position: absolute; top: 0; right: 0;">
Badge
</div>
<p>Content</p>
</div>After
<table role="presentation" width="100%" cellpadding="0"
cellspacing="0" border="0">
<tr>
<td valign="top">Content</td>
<td width="80" valign="top" align="right">Badge</td>
</tr>
</table>Use table-based positioning instead of CSS position
Outlook (New)
UnsupportedUse table-based positioning instead of CSS position.
Before
<div style="position: relative;">
<div style="position: absolute; top: 0; right: 0;">
Badge
</div>
<p>Content</p>
</div>After
<table role="presentation" width="100%" cellpadding="0"
cellspacing="0" border="0">
<tr>
<td valign="top">Content</td>
<td width="80" valign="top" align="right">Badge</td>
</tr>
</table>Use table-based positioning instead of CSS position
Outlook Classic
UnsupportedUse table-based positioning instead of CSS position.
Before
<div style="position: relative;">
<div style="position: absolute; top: 0; right: 0;">
Badge
</div>
<p>Content</p>
</div>After
<table role="presentation" width="100%" cellpadding="0"
cellspacing="0" border="0">
<tr>
<td valign="top">Content</td>
<td width="80" valign="top" align="right">Badge</td>
</tr>
</table>Use table-based positioning instead of CSS position
Outlook iOS
UnsupportedUse table-based positioning instead of CSS position.
Before
<div style="position: relative;">
<div style="position: absolute; top: 0; right: 0;">
Badge
</div>
<p>Content</p>
</div>After
<table role="presentation" width="100%" cellpadding="0"
cellspacing="0" border="0">
<tr>
<td valign="top">Content</td>
<td width="80" valign="top" align="right">Badge</td>
</tr>
</table>Use table-based positioning instead of CSS position
Outlook 365
PartialUse table-based positioning instead of CSS position.
Before
<div style="position: relative;">
<div style="position: absolute; top: 0; right: 0;">
Badge
</div>
<p>Content</p>
</div>After
<table role="presentation" width="100%" cellpadding="0"
cellspacing="0" border="0">
<tr>
<td valign="top">Content</td>
<td width="80" valign="top" align="right">Badge</td>
</tr>
</table>Use table-based positioning instead of CSS position
Outlook Android
PartialUse table-based positioning instead of CSS position.
Before
<div style="position: relative;">
<div style="position: absolute; top: 0; right: 0;">
Badge
</div>
<p>Content</p>
</div>After
<table role="presentation" width="100%" cellpadding="0"
cellspacing="0" border="0">
<tr>
<td valign="top">Content</td>
<td width="80" valign="top" align="right">Badge</td>
</tr>
</table>Use table-based positioning instead of CSS position
Apple Mail
PartialUse table-based positioning instead of CSS position.
Before
<div style="position: relative;">
<div style="position: absolute; top: 0; right: 0;">
Badge
</div>
<p>Content</p>
</div>After
<table role="presentation" width="100%" cellpadding="0"
cellspacing="0" border="0">
<tr>
<td valign="top">Content</td>
<td width="80" valign="top" align="right">Badge</td>
</tr>
</table>Use table-based positioning instead of CSS position
Apple Mail iOS
PartialUse table-based positioning instead of CSS position.
Before
<div style="position: relative;">
<div style="position: absolute; top: 0; right: 0;">
Badge
</div>
<p>Content</p>
</div>After
<table role="presentation" width="100%" cellpadding="0"
cellspacing="0" border="0">
<tr>
<td valign="top">Content</td>
<td width="80" valign="top" align="right">Badge</td>
</tr>
</table>Use table-based positioning instead of CSS position
Yahoo Mail
PartialUse table-based positioning instead of CSS position.
Before
<div style="position: relative;">
<div style="position: absolute; top: 0; right: 0;">
Badge
</div>
<p>Content</p>
</div>After
<table role="presentation" width="100%" cellpadding="0"
cellspacing="0" border="0">
<tr>
<td valign="top">Content</td>
<td width="80" valign="top" align="right">Badge</td>
</tr>
</table>Use table-based positioning instead of CSS position
Samsung Mail
PartialUse table-based positioning instead of CSS position.
Before
<div style="position: relative;">
<div style="position: absolute; top: 0; right: 0;">
Badge
</div>
<p>Content</p>
</div>After
<table role="presentation" width="100%" cellpadding="0"
cellspacing="0" border="0">
<tr>
<td valign="top">Content</td>
<td width="80" valign="top" align="right">Badge</td>
</tr>
</table>Use table-based positioning instead of CSS position
HEY Mail
PartialUse table-based positioning instead of CSS position.
Before
<div style="position: relative;">
<div style="position: absolute; top: 0; right: 0;">
Badge
</div>
<p>Content</p>
</div>After
<table role="presentation" width="100%" cellpadding="0"
cellspacing="0" border="0">
<tr>
<td valign="top">Content</td>
<td width="80" valign="top" align="right">Badge</td>
</tr>
</table>Use table-based positioning instead of CSS position
Superhuman
PartialUse table-based positioning instead of CSS position.
Before
<div style="position: relative;">
<div style="position: absolute; top: 0; right: 0;">
Badge
</div>
<p>Content</p>
</div>After
<table role="presentation" width="100%" cellpadding="0"
cellspacing="0" border="0">
<tr>
<td valign="top">Content</td>
<td width="80" valign="top" align="right">Badge</td>
</tr>
</table>Use table-based positioning instead of CSS position
Production guidance for position
position is a CSS property. Across the email client matrix, 1 of 15 tracked clients support it fully, 8 only partially, and 6 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 position 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.