EEmailForDevs.com
Rendering8 min read

Responsive Email Design Without Media Queries

The fluid hybrid approach that works everywhere

PS

Priya Sharma

Frontend Email Developer

· April 20, 2025

Why Media Queries Fail in Email

Media queries are the backbone of responsive web design, but email clients are a different story. Gmail\'s mobile app strips out <style> blocks entirely, meaning any @media rules you write simply disappear. Yahoo Mail has historically mangled media queries, and many Outlook versions ignore them altogether. If you rely on media queries alone, a significant portion of your audience sees a broken layout.

The fluid hybrid approach solves this by making your email inherently responsive. Instead of telling the layout to change at specific breakpoints, you build a structure that naturally adapts to whatever width is available. This technique works across Gmail, Outlook, Apple Mail, and every other major client without a single media query.

The Fluid Hybrid Foundation

The core idea behind fluid hybrid design is combining percentage-based widths with a fixed maximum width. You set a container to max-width: 600px and width: 100%, so it fills the viewport on small screens but caps at 600px on desktop. Every element inside follows the same principle. Here is a basic two-column layout:

<!--[if mso]><table role="presentation" width="600" cellspacing="0" cellpadding="0" border="0"><tr><td><![endif]-->
<div style="max-width: 600px; margin: 0 auto;">
  <!--[if mso]><table role="presentation" width="600" cellspacing="0" cellpadding="0" border="0"><tr><![endif]-->
  <!--[if mso]><td width="290" valign="top"><![endif]-->
  <div style="display: inline-block; width: 100%; max-width: 290px; vertical-align: top;">
    <p>Column one content</p>
  </div>
  <!--[if mso]></td><td width="290" valign="top"><![endif]-->
  <div style="display: inline-block; width: 100%; max-width: 290px; vertical-align: top;">
    <p>Column two content</p>
  </div>
  <!--[if mso]></td></tr></table><![endif]-->
</div>
<!--[if mso]></td></tr></table><![endif]-->

On a mobile screen, each div with display: inline-block simply stacks vertically because both are set to width: 100%. On desktop, they sit side by side because the max-width constrains them to fit within the 600px container. No media query needed.

Ghost Tables for Outlook

Microsoft Outlook uses the Word rendering engine, which does not support max-width, display: inline-block, or most modern CSS. Ghost tables are conditional HTML comments that Outlook renders as real table markup while every other client ignores them. They provide the rigid structure Outlook needs without affecting modern clients.

The pattern uses <!--[if mso]> and <![endif]--> to wrap table elements. You create a table row with fixed-width cells that mirror your fluid div layout. Outlook sees a proper table. Gmail sees clean div elements. This dual-rendering approach is the foundation of the fluid hybrid method.

<!--[if mso]>
<table role="presentation" width="600" align="center">
<tr>
<td width="300">
<![endif]-->
<div style="max-width: 300px; width: 100%; display: inline-block; vertical-align: top;">
  <!-- Content for column 1 -->
</div>
<!--[if mso]>
</td>
<td width="300">
<![endif]-->
<div style="max-width: 300px; width: 100%; display: inline-block; vertical-align: top;">
  <!-- Content for column 2 -->
</div>
<!--[if mso]>
</td>
</tr>
</table>
<![endif]-->

Fluid Images and Typography

Images in fluid hybrid emails should use width: 100% with a max-width set to their actual pixel dimensions. This prevents images from scaling up beyond their native resolution on desktop while allowing them to shrink gracefully on mobile. Always include height: auto to maintain aspect ratios.

<img src="https://example.com/hero.png"
  width="600"
  style="width: 100%; max-width: 600px; height: auto; display: block;"
  alt="Hero image" />

For typography, use viewport-relative sizing sparingly since support is inconsistent. Instead, set reasonable base font sizes (16px for body text) and rely on the natural reflow of your fluid layout. Padding and margins should use pixel values rather than percentages or ems, as these render more consistently across email clients.

Framework-Agnostic Implementation

The beauty of the fluid hybrid approach is that it works regardless of your toolchain. Whether you are hand-coding HTML, using a platform like brew.new to generate templates, or building with MJML or Maizzle, the underlying principles remain identical. MJML compiles down to ghost-table patterns automatically. Maizzle gives you Tailwind-style utility classes that output inline styles.

If you are using brew.new, the platform\'s template engine handles ghost table generation and fluid width calculations automatically. You focus on content structure and the rendering engine ensures compatibility. This is particularly valuable when your team needs to ship emails fast without debugging Outlook quirks manually.

Testing Across Clients

Even with a bulletproof fluid hybrid layout, testing remains essential. Use Litmus or Email on Acid to preview across the full client matrix. Pay special attention to Outlook 2016 and 2019, which have subtle differences in how they handle ghost tables. Gmail\'s desktop webmail clips emails over 102KB, so watch your file size.

Common pitfalls include forgetting to set border-spacing: 0 on ghost tables (which adds unwanted gaps in Outlook), using margin on block elements inside Outlook cells (use padding instead), and neglecting the role="presentation" attribute on layout tables for accessibility. The fluid hybrid method is robust, but these details matter for pixel-perfect results.

PS

Priya Sharma

Frontend Email Developer

Priya makes emails look beautiful everywhere. She specializes in cross-client rendering, responsive design, and React Email components.