Instagram does not hate your photos. It just runs every upload through the same fast, blunt pipeline: scale to 1080 pixels wide, crop to an allowed ratio, convert to sRGB, re-encode as JPEG. Give it a photo that already meets all four conditions and that pipeline has almost nothing to do. Give it a 24-megapixel camera export and it does all four at once, with a resampler tuned for speed rather than detail. That is the entire difference between a crisp post and a soft one.

Here is the process that has held up across a lot of testing on iPhone and Android, in the order that matters.

1. Export at 1080 px wide, in 4:5 or 3:4

Instagram's own help page says the app keeps the original resolution when the width is between 320 and 1080 pixels and the aspect ratio is between 1.91:1 and 4:5. Since 2025 it also accepts 3:4 natively, and it previews every post on your profile grid at 3:4.

So the target is simple:

FormatPixelsUse it for
Portrait 4:51080×1350Almost every feed photo
Tall 3:41080×1440Filling the grid exactly, phone-camera shots
Square 1:11080×1080Products, logos, older libraries
Landscape 1.91:11080×566Panoramas, screenshots (looks small)
Story / Reel1080×1920Stories, reels, covers

Anything wider than 1080 gets scaled down on the server. Some newer app builds appear to serve sharper images from 1440 px uploads (1440×1800), and it is worth testing on your own account, but 1080 is the documented, safe choice.

2. Crop before Instagram does

If your photo isn't one of the allowed ratios, Instagram forces a crop in the composer and you get whatever fits. Cropping yourself first means you decide what stays, and it also means the resize in the next step only has to do one thing.

Since the profile grid crops everything to 3:4, which is narrower than 4:5, keep faces and text away from the left and right edges of a 4:5 post, or just post 3:4.

3. Resize properly, then sharpen

This is the step most people skip, and it is the one that makes the difference between "fine" and "sharp".

A downscale always softens edges a little. Editors like Lightroom compensate with output sharpening applied after the resize, on the final pixels. Sharpening before the resize does nothing, because the detail you added is thrown away when the pixels are removed.

If you export from Lightroom: set the long edge to the right pixel count, and enable output sharpening for Screen at Standard. In Photoshop: Image Size with Bicubic Sharper, then a light Unsharp Mask (amount 40–60, radius 0.6–1.0). On a phone, most apps don't offer this at all, which is why IGCOMPRESSOR exists: it resizes in steps and applies a one-pixel unsharp mask automatically.

Rule: resize first, sharpen second, compress third. Any other order costs you detail.

4. Land the file between 500 KB and 1 MB

Instagram re-encodes every upload as JPEG. The size of the file you give it changes how hard that re-encode is.

From testing: files under about 300 KB show blocky artifacts after Instagram's pass, because you have already thrown away the detail Instagram's encoder wanted to keep. Files over about 2 MB tend to be compressed harder. The band between 500 KB and 1 MB at 1080 px comes through looking like what you uploaded. That is why the tool's Instagram presets aim for roughly 850 KB.

Export as JPEG, not PNG. Instagram converts PNG to JPEG anyway, so a PNG only makes the upload bigger and slower.

5. Use sRGB and skip HDR

Instagram converts other colour profiles to sRGB. A photo exported in Adobe RGB or Display P3 comes out dull and slightly off. Export sRGB and it stays the way you edited it.

iPhone HDR photos deserve a separate warning: Instagram can show HDR gain-map JPEGs in the feed, but not in stories, and uploads from the iPhone app often lose the HDR data and end up flat. If the photo looks washed out after posting, export a standard SDR JPEG and try again.

6. Turn on the app's high-quality setting

The Instagram app has a switch that decides whether it downscales on the phone before uploading. It is off by default on many installs.

  1. Open your profile and tap the menu (three lines).
  2. Tap Settings and activity.
  3. Tap Media quality (on Android it is under Data usage and media quality).
  4. Turn on Upload at highest quality.
  5. While you are there, make sure Use less mobile data is off when you post.

Older app versions call the menu Settings and privacy and put the toggle under Data usage. Same switch.

7. Post from a good connection

Instagram adapts to your connection. On a weak signal it can upload a lower-quality version to finish faster, especially for stories. Post on Wi-Fi or a strong 5G signal, and wait for the upload to complete before locking the phone.

What about stories and reels?

Stories are compressed harder than feed posts. The same rules apply, and they matter more: export exactly 1080×1920, keep text and faces out of the top and bottom 250 px, and keep the file under about 1.5 MB. Reel covers get the same treatment, with the extra twist that the profile grid shows only the centre 3:4 of the cover. The story size page draws those zones on the preview.

A quick way to do all of this at once

Drop the photo into IGCOMPRESSOR, choose 4:5 or 3:4, drag to set the crop, and download. The tool crops, resizes in steps, sharpens on the final pixels, and searches for the JPEG quality that lands between 500 KB and 1 MB. Nothing is uploaded; the whole thing runs in your browser and works offline. Then upload the file with the high-quality setting on.

Try it on your own photoDrop a photo at the top of the page. Ten seconds later it's sized, sharpened and ready to post.
Compress a photo

Checklist

  • 1080 px wide, 4:5 (1080×1350) or 3:4 (1080×1440)
  • Crop yourself, with the 3:4 grid in mind
  • Resize with a good filter, then sharpen lightly
  • JPEG, sRGB, 500 KB to 1 MB
  • Upload at highest quality switched on, data saver off
  • Strong Wi-Fi, and don't interrupt the upload

Do those six things and Instagram's compression stops being visible. It still happens; you just don't see it.