← All guides
Writing Templates4 min read

Hosted vs. embedded images in Gmail

The two ways to put an image in an email — and why CMass hosts yours automatically on a permanent URL for the best deliverability.

There are two fundamentally different ways to put an image into an email, and the difference affects deliverability, email size, and whether your open tracking works. This guide explains both — and how CMass handles images for you so you don't have to think about it.

The two ways to add an image to an email

Hosted (linked) images

A hosted image lives on a web server. The email itself doesn't carry the image file — it carries a small HTML <img> tag that points to the image's URL. When the recipient opens the email, their email client fetches the image from that URL and displays it. This is how the vast majority of marketing and bulk email works.

Embedded (inline) images

An embedded image is baked directly into the message — the actual image file travels inside the email as an attachment (technically a 'multipart/related' MIME part referenced by a CID, or a base64 data URI). Nothing is loaded from the internet; the image is already there when the message arrives.

Side-by-side comparison: a hosted image loads from cmass.io when the email is opened, while an embedded image is baked into the message itself
Hosted images stay light and load on open; embedded images travel inside the message.

Which one should you use?

For bulk and cold email, hosted images are almost always the right choice. Here's the trade-off:

Hosted images — pros

  • Tiny email size — the message stays a few KB no matter how large the image is
  • Open tracking works — the same image-load mechanism powers CMass's open tracking
  • Faster sending and lower spam risk — small, text-light emails are treated better by filters
  • One image, served to everyone — update or reuse it without re-attaching

Embedded images — the catch

  • Every email carries the full image file, multiplying your total send size by the number of recipients
  • Large, image-heavy messages are more likely to be flagged by spam filters
  • Open tracking via that image no longer works, because nothing is fetched from a server
  • Some clients show embedded images as a paperclip attachment rather than inline
💡 The one advantage of embedding is that the image always displays without a 'show images' prompt. But for mass email the deliverability and size costs usually outweigh that — which is why CMass, like most bulk-email tools, sends hosted images.

How CMass handles images

CMass hosts your images for you. When you upload an image from your device, CMass stores it on its own image hosting and gives you a permanent, stable URL — there's no expiring link, no third-party service, and nothing for you to set up. The hosted URL is what gets inserted into your email.

No setup required: You don't choose 'hosted' or 'embedded' anywhere — CMass uses hosted images automatically because they're the right default for bulk email. You just upload and send.

Upload a hosted image — step by step

  1. 1In the Template tab (or any follow-up stage), click '🖼 Image' in the media toolbar above the body
  2. 2Click '📁 Upload from device'
  3. 3Choose a JPEG, PNG, GIF, WebP, or SVG file — up to 5 MB
  4. 4CMass uploads it, hosts it on a permanent URL, and inserts it into your email body
The CMass Insert Image panel with an Upload from device button and an optional paste-a-URL field
Upload from your device — CMass hosts the image and inserts the permanent URL.

Already have a hosted image?

If your image is already online (your own server, a CDN, or another host), you don't need to re-upload it. Paste its URL into the 'or paste a URL' field and click Insert — CMass adds it as a hosted image exactly the same way.

CMass inserts every image with max-width set to 100%, so it scales to fit the width of the email — which is roughly 600 pixels in Gmail and most inboxes. The practical rule: design for a 600px-wide column, and export your source image at 2× (around 1200px wide) so it stays sharp on high-resolution 'retina' screens. Here's a quick reference by use case:

Reference table of recommended email image sizes: header banner 1200x400, inline photo 1200 wide, product shot 1200 wide, logo 300-400 wide, square 1200x1200, signature 600 wide
Export at 2× the size it displays — images show about 600px wide in most inboxes.
  • Header / banner: 1200 × 400 px source (shows ~600 × 200) — a wide 3:1 ratio reads well at the top of an email
  • Inline photo: 1200 px wide source at its natural height — the everyday content image
  • Product shot or screenshot: 1200 px wide source — keep text in screenshots large enough to read at half size
  • Logo: 300–400 px wide source (shows ~150–200) — use a PNG to preserve transparency
  • Square / social-style: 1200 × 1200 px source for a clean 1:1 block
  • Email signature image: 600 px wide source (shows ~300) — keep it small and light
Why 2×?: A 600px image looks fine on an old monitor but soft on a modern phone or laptop, where each CSS pixel is backed by 2–3 hardware pixels. Exporting at ~1200px and letting CMass scale it down to the column width gives you crisp images everywhere without bloating the file too much.

Deliverability tips for email images

  • Compress before uploading — keep images under ~100 KB with TinyPNG or Squoosh for fast loading
  • Don't send an email that's one giant image — spam filters penalize image-only messages with little text
  • Keep a healthy text-to-image ratio — a few words of real text alongside each image
  • Always test on mobile — many clients display images at full width on small screens
⚠️ Some clients (especially Outlook and corporate Gmail) block images by default. With hosted images, the recipient sees a placeholder until they click 'Display images' — this is normal and applies to every email tool. It's also why text-forward emails often outperform heavily designed ones for cold outreach.

Try it in Gmail — free

50 emails/day on the free plan. No credit card needed.

Add CMass to Chrome →