Image Quality Image Qualitycompression
Journal Entry

Every Platform Recompresses Your Upload. Here's What That Actually Costs You.

What Compression Tradeoffs Happen When You Export for Social Media

Photo by Dawn Casey on Unsplash

You export a photo at what feels like a reasonable quality setting, upload it, and the result looks softer than expected — flatter, slightly muddy in the shadows, with halos forming around high-contrast edges. The platform didn’t just post your file. It ran its own compression pass over it, and the tradeoffs it made were not the ones you made in Lightroom or Photoshop.

Understanding what happens during that second compression pass — and why it’s different from the first — is what separates an export workflow that holds up from one that quietly throws away the detail you spent time capturing.

Why Platforms Recompress at All

The short answer is bandwidth and storage at scale. A platform serving hundreds of millions of images daily has strong financial incentive to keep file sizes small, and the most practical way to do that consistently is to run every incoming file through its own encoder on ingest. Your carefully tuned export is an input to their pipeline, not the final product.

The practical consequence is that your image goes through at least two lossy compression stages if you’re uploading a JPEG: yours and theirs. This matters because JPEG compression is not cumulative in the way people sometimes assume — it isn’t simply “a little more loss each time” applied uniformly. What actually happens is that the DCT (Discrete Cosine Transform) quantization step discards frequency information each time it runs, and the quantization tables the platform uses are almost certainly different from the ones your export applied. Mismatched quantization tables on successive encodes produce blocking artifacts and ringing that wouldn’t appear if the same table had been applied twice.

The implication is counterintuitive: uploading a high-quality JPEG doesn’t protect you from platform recompression — it just means the platform has more detail to work with before it applies its own quantization. Uploading a heavily pre-compressed JPEG compounds the damage.

What Chroma Subsampling Does to Your Colors

One of the least-discussed but most visible changes in social media exports is chroma subsampling — specifically the difference between 4:4:4 and 4:2:0. In a 4:4:4 image, every pixel carries its own full color information. In 4:2:0, color is sampled at one quarter the resolution of luminance. Human vision is more sensitive to brightness differences than to color differences, so this is mathematically defensible and often invisible in smooth gradients. It becomes visible in two scenarios.

The first is text or fine graphic elements on a colored background — chroma subsampling blurs the color boundary, softening edges that should be sharp. The second is saturated, highly detailed color transitions, the kind that appear in bold fashion photography or heavily graded sunset shots. Most major platforms apply 4:2:0 subsampling on output even if your uploaded file was 4:4:4. If color accuracy in fine detail matters to your image, upload in sRGB with fully saturated colors that compress predictably, and if possible check your finished result on a calibrated screen rather than the screen you edited on.

Pixel Dimensions and the Resampling Problem

Platforms enforce maximum display dimensions, and if your uploaded image exceeds them, it gets scaled down. Scaling down is not free — it requires a resampling algorithm to map pixel values from a larger grid to a smaller one, and different algorithms produce meaningfully different results.

A bicubic downsample (common in most professional export pipelines) tends to preserve edge sharpness reasonably well. Lanczos resampling does slightly better with aliasing control. But platform-side resampling varies, changes without announcement, and applies after their compression pass — meaning any sharpening you baked into your export may interact poorly with their downsample, producing oversharpening artifacts or uneven acuity across the frame.

The practical approach is to export at or slightly below the platform’s documented display dimensions rather than relying on the platform to downsample correctly. This gives you control over which resampling algorithm runs first. For Instagram specifically, our article on what happens to image quality when you export for Instagram goes into the recommended pixel dimensions and format behavior in detail.

Format Choice Before Upload

Most platforms accept JPEG, PNG, and increasingly HEIC or HEIF, but acceptance and handling are different things.

PNG is lossless, so there’s no quality loss in your export — but the platform will compress it on ingest, usually to JPEG or WebP for display, at which point you’ve gained nothing over uploading a high-quality JPEG in the first place. The one real use case for PNG uploads is images with transparency or images that are entirely flat graphics with hard edges, where PNG’s lossless compression produces a smaller file than JPEG could at comparable quality.

WebP offers meaningfully better compression efficiency than JPEG at equivalent perceptual quality, and browser support has been broad for several years now (check current platform documentation before relying on it, since acceptance policies vary and change). The tradeoff is that WebP encoded with aggressive settings will still be recompressed by platforms that normalize to their own format.

The codec matters less than the principle: you are not controlling the final file the viewer sees, only the input to the platform’s pipeline. Your goal is to give that pipeline as clean an input as possible — not over-compressed, sized at the platform’s native display dimensions, in sRGB, and without embedded profiles that could trigger unexpected color conversion.

What You Can Actually Control

Given that you can’t opt out of platform recompression, the decisions that affect the visible result are:

The underlying mechanism here is the same one that governs any multi-generation lossy encode: each pass discards information, and information discarded cannot be recovered. The best available strategy is to minimize what you lose in your own export, understand what the platform will do regardless, and treat the two compression passes as a sequence you’re designing for — not a process you’re handing off.

For a broader look at what format decisions look like earlier in the capture-to-export chain, our Image Quality coverage covers compression behavior across formats and workflows in more depth.

More Image Quality material is indexed in the Journal and on the Image Quality page.