Home / Blog / Compress Images for Instagram
You upload a gorgeous 24-megapixel photo to Instagram. It comes out looking like a blurry, over-compressed mess. You're not imagining it, Instagram actively destroys your image quality. The fix isn't to upload a bigger file. It's to upload a smaller, smarter one so Instagram has nothing left to ruin.
The short version: Resize to 1080×1350 (4:5 feed post) or 1080×1920 (9:16 story), export as JPEG at quality 90+, and upload. Do it in your browser with Saint Web Image, no upload to any server required.
Instagram has to serve hundreds of millions of posts per day to phones on flaky mobile connections. To keep things fast and cheap, it runs every uploaded image through an aggressive compression pipeline:
If the photo you upload is already close to the final state Instagram wants, 1080 pixels wide, JPEG, high quality, sRGB color space, the compression step has almost nothing to do. Your photo survives intact. If your photo is far from that state (say, a 6000-pixel-wide PNG in Adobe RGB), Instagram has to do a lot of work, and every step introduces quality loss.
The trick is doing the conversion yourself, with settings you control, before Instagram gets its hands on your photo.
Instagram's own help docs are vague about this. Here's what actually works in practice:
| Post type | Aspect ratio | Dimensions |
|---|---|---|
| Feed, portrait (recommended) | 4:5 | 1080 × 1350 |
| Feed, square | 1:1 | 1080 × 1080 |
| Feed, landscape | 1.91:1 | 1080 × 566 |
| Stories | 9:16 | 1080 × 1920 |
| Reels | 9:16 | 1080 × 1920 |
| Profile picture | 1:1 | 320 × 320 (displayed), upload 1080 × 1080 |
| Carousel | Match first slide | 1080 × 1080 or 1080 × 1350 |
The golden rule: everything is 1080 pixels on the short side. Instagram's pipeline assumes that. Give it anything else and you're asking for unnecessary re-compression.
Why 4:5 portrait beats 1:1 square: portrait posts take up more vertical space in the feed, which means more attention and typically more engagement. If you only remember one number from this article, make it 1080×1350.
Instagram converts everything to JPEG internally. Uploading a 12 MB PNG just wastes bandwidth and triggers heavier compression on Instagram's end. Export your photo as JPEG at quality 90–95 before uploading.
PNG seems like the obvious choice for graphics with text and sharp edges. But Instagram will convert it to JPEG anyway, and JPEG is bad at sharp edges, producing visible halos around text. Two workarounds:
If your iPhone is set to save photos in HEIC format, Instagram's mobile app can upload them directly, but the desktop uploader can't. More importantly, Instagram still re-encodes HEIC to JPEG on their servers, so there's no quality benefit to starting with HEIC. Convert HEIC to JPG first, then upload.
See our guide: How to convert HEIC to JPG without uploading your photos.
Every step runs in your browser. Your photos never get uploaded to any server, which is especially important if they contain GPS metadata or subjects who didn't agree to a random website seeing their face.
iPhone photos are captured at 12 megapixels (4032×3024). Instagram's app scales them down to 1080×810 before uploading. That downscaling happens inside the app, with no quality control. Resizing yourself first gives better results because you can use a high-quality algorithm and export at your chosen JPEG quality.
Taking a screenshot of a photo on your phone creates a PNG that Instagram then compresses to JPEG, stacking two lossy steps on top of the original. Always upload the source photo, not a screenshot.
It's tempting to export at JPEG quality 60 thinking "Instagram will compress it anyway." Don't. Instagram's compression is applied to whatever you give it, so a low-quality input becomes an even worse output. Start high (quality 90+) so Instagram's compressor has headroom.
Instagram expects sRGB. Photos in wider color spaces get converted, and the conversion often shifts colors subtly, reds lose saturation, skies get cooler. If you're editing in Lightroom or Photoshop, export as sRGB explicitly.
Instagram uses the first slide's aspect ratio for the whole carousel. Slides with different ratios get cropped or letterboxed. Pick a ratio and resize every slide to match before uploading.
At 1080×1350 and JPEG quality 92, a typical photo will be 300–500 KB. A photo with lots of detail (foliage, crowds, patterns) might hit 800 KB. Anything above 1 MB means your quality setting is too high or your dimensions are wrong, bring them down.
Instagram's maximum file size is 30 MB, but that's a ceiling, not a target. Huge files don't give you better quality; they just get compressed harder on the way in.
For feed posts, 1080×1350 pixels (4:5 portrait) gives the highest quality and takes up the most screen real estate. For stories and reels, use 1080×1920 (9:16). For square posts, use 1080×1080 (1:1).
Instagram re-compresses every uploaded image to save bandwidth. If your photo is larger than 1080 pixels wide, doesn't match Instagram's preferred aspect ratios, or is already heavily compressed, the re-compression becomes visible as blur and artifacts. Resizing to exactly 1080 pixels wide before uploading prevents this.
Always JPG for photos. Instagram converts everything to JPG anyway, so uploading PNG just wastes bandwidth and can trigger heavier re-compression. PNG only makes sense for graphics with sharp text or transparent elements, and even then, Instagram will flatten the transparency.
Export at JPEG quality 90–95. Instagram will re-compress to roughly quality 75 internally, so starting high gives the algorithm more headroom to work with. Below quality 85, you'll see visible banding and artifacts in the final post.
Instagram's compression is unavoidable, but its damage is. Resize to 1080 pixels on the short side, match one of Instagram's preferred aspect ratios, export JPEG at quality 92, and your photos will survive the upload looking nearly identical to the original. A two-minute detour through a proper converter beats hours of fiddling with phone settings and re-uploading.