← Blog/Deliverability

HTML design choices that push cold email into spam

October 15, 2026·6 min read·By MailPilot

The design question that matters

A cold email's job is to look like a message from a person, not a campaign. HTML design decisions that make sense for a newsletter — multi-column layout, a header image, a branded footer — work against that goal on a first-touch message. Filters and recipients both read structure as a signal of intent before they read a single word of copy.

Image-to-text ratio

An email that is mostly one large image with a line or two of text is a long-standing spam pattern, because it lets a sender hide the actual message from text-based content filters. Cold sends with a banner image, a logo, and a CTA button image stack several of those images into a message that should be three sentences. Keep the ratio inverted: mostly text, images only if the message cannot work without one, and almost never a full-width banner.

Nested tables and tracking pixels

Multi-column HTML templates are usually built from nested <table> structures to survive old Outlook rendering engines. That is reasonable for a marketing send with design review behind it. For cold email it adds two problems: the raw HTML balloons in size relative to the visible content, and it is a structural fingerprint that a sequencing tool's default template leaves behind, which filters have seen millions of times from accounts that behaved badly. A single open-tracking pixel does the same thing from a different angle — it is often the first external resource a filter sees and it tells the filter this is bulk mail before the body loads.

Clipping at Gmail's size limit

Gmail clips a message's visible HTML at roughly 102KB. A template built with inline CSS, nested tables, a signature banner, and a tracking pixel can cross that threshold on a message whose actual sentence content is 60 words. Everything past the clip point — including your List-Unsubscribe link if it's only in the footer HTML and not in headers, and any postal address required for compliance — disappears behind a "View entire message" link that most recipients never click. Check raw source size before you ship a template, not just how it renders.

What a safe structure looks like

<html>
  <body style="font-family: Arial, sans-serif; font-size: 14px;">
    <p>Hi Priya,</p>
    <p>Saw your team is hiring three support engineers this quarter.
       We cut onboarding time for a similar team from six weeks to ten days —
       worth a 15-minute look?</p>
    <p>Sam<br>MailPilot team<br>mailpilots.in</p>
  </body>
</html>

No tables, no remote images, no tracking pixel, one plain link in the signature. It renders the same with images blocked, in dark mode, and on a watch, and it is small enough that clipping is not a concern.

Dark mode is not optional testing

Most major mail clients now apply automatic dark mode to messages that don't declare their own color scheme, inverting light backgrounds and dark text. A white logo on a transparent background, or dark text with no explicit background color, can render invisibly. Test every template with the client's dark mode on before sending to a single real prospect — not after a complaint.

Pre-send checklist

CheckTarget
Visible text vs. image areaText-dominant
Raw HTML sizeWell under 102KB
Remote images (excluding none)Zero, ideally
Nested tablesNone
Renders correctly with images offYes
Renders correctly in dark modeYes
List-Unsubscribe header present on bulk mailYes

What not to do

Do not reuse a marketing template for cold outreach because it already exists. Do not add a tracking pixel to a first-touch message just because your tool defaults to it — turn it off if you can. Do not assume a template "looks fine" because it looks fine in your own inbox; test with images blocked and in dark mode specifically.

Test the rendered email, not the template editor

A template editor's preview pane is not a reliable stand-in for how the message actually renders once it leaves your sending tool. Send a real test to a mailbox you control on each major client you care about, then open the raw source there, not just the rendered view. Inline CSS that depended on a style block your editor auto-injected, for instance, can silently drop once the message passes through an ESP that strips <style> tags for security reasons — something you'd never see in the editor itself. Check the raw HTML size figure directly, not an estimate; most mail clients let you view the original message source, and that is the number that matters for the clipping threshold, not whatever the editor reports.

A quick manual audit before any send

Open the finished HTML in a plain text editor and search for <img, <table, and style= tags. Count them. A three-sentence cold email with more than one or two of each is almost always carrying structure left over from a template that wasn't built for this use case. Strip anything that isn't doing visible, necessary work — a background color on a <table> that's invisible once rendered, a tracking pixel nobody asked for, a nested wrapper table with a single cell inside it.

Where MailPilot fits

MailPilot checks SPF, DKIM, and DMARC on every sending domain and measures real per-provider inbox placement through a seed-inbox network, so a template change shows up as a placement number — Gmail, Outlook, and the rest — rather than a guess about what the HTML "probably" does.

MailPilot

Ready to reach the inbox every time?

Automated email warmup across real peer mailboxes. Live inbox placement monitoring. Free 7-day trial - no credit card required.

Start free trial
Reach the Inbox, Every Time
Connect unlimited inboxes for warmup. Free 7-day trial, no credit card.
Try for Free
WORKS WITH
OZOHO
inbox placement99.2%
free trial7-day
companies trust us340+

Start for free - no credit card required.

Get started freeBook a demo