Where should I host images for emails?

Still have a question, spotted an error, or have a better explanation or a source we should cite?

You've built a beautiful email. The images load perfectly in your preview. Then a subscriber opens it three days later and sees a row of broken boxes. Sound familiar? Where you host your images matters more than most people think.

But The good news is you have three solid options, and the right one depends on your volume and how much control you want.

Your ESP's built-in image hosting is the easiest starting point. Most ESPs like Mailchimp, Klaviyo, and Brevo include file storage with CDN distribution baked in. It's optimized for email traffic, fast to set up, and you don't have to manage anything separately. For most senders, this is the right call.

A dedicated CDN gives you more control and often better global performance. Services like Cloudflare and AWS CloudFront are built for high-traffic, distributed delivery. If you're sending at high volume or you want to own your image infrastructure independently of any ESP, a CDN is worth setting up. The tradeoff is configuration overhead.

Your own web server is technically possible but rarely a good idea for email. Email campaigns create sudden traffic spikes. If your server can't handle the load when 50,000 recipients open your message in the first hour, images break for everyone. Unless your server is already backed by a CDN, skip this one.

Four things your image host must do

  • Serve over HTTPS. HTTP image URLs get blocked or flagged in most modern email clients. This isn't optional.
  • Stay fast and reliable. Slow image loads hurt engagement and make your email look broken. Pick a host with high uptime guarantees.
  • Never delete old images. People open emails weeks or even months after you sent them. If the image URL is dead, their experience is broken. Persistence matters.
  • Compress before uploading. Oversized images slow rendering and can hit client-side size limits. Aim for under 200KB per image where possible.

The caching wrinkle

Two major clients change how your images behave in ways worth understanding. Gmail routes images through its own proxy server after the first load. It stores a cached copy and serves that to recipients instead of hitting your server directly. This affects open tracking pixel accuracy too, since the proxy fetch counts as the open.

Apple Mail with Mail Privacy Protection goes further. It prefetches all images at delivery, before the recipient even opens the email. Your image server sees the request immediately, regardless of whether anyone actually reads the message.

Both of these behaviors mean you can't rely on real-time image serving for personalization tricks (like swapping images based on open time). The image that gets cached is the image they'll see, often forever.

If you're unsure whether your current setup is causing delivery or rendering issues, our SOS hotline is free and we're happy to take a look with you.

Contributors

Who worked on this answer

Every name links to their profile. Every company links to their site. Real people, real accountability.

Ask an AI · tailored to your setup

Get a breakdown of your image hosting options

I'm deciding where to host images for my [email type, e.g. newsletter / transactional / promotional campaign]. My current setup is ESP image hosting / own server / CDN like Cloudflare. Tell me: 1) Whether my setup is appropriate for my send volume and use case, 2) The main risks I should watch for (broken URLs, caching issues, HTTPS gaps), 3) Whether switching to a CDN would meaningfully improve things, 4) Any optimisation steps I should take right now.

Edit the yellow boxes, then send to the AI of your choice.