Reducing Spam Score in Image-Heavy Emails
Fix the image-to-text ratio rules: real text instead of baked-in copy, alt text that is not a substitute, image hosting signals, and the blocked-images fallback.
A message built as one large image scores badly, renders as an empty rectangle when images are blocked, and is unreadable to a screen reader. This guide covers the rules that fire on image-dominant messages, why they exist, and the changes that fix the score and the rendering at the same time.
Root Cause: Images Are Opaque to a Filter
A filter can read text. It cannot read an image, and it cannot verify that the pixels say what a legitimate message would say. Historically, senders who wanted to evade content filtering did exactly that — rendered the message as a picture — so filters learned to treat an image-dominant message as suspicious on its own.
The rules measure the ratio of rendered image area to text characters, and they fire on a spectrum rather than at a single point. A message that is mostly text with a header image trips nothing. A message where images occupy most of the visible area and the text is a single line of legal footer trips several rules at once, each contributing points.
The reason this matters beyond the score is that all three failure modes have the same cause. A message with no real text is unreadable when images are blocked — which is the default in Outlook and common elsewhere — and it presents nothing to a screen reader. Adding genuine text fixes the filter, the blocked-image rendering and the accessibility problem together.
The Exact Fix: Real Text Carries the Message
The rule is that the message must be complete without images. Not degraded gracefully — complete. Every fact the recipient needs is live text; images add brand and context on top.
<!-- The headline is text, not a picture of text. It survives image blocking,
is read by screen readers, and is what the filter counts. -->
<tr>
<td style="font-family:Arial,sans-serif;font-size:28px;line-height:34px;
mso-line-height-rule:exactly;color:#450920;padding:0 24px;">
Your order has shipped
</td>
</tr>
<tr>
<td style="font-family:Arial,sans-serif;font-size:16px;line-height:24px;
mso-line-height-rule:exactly;color:#334155;padding:12px 24px 0;">
Order SEED-0001 left our warehouse this morning and should arrive by Friday.
</td>
</tr>
<!-- The image is supporting content. width and height prevent layout shift
when it is blocked; the alt text describes it rather than replacing the
copy above, which already carries the message. -->
<tr>
<td style="padding:24px;">
<img src="https://cdn.example.com/parcel-illustration.png"
width="552" height="200" alt="Illustration of a parcel in transit"
style="display:block;border:0;width:100%;max-width:552px;height:auto;">
</td>
</tr>
Two details are load-bearing. width and height attributes reserve the space so a blocked image leaves a correctly-sized gap rather than collapsing the layout — several clients ignore CSS dimensions on a blocked image but honour the attributes. And the alt text describes the image, it does not repeat the headline: the headline is already present as text, so duplicating it in alt produces a message that reads twice to a screen-reader user.
What Actually Counts Toward the Ratio
The rules measure rendered image area against text characters, which produces some counter-intuitive results.
| Change | Effect on ratio | Effect on score |
|---|---|---|
| Replacing a headline image with live text | Large improvement | Removes several rule hits |
| Adding a paragraph of body copy | Improvement | Reduces the ratio directly |
| Compressing the image file | None | The area is unchanged |
| Splitting one image into four | None | Total area is what counts |
| Reducing displayed image dimensions | Improvement | Less area against the same text |
| Adding alt text | None for the ratio | Helps accessibility, not the score |
The third and fourth rows are where effort is most often wasted. File size is irrelevant to these rules — a heavily optimised 40KB hero occupying 600×400 counts the same as an unoptimised one. And slicing an image into pieces, a habit inherited from older layout techniques, changes nothing because the areas sum.
The row that surprises people in the other direction is alt text. It is essential for accessibility and for the blocked-image experience, but it does not count as text for ratio purposes — filters know it is not body copy. A message that is one image with an excellent alt attribute still scores as an image-only message.
Variant: Where the Images Are Hosted
Beyond the ratio, image hosting contributes its own signals. Serve images over HTTPS from a hostname under your sending domain, ideally the same subdomain the links use. A message whose links point at mail.example.com and whose images load from an unrelated shared CDN hostname presents two unrelated identities, which several filters weigh.
Avoid hotlinking to a third-party asset host you do not control, and never serve an image from a bare IP address — that trips a rule on its own and has no legitimate use. Where a marketing tool provides image hosting, check whether a custom domain can be configured; it usually can, and it is the same CNAME change that fixes the tracking-domain mismatch.
Rebuilding an Image-Only Template
Most teams meeting this problem have an existing template that is one exported picture, usually produced by handing a design file straight to an export tool. Rebuilding it is a mechanical process rather than a redesign.
Separate the layers. Go through the exported image and list what it contains: a logo, a headline, one or two paragraphs, a button, possibly an illustration and a footer. Everything except the logo and the illustration is text that was rendered as pixels, and each of those becomes a real element.
Rebuild in reading order. Compose the message top-down as live text with the illustration placed where it sits visually. The result is usually shorter than the original design suggests, because a paragraph that occupies a large area as an image occupies two lines as text — which is itself a signal that the original was carrying less information than its size implied.
Keep only what is genuinely pictorial. A logo is genuinely an image. A photograph is genuinely an image. A rounded rectangle with the words "Track your parcel" inside it is a button, and rebuilding it as a bulletproof button makes it clickable at the correct size, readable when images are blocked, and reachable by keyboard.
Re-cut the remaining artwork at the right dimensions. An illustration exported at the full 600px content width contributes six times the area of the same illustration at 200px. Where the artwork is decorative rather than informative, a smaller placement improves the ratio and usually the design.
The measurable outcome is consistent: a template rebuilt this way typically drops two to three points of score, becomes readable with images blocked, and gains a plain-text part worth sending — because there is now text to generate it from. The work is a day or so per template and it does not need to happen all at once; the highest-volume template first captures most of the benefit.
Pipeline Integration
Assert the ratio at build time rather than discovering it in a spam report. A check that sums the declared width × height of every image and compares it against the character count of the text parts is a few lines of code and fails on the template that introduced the problem.
Pair it with an assertion that the plain-text part is non-trivial. An image-heavy HTML message almost always has a thin text part, because the text part is generated from the HTML — so the two defects travel together and one check can catch both.
Validation and Deployment Checklist
Frequently Asked Questions
Is there a specific ratio to aim for?
Filters do not publish one, and chasing a number is less useful than the qualitative test: with every image removed, is the message complete? If yes, the ratio is almost certainly fine. If no, the ratio is a symptom rather than the problem.
Our design team wants a fully designed hero image. Is that acceptable?
Yes, provided the message is complete without it. A hero image above a text headline and a text body is entirely normal and scores fine. What does not work is a hero image instead of the headline, which is the version that breaks in three ways at once.
Do background images count toward the ratio?
Inconsistently — some filters include them, some do not, and clients differ in whether they load them at all. Since background images already need a solid colour fallback, treat them the same way here: never let one carry information, and the ratio question stops mattering.
What about animated GIFs?
They count as their rendered area like any image, and they add file weight that can push the message toward Gmail's clipping threshold. The bigger practical issue is that Outlook renders only the first frame, so any information in later frames is invisible there — which makes the first frame the only one that can carry meaning.
Related
- Spam Filter and Inbox Placement Testing — where the ratio check runs in CI
- Reading a SpamAssassin Report Rule by Rule — how the ratio hits appear in a report
- Writing Alt Text for Blocked Images — the accessibility half of the same fix
- Email Background Images and VML — why background artwork can never carry information
← Back to Spam Filter and Inbox Placement Testing