Optimizing Images for Substack Newsletters in 2026
Hero image, inline, and email-safe image sizes for Substack, with compression targets that survive Gmail clipping and Outlook's image proxy.
Optimizing Images for Substack Newsletters in 2026
Substack's email pipeline is a tighter constraint than its web pipeline, and it is the email that decides whether your newsletter gets read. Gmail clips messages above 102 KB of HTML, Outlook routes images through a proxy that strips query params, and Apple Mail in Low Data Mode refuses to load anything over 1 MB. Getting images right for newsletters means optimizing for the email clients first and the web second.
The numbers to memorize
| Placement | Display width (max) | File size target | Format |
|---|---|---|---|
| Hero image (top of post) | 1456 px web / 680 px email | 200-300 KB | JPEG q82 or WebP q80 |
| Inline image (full width) | 1456 px web / 680 px email | 150-250 KB | JPEG q82 or WebP q80 |
| Inline image (centered small) | 728 px | 80-120 KB | JPEG q85 |
| Cross-post thumbnail | 1200x630 | under 200 KB | JPEG q85 |
| Author avatar | 256x256 | under 40 KB | JPEG q88 or PNG |
| Publication logo | 256x256 | under 40 KB | PNG with transparency |
| Podcast cover art | 3000x3000 | under 500 KB | JPEG q90 |
The email column matters most. Substack's email template renders images at a max width of 680 px on desktop clients and scales responsively on mobile. Uploading a 4000 px image does not improve email rendering and actively hurts deliverability.
Why 102 KB matters (Gmail clipping)
Gmail truncates messages once the total HTML exceeds 102 KB. The clipped footer shows a "[Message clipped] View entire message" link that most readers never tap. If your post has a lot of inline images, each one adds HTML (the <img> tag, the surrounding <div>, the inline styles) even though the image itself is external.
Substack's email HTML per image is about 600-900 bytes. Ten inline images eats 6-9 KB of your 102 KB budget. A long essay with 20+ images will clip, and Substack's own footer and share buttons eat another 12 KB. The practical rule is to keep image count in a single newsletter post under 15 if you want to stay under the clip threshold with any meaningful amount of prose.
The Outlook image proxy
Outlook.com and Outlook 365 route all external images through attachment.outlook.live.com, which caches images and strips URL query parameters. This matters because Substack's image CDN uses query-string based resizing (?w=680&h=360&fit=crop). The proxy strips the query string, the CDN returns the original full-size image, and Outlook renders a 4000 px image scaled down to 680 px, usually with a visible quality loss from Outlook's own re-encode.
The fix on the content creator's side is simple: upload images that are already appropriately sized. If you upload a 1456 px hero, the proxy-stripped URL still returns a 1456 px image, which scales cleanly. If you upload a 4000 px hero, you get the artifacts.
Compression targets that actually deliver
For the hero image, a 1456x819 JPEG at quality 82 lands in the 180-280 KB range for typical photographic content. This is the resolution Substack serves for web, and a well-compressed 250 KB image renders faster than a poorly compressed 600 KB image on every client tested.
For inline charts and screenshots, a 1456 px PNG often balloons to 800 KB or more. Convert them: 1456 px WebP at quality 80 for web rendering, with a fallback JPEG. Substack's post editor accepts PNG, JPEG, WebP, and GIF as of January 2026.
A pattern that works for chart-heavy newsletters: process every chart image through a single pass that flattens to 1456 px, exports WebP at quality 80, and reports the final file size. You can batch a folder of chart exports through Konvrt's batch tool before pasting them into the editor.
The dark mode trap
Apple Mail, Outlook for Mac, and Gmail on Android invert light backgrounds in dark mode. Screenshots on white backgrounds get inverted to black, which then clashes with inline dark-mode chart colors that were not inverted. There are two reliable workarounds:
- Add a 1-2 px non-white border around screenshots. Mail clients treat bordered images as "intentional" and skip the inversion.
- Embed screenshots inside a light-gray container with padding, baked into the image itself.
CSS-based dark mode hints (@media (prefers-color-scheme)) do not work in email templates that go through Substack.
Podcast and paid-subscriber images
Podcast cover art in Substack follows Apple Podcasts specs: 3000x3000, RGB, under 500 KB. PNG is technically accepted but Apple's ingestion pipeline recompresses to JPEG, so starting from JPEG at quality 90 avoids a double-compression round.
Paywalled post preview images (the blurred hero shown to non-subscribers) are generated by Substack automatically with a gaussian blur and gradient overlay. You do not need to upload a separate preview image as of 2026. The backend applies the blur at render time to the same hero image.
Avatar and publication logo
Both render as circles in the email template despite the original image being square. Anything in the corners of a 256x256 avatar will be cropped on display. Center your face or logo. PNGs with transparent backgrounds render with a white fill in Outlook, so either bake a background color into the image or accept the white disc on dark-mode Outlook clients.
A sensible default pipeline
For a newsletter publishing 2-3 times a week with mixed photo and chart content, a reliable export preset:
- Long edge: 1456 px
- Format: WebP quality 80
- Fallback: JPEG quality 82 if you worry about very old clients
- Target file size: under 300 KB per image
- Keep image count under 15 per email
Run your exports through the browser-based converter and paste directly into Substack. The privacy angle matters if you are writing about your own research, finances, or clients: the files never leave your machine.
Takeaway: design for 1456 px width, compress to under 300 KB, keep image count under 15, and add borders to screenshots so dark-mode clients do not invert them.