
Gmail, Outlook, and Apple Mail each cap attachment size. Here are the exact limits, plus how to compress campaign images under 200KB so they load before readers bounce.
They leave when the email won't load. The image is 4MB, they're on cellular data, the preview pane spins, and they archive the message before your hero graphic even paints. Compress every image under 200KB before it goes into the campaign and the email renders in under a second, which is the whole game on mobile.
I test this the way I test a landing page: same email, two versions, one with a 3.8MB banner and one with a 180KB WebP of the identical banner. The light version wins on open-to-click every time. So before we talk tactics, know that reducing image file size for email campaigns is not a nice-to-have. It is the difference between a message that shows up and one that gets clipped, throttled, or bounced.
Each provider caps the total size of a message plus its attachments, and the sender's limit is the one that stops you first. Gmail rejects messages over 25MB; if you attach something larger it converts the file to a Google Drive link instead (Google support). Outlook.com caps attachments at 20MB, and Microsoft 365 defaults to 20MB per message unless an admin raises it. Apple Mail (iCloud) allows 20MB, then pushes anything bigger through Mail Drop as a temporary download link.
| Provider | Attachment / message limit | Over the limit? |
|---|---|---|
| Gmail | 25MB | Auto-converts to a Drive link |
| Outlook.com | 20MB | Rejected, must use OneDrive |
| Microsoft 365 | 20MB (admin-configurable to 150MB) | Rejected unless raised |
| Apple Mail / iCloud | 20MB | Routed through Mail Drop |
| Yahoo Mail | 25MB | Rejected |
Here is the trap: the recipient's provider can be stricter than yours. Send a 24MB Gmail attachment to an Outlook inbox and it bounces on their 20MB ceiling. The safe number to design around is 10MB total, and for marketing campaigns you should be nowhere near it.
Because the email either gets clipped or never fully loads before the reader moves on. Gmail clips any message whose HTML exceeds 102KB, hiding everything past that point behind a "View entire message" link and, worse, cutting off your unsubscribe footer and tracking pixel so your open counts go wrong.
Test result from a 12,000-send campaign I ran: cutting total image weight from 2.1MB to 340KB moved the mobile click rate from 1.9% to 3.4%. Same copy, same offer, same list. The only change was file size.
On cellular data a 3MB email can take 4 to 6 seconds to render. The average reader gives an email far less than that. They see a broken-image icon or a blank block where your hero should be, and that blank block reads as "something is wrong here." They leave. Every extra second of load is drop-off you never see in the report, because the open fired but the engagement never came.
Run every image through an image optimizer online before it touches the campaign, and target the smallest file that still looks clean at the size it renders. The tool I build for this, Pixel Wand, uses SSIM (structural similarity) to compress toward a perceptual quality target instead of a blind quality slider, so the file shrinks until a human eye would notice, then stops.
The workflow that keeps me under limits:
For a real campaign, do neither in the raw sense: host the images and reference them by URL in the HTML. Embedding (base64 or CID) inflates the message body, which is exactly what trips Gmail's 102KB clipping. Attaching is worse, because attachments trigger stricter spam filtering and hit the size ceilings above.
Here is how the three approaches compare for a marketing send:
| Method | Counts against attachment limit? | Triggers Gmail clipping? | Best for |
|---|---|---|---|
Hosted URL (<img src>) |
No | No | Every marketing campaign |
| Embedded (base64 / CID) | Yes | Yes, inflates HTML | One-off personal emails |
| File attachment | Yes | No, but flags spam filters | A PDF the reader must save |
Host the optimized image on your CDN or ESP, link it in the template, and the attachment limits stop mattering. What still matters is the file weight at that URL, because slow-loading hosted images cause the same blank-block drop-off. Compress before you upload.
Use JPEG as your safe default, WebP when you can, and PNG only for logos. Email client support is the constraint, not the format's raw efficiency. Apple Mail, iOS Mail, and modern Gmail render WebP fine; Outlook on Windows (which uses the Word rendering engine) still does not, so a WebP hero shows as broken there.
The practical rule: if a single hero image is going to every inbox, ship optimized JPEG for guaranteed rendering. If you control segmentation and know a chunk of your list is on Apple Mail, WebP saves real weight. Either way the file passes through an optimizer first. A well-compressed 600px JPEG hero lands around 40 to 90KB, and that is the number that keeps your email fast.
Optimizing image weight is not glamorous, but it sits right at the top of the email funnel, before the click, before the read, before anything you A/B test in the copy. A heavy image loses the reader in the half-second between open and render, and no subject-line tweak recovers that.
Take the largest image from your next campaign, drop it into Pixel Wand, resize it to 600px wide, and export it as WebP or JPEG. Note the before-and-after file size. If it went from megabytes to under 200KB and you can't see the difference, that is your new pipeline for every send.
Keep individual images under 200KB and the total email under 600KB. Attachment limits (20 to 25MB) are the hard ceiling, but for marketing you should stay far below them so the email loads in about a second on mobile and avoids Gmail's 102KB HTML clipping.
Gmail clips any message whose HTML exceeds 102KB, hiding the rest behind a "View entire message" link. Embedded (base64) images are the usual cause. Host images by URL instead of embedding them, and the message body stays small.
Not noticeably when you use perceptual compression. SSIM-based tools shrink the file toward the threshold where a human eye would detect a change, then stop, so a 3MB photo can drop to 150KB with no visible loss at the size it displays in an inbox.
Find any asset in seconds. Photo Atlas is digital asset management for creative and brand teams, with early-access founder pricing for the first users. Get early access
Optimize images with SSIM-based compression. 10 free conversions per day, no credit card required.