Stop social apps from recompressing your images twice

Every social platform recompresses your photos on upload. Here is exactly how Instagram, X, and LinkedIn do it, and what to compress beforehand so the platform stops mauling your work.

Og Image

You spend an hour color-grading a photo. You export it at quality 95. You drop it into Instagram. Two minutes later it shows up in the feed looking softer, with a faint banding in the sky and a slightly muddy red on the t-shirt that was vivid in the original. The platform recompressed it. That is the whole story, and once you know how each platform does the recompression, you can stop fighting the algorithm and start feeding it what it wants.

This is a short, practical piece about three platforms and what to upload to each so the recompression stops mattering.

图像压缩器

图像压缩器

批量压缩为 WebP、AVIF、JXL,支持高级参数调节

What "the platform recompressed it" actually means

Every major social platform reads your upload, decodes it to raw pixels, applies its own resize and recompression pipeline, and writes a new file. They do this for two reasons: bandwidth (smaller files load faster on phones over LTE) and consistency (the platform wants a uniform format on its CDN). Whether you uploaded a 12 MB camera RAW or a 200 KB phone screenshot, you get a generation loss.

The trick is that the loss is not equal for every input. If you upload a perfectly tuned file that already matches what the platform would produce internally, the recompression does almost nothing visible. If you upload a 4000 × 3000 pixel JPEG at quality 100, the platform throws away most of it and the loss is brutal.

Instagram: 1080 wide, JPEG around quality 85

Instagram's pipeline has been measured by enough people to be a known quantity by now. It downscales anything wider than 1080 pixels to 1080 pixels. It re-encodes as lossy JPEG at roughly 85% quality. A reported 1.6 MB original can come out the other side at 125 KB, which is a thirteenfold reduction.

The damage compounds the most when:

  1. You upload at a non-standard width (say 1440 px), because the resize step has to invent intermediate pixel values.
  2. Your original is already aggressively compressed, so the second pass eats into detail that was already half-gone.
  3. The image has gradients or skies, which JPEG handles by adding visible banding when quality drops.

The fix is unsexy. Pre-resize to exactly 1080 pixels wide. Pre-encode as JPEG at quality 88 to 92, which is comfortably above what Instagram will re-encode to, so the recompression step has less to "improve." Use 4:4:4 chroma subsampling (force quality 90+ in most encoders) if your photo has sharp colored edges or text.

Skip the temptation to pre-encode to WebP or AVIF. Instagram is going to re-encode to JPEG anyway, so handing it a WebP just adds a decode-and-recompress step that costs you a small amount of additional quality.

X: PNG escape hatch, but only if you do it right

X (formerly Twitter) is the platform with the most exploitable loophole. By default it converts uploaded PNGs to JPEG. The exception: if your PNG has at least one transparent pixel, X will leave it alone. The other exception: PNGs under 900 pixels in either dimension stay as PNG. Same for PNG8, the indexed-color flavor.

This means a screenshot or a flat-color illustration uploaded as PNG with a single transparent pixel in the corner survives the upload pipeline pixel-perfect. No JPEG quantization, no chroma subsampling, no recompression artifacts. The file size cap on the platform sits around 5 MB for a single tweet, which is plenty of room for a sharp screenshot.

The trick has been documented for years and X has not closed it, presumably because it costs them very little CDN bandwidth versus the goodwill from photographers and designers. Use it.

For actual photographs you do want JPEG. Save at quality 85 to 90, sRGB color profile, under 5 MB. The tweet pipeline will recompress lightly but the visible loss is small if your input is already tuned.

A side-by-side of the same image uploaded to X as JPEG versus as PNG with a transparent pixel, with a callout on file size and detail retention

LinkedIn: 8 MB cap, portrait wins

LinkedIn allows up to 8 MB per image and accepts aspect ratios from roughly 3:1 down to 4:5. The recompression is less aggressive than Instagram's but still real. The same advice applies: design at 1080 × 1350 portrait for the newsfeed, save as JPEG at quality 88 to 92, keep the file under the cap.

Profile photos and cover images both top out at 8 MB and the company avatar uses 400 × 400 as the recommended baseline.

LinkedIn has a quiet behavior that catches people: it strips a lot of EXIF metadata on upload, including camera info and color profile in some cases. This usually does not matter for what you are posting, but if you are uploading a photo that requires a specific color profile to look right (say, a tightly graded product shot in sRGB versus Display P3), embed the profile in the file and accept that LinkedIn may still flatten the colors slightly on its end.

The recompression-twice problem

The headline question of this article is about a specific failure mode. You compress your image once at home. You upload it to the platform, which recompresses it. Now you are looking at a doubly-compressed image and wondering why it looks bad. The fix:

  • Compress once, intentionally, at the platform's target dimensions and a slightly higher quality than the platform is going to re-encode to.
  • Do not export at quality 100 then "save space" by recompressing in a second tool. Two compression passes at modest quality are worse than one compression pass at slightly higher quality.
  • Do not upload the same image to multiple platforms by re-saving the platform-A version. Always re-export from your original (or your first compressed copy) for each new platform.

The principle is simple. Every JPEG-to-JPEG pass eats a small amount of detail. Two passes are visibly worse than one. Five passes ruin the file.

A workflow that actually holds up

For a single photo destined for all three platforms, the practical sequence:

  1. Edit and color-grade in your photo app of choice. Save the master as a TIFF, PSD, or maximum-quality JPEG at the original camera resolution. This is your archive.
  2. From the master, export three platform-specific versions. Instagram: 1080 × 1350 portrait, JPEG q90. X: 1600 wide JPEG q88, or 1600 wide PNG with one transparent corner pixel if it is a screenshot or flat-color graphic. LinkedIn: 1080 × 1350 portrait JPEG q90, under 8 MB.
  3. Upload each platform version to its platform. Do not re-share between platforms by downloading from one and uploading to another, because that triggers a second recompression.

The image-compressor tool can do all three exports in one pass, since it is just changing the resize and quality settings between renders. Drop the master in, encode once for each platform, download the bundle. The whole thing is faster than re-opening Photoshop three times.

A three-panel workflow chart showing master file at top branching into Instagram, X, and LinkedIn-tuned versions with target dimensions and quality labels

The catch nobody mentions

Pre-tuning your uploads helps a lot, but it does not solve everything. Platforms occasionally change their pipelines. Instagram raised its max upload to 30 MB and shifted feed recommendations from squares to portraits a couple of years ago, and the recompression curve shifted with it. X's PNG escape hatch could be closed any week. The advice above is current as of early-to-mid 2026, and re-checking it every six months is not a bad habit if you publish a lot.

The headline framing still holds: every social platform recompresses on upload, the second compression is worse than the first, and your job is to make the first one count.

继续阅读