Instagram compresses photos because it has to show the same picture to more than two billion people a month, on every kind of phone and every kind of connection, and it cannot afford to store or send the file your camera produced. So every upload, from every account, goes through the same four-step pipeline: scale to 1080 pixels wide, crop to an allowed shape, convert the colours to sRGB, and re-encode as a JPEG. The pipeline itself is not what makes photos blurry. What makes them blurry is handing it a file that forces all four steps to run hard at once, or a file that was already damaged before Instagram touched it.

Here is what happens to your photo, why Instagram does it, how much loss is normal, and what turns a post from "fine" into "why does this look like a photo of a photo".

The four things Instagram does to every photo

1. It scales the width to 1080 pixels. Instagram's help page is explicit: a photo between 320 and 1080 pixels wide is kept at its original resolution. Anything wider is scaled down to 1080. Anything narrower is enlarged to 320. A 4000 px camera export keeps fewer than one pixel in ten after that scale, and the resampler that does it is built for speed, not for hair and foliage.

2. It crops to an allowed ratio. Feed posts have to sit between 1.91:1 (wide) and 4:5 (tall), plus the 3:4 shape Instagram added in May 2025. A 9:16 screenshot or a 2:1 panorama gets cropped in the composer. The crop happens before the scale, so an unsupported ratio loses pixels twice.

3. It converts colour to sRGB. Display P3 from an iPhone and Adobe RGB from an editor are both mapped to sRGB. That is harmless when the file carries a correct profile. It goes wrong when the profile is missing, or when the photo is HDR and there is no sensible SDR version of it.

4. It re-encodes as JPEG. Whatever you send (JPEG, PNG, HEIC), Instagram decodes it and encodes it again with its own JPEG settings, and strips the metadata. Only that copy is stored, which is why you cannot download your original back out of the app. The encoder decides how much detail survives, and the only vote you get is the file you supply.

Why Instagram does it

Three reasons, all about scale rather than spite.

Bandwidth. A feed scroll loads dozens of images in a few seconds. If each were a straight camera export of several megabytes, the app would be unusable on mobile data, and unusable in most of the world where mobile data is the only data.

Storage. Instagram passed two billion monthly users in 2022, and each one can post as much as they like. Keeping one 1080 px copy per photo is affordable. Keeping originals is not, so the original is thrown away after processing.

Consistency. One 1080 px sRGB JPEG looks the same on a six-year-old Android phone, a new iPhone, the web app, the profile grid and a DM. Supporting HDR, wide colour and any pixel size everywhere would mean a different rendering path for every screen.

The cost of doing this at that volume is that the resize is a fast, single-pass one. Photo editors downscale in steps and sharpen afterwards. Instagram's servers do not have that luxury, and that is where the "soft" look of a big upload comes from.

How much loss is normal

Honest answer: a little, and mostly invisible at phone viewing distance.

If you upload a 1080 px wide JPEG that lands between 500 KB and 1 MB, Instagram's re-encode costs you three things: a slight softening of the finest textures (hair, fabric weave, distant leaves), faint banding in smooth gradients like skies and studio backdrops, and small halos around very high-contrast edges, which you notice most on text. Pinch to zoom and you can find all three. Scroll past at normal size and you cannot.

That is the floor. No setting, no app and no tool gets below it, because the re-encode always happens. If your post looks clearly softer than the file on your phone at the same size, the loss is not normal, and one of the causes below is responsible.

What makes it worse

Oversized files. A 12, 24 or 48 megapixel export makes Instagram do the biggest resize in one blunt pass, then compress the result. In our tests, files over about 2 MB are also compressed harder than files in the 500 KB to 1 MB band. Bigger is not safer here; it is the single most common cause of soft posts.

The wrong aspect ratio. Anything outside 1.91:1 to 4:5 (or 3:4) is cropped by Instagram, then resized. You lose composition you did not choose to lose, and the pixels get resampled twice.

PNG uploads. PNG is converted to JPEG anyway. A photographic PNG is several times the size of the equivalent JPEG, which means a slower upload and, on a weak connection, a bigger chance that the app sends a reduced version. Screenshots are PNGs on most phones, which is one of two reasons they post badly.

HDR and wide-gamut colour. Instagram converts everything to sRGB. A Display P3 or Adobe RGB export with a proper profile comes through slightly duller. An iPhone HDR photo can come through flat and grey, because the gain map that made it glow on your screen is dropped on upload in many app versions. Stories never show HDR at all.

Data saver and the quality switch. With Use less mobile data on, or Upload at highest quality off, the app can downscale and recompress on the phone before the server even sees the file. That is two rounds of compression instead of one. The HD upload settings guide shows where both switches are.

A weak connection. Instagram adapts to your signal. On a poor connection it may upload a lower-quality version so the post goes through. Stories are affected most.

Screenshots. A screenshot is already a compressed rendering of the screen, at your phone's screen size, which matches no Instagram format. It gets cropped to 4:5, scaled, and re-encoded, and the thin text and lines that screenshots are full of are exactly what JPEG handles worst.

WhatsApp copies. A photo received on WhatsApp has already been scaled to about 1600 px and squeezed to roughly 100 to 200 KB. Posting it means a second heavy re-encode on top of the first. If you need to move a photo between phones, send it as a document, or use the HD option, so the original arrives intact.

What fixes it

The rule: give Instagram a file that already meets all four conditions (1080 px wide, an allowed ratio, sRGB, a JPEG between 500 KB and 1 MB). The pipeline then has almost nothing left to do, and the re-encode stays invisible.

In practice that means:

  1. Crop to 4:5 (1080×1350) or 3:4 (1080×1440) yourself, so Instagram does not crop for you.
  2. Resize to exactly 1080 px wide with a proper filter, then sharpen lightly on the final pixels.
  3. Export a JPEG in sRGB and check that it lands between 500 KB and 1 MB.
  4. Turn on Upload at highest quality, turn off Use less mobile data, and post on Wi-Fi.

The full version of that process, with export settings and the app menus, is in how to upload sharp photos on Instagram, and the exact pixel sizes for every format are on the post size page. If you want to skip the manual steps, the tool below runs the whole sequence in your browser: it crops, resizes in steps, sharpens the result, and searches for the JPEG quality that lands in the right file-size band. Nothing is uploaded anywhere.

Try it on your own photoSocial-ready photos, smaller files, nothing uploaded
Compress a photo

What no tool can change

Two honest limits. First, Instagram will re-encode your file no matter what you do; the goal is to make that re-encode trivial, not to avoid it. Second, nothing can put detail back into a screenshot, a WhatsApp copy or a 640 px image. If the source is already damaged, the best you can do is stop it getting worse, which the resize-and-sharpen step does, but the result will not match a clean export.

In short

  • Instagram scales to 1080 px, crops to 1.91:1 through 4:5 (or 3:4), converts to sRGB and re-encodes as JPEG. Every time.
  • It does this for bandwidth, storage and consistency across two billion accounts.
  • A correctly sized 500 KB to 1 MB JPEG loses almost nothing you can see.
  • Big files, wrong ratios, PNGs, HDR, data saver, weak signal, screenshots and WhatsApp copies are what turn that into visible blur.
  • Fix the file before you upload, and the compression stops being your problem.