I used to assume Instagram just left your photo alone once it "fit" the frame. It doesn't. The app quietly re-compresses almost everything on upload to keep its own bandwidth costs down, whether you notice or not. So the real goal isn't fighting that compression, it's handing Instagram a file that's already close to what it wants, so its algorithm has less destructive work left to do.
Current dimensions worth knowing
- Square posts: 1080 × 1080px
- Portrait posts: 1080 × 1350px — this one shows more real estate in-feed
- Landscape posts: 1080 × 566px
- Stories & Reels: 1080 × 1920px, the standard 9:16
- Profile photo: 320 × 320px minimum, shown as a circle, so keep anything important away from the corners
Go outside these ratios and the app crops rather than resizing proportionally, which is exactly how people end up with a friend's head cut off once it lands in the feed even though it looked totally fine on upload.
File size still matters, even on a platform that re-compresses everything
You'd think a platform doing its own compression wouldn't care about your original file size. It still does, mostly because slow uploads on mobile data remain one of the most common reasons a post fails to publish or gets stuck spinning on "processing" forever. I try to keep a feed photo around 200–500 KB before upload — small enough to go up instantly, large enough that Instagram's own pass doesn't have much left worth destroying.
One thing I've noticed running business accounts for a while, and this isn't an official rule anywhere: portrait posts at 4:5 just take up more vertical space scrolling through the feed, which means more time on screen per view. If you're exporting square out of habit, it's worth a second look.
Reels and Stories want the full canvas
Drop a horizontal video still or a square image into a Reel and Instagram either crops it hard or pads the sides with a blur. If you're pulling a still image for a Story, resize it to fill that 1080 × 1920 canvas before you upload rather than letting the app stretch or letterbox it for you.
My actual workflow at this point: shoot or export at whatever resolution the camera gives, resize down to the exact dimension for whatever I'm posting, compress to land somewhere around 200–500 KB depending on how busy the shot is, then upload on Wi-Fi when I can (still faster, and the compression seems a touch gentler on a stable connection).
You can do the resize-and-compress part in one pass with ImgReduce's dimension mode — set the width and height, lock the aspect ratio, export as JPEG or WebP, done.