Skip to content
SocialTools

Compress Images for Instagram & Web

Shrink image file size in the browser before you upload to Instagram or a website. Choose quality so text and faces stay sharp.

Image ToolsAll platformsReviewed 2026-09-11 by SocialTools editorial. How we test

Images never leave your browser - processed 100% locally.

Preview updates live as you drag

Live compressed preview
Upload an image to see a live preview

Runs in your browser. Nothing you enter is uploaded.

Overview

A photo straight off a phone is commonly 4-8 MB at 4032 pixels wide. Nothing on a social feed or a web page needs either number. This compressor re-encodes the image as JPEG at a quality level you control, optionally capping the width first, and shows you the resulting file size next to the original before you download anything.

The whole operation runs on a canvas element inside your browser. The file is read into memory from the drop zone, redrawn, and re-encoded locally - it is never sent to a server, which is why there is no upload progress bar and no wait.

Two separate levers reduce bytes, and confusing them is the usual reason people are disappointed. Quality changes how much detail the JPEG encoder discards at the same pixel dimensions. Max width changes the pixel dimensions themselves. The second is far more powerful, and on an oversized phone photo it is almost always the one you want first.

Reading the quality slider honestly

JPEG quality is a knob on the encoder, not a percentage of visual fidelity. Between 1.00 and about 0.85 the file shrinks substantially while almost nothing visible changes, because you are mostly discarding precision the eye was never going to use. Around 0.80 is where most photographic content still looks identical at feed size. Below roughly 0.60 you start seeing blocking in smooth gradients - skies, studio backdrops, skin - and around flat-coloured shapes.

The material matters more than the number. Photographs with fine texture hide compression artefacts well. Screenshots, logos, charts, and anything with crisp text against flat colour show them immediately as coloured fringing around the edges, because JPEG was designed for continuous-tone images and text is the opposite of that.

The preview updates live as you drag, so the reliable technique is to pull the slider down until you can see the damage, then move back up two or three steps. That lands you at the real threshold for this particular image rather than at a number someone recommended for a different one.

Why capping the width usually does more than the slider

File size scales roughly with pixel count, which scales with the square of the width. Halving a 4000-pixel-wide photo to 2000 removes about three-quarters of the pixels before the encoder does any work at all. Dropping quality from 0.9 to 0.7 on the full-size original will not come close to the same saving.

Choose the cap by destination. Instagram serves feed images at roughly 1080 pixels wide, so anything beyond about 1440 is discarded by their pipeline anyway. Full-width web hero images are well served at 1920. Inline blog images rarely need more than 1200. Setting max width to 0 disables the cap and leaves the original dimensions intact.

There is no upscaling. If your image is already narrower than the cap, the width setting does nothing and only the quality slider affects the output.

  • Social feed post: 1080-1440 px wide at quality 0.80.
  • Full-bleed web hero: 1920 px at 0.80-0.85.
  • Inline article image: 1200 px at 0.80.
  • Email or messaging attachment: 1080 px at 0.70 is usually indistinguishable on a phone.

What happens between drop and download

Your file is read as a data URL and decoded into an image object. If a max width is set and the image is wider, target dimensions are computed by scaling the height proportionally so the aspect ratio is preserved exactly. A canvas is created at those dimensions, filled with opaque white, and the image is drawn onto it.

That white fill is deliberate and has a consequence worth knowing: JPEG has no alpha channel, so any transparent region in a source PNG becomes white rather than black or garbage. If your logo was designed to sit on a dark background, compressing it to JPEG here will surround it with white.

The canvas is then encoded with toBlob at image/jpeg and your chosen quality value. The resulting blob size is measured directly and compared with the original file size to produce the savings percentage - so that figure is a real byte-for-byte measurement, not an estimate. Every parameter change re-runs the whole pipeline from the decoded original, which means quality loss never accumulates across adjustments.

A phone photo through two different settings

Input

Source: IMG_4471.HEIC exported as JPEG, 4032 × 3024, 5.9 MB
Setting A: quality 0.60, max width 0
Setting B: quality 0.80, max width 1440

Output

A - Compressed 1.94 MB · Savings 67% · Output size 4032×3024
B - Compressed 0.31 MB · Savings 95% · Output size 1440×1080

Setting A hurt the image and barely solved the problem: heavy quality loss visible in the sky, still nearly two megabytes. Setting B kept a quality level where artefacts are hard to find and produced a file six times smaller, because removing 87% of the pixels does more than any encoder setting can. Resize first, then compress - that ordering is the whole lesson.

Limitations

  • Output is always JPEG. Transparency is flattened to white and cannot be recovered, so logos and cut-out product shots should go through the format converter instead.
  • JPEG is lossy and one-way. Re-compressing an already-compressed file degrades it further; always work from your highest-quality original.
  • EXIF metadata, colour profiles, and orientation tags are dropped by the canvas re-encode. Images relying on an embedded profile may shift slightly in colour.
  • Very large files are decoded entirely in memory. Multi-hundred-megapixel images can stall or fail on phones and low-memory machines.
  • Files are processed one at a time - there is no batch queue or folder mode.
  • The encoder is your browser’s. Chrome, Safari, and Firefox produce slightly different bytes at the same quality value.

When not to use this tool

  • For logos, icons, screenshots with text, or anything needing transparency, JPEG is the wrong container - use the image format converter to reach PNG or WebP.
  • If your actual goal is fitting a platform’s aspect ratio rather than reducing bytes, the image resizer or cropper controls framing; this tool only scales proportionally.
  • For archival masters, do not compress at all. Keep the original and compress copies for distribution.

How to use it

  1. 1

    Drop the highest-quality original you have into the drop zone rather than a file that has already been through another compressor.

  2. 2

    Set max width to the largest size your destination actually displays - 1080 or 1440 for social, 1920 for a web hero - before touching quality.

  3. 3

    Drag the quality slider down while watching the live preview until artefacts appear, then move back up two or three steps.

  4. 4

    Check the compressed size and savings readout, then download the JPEG and keep your uncompressed master separately.

Questions

The savings percentage says 95% - did it wreck my photo?

Not necessarily, and usually not. Most of that reduction comes from the pixel-count cut when a max width is applied, which is lossless in perceptual terms as long as the output is still larger than the display size. Judge the preview, not the percentage; a 95% saving from downscaling looks fine, while a 60% saving from a quality of 0.35 will not.

Why did my transparent PNG come out with a white background?

Because the output is JPEG, which has no alpha channel. The canvas is filled with white before drawing so transparency resolves predictably rather than to black. If you need transparency preserved, convert the format instead of compressing here.

Should I compress before or after resizing for a platform?

Resize or crop to the target framing first, then compress the result. Compressing early bakes in artefacts that the later resize will resample and sometimes amplify, and you lose the pixel headroom the crop might have needed.

Does compressing images help page speed and SEO?

It helps page speed directly, and image weight is frequently the largest single contributor to Largest Contentful Paint on content pages. Speed is one input among many to search ranking, so treat faster loading as the real benefit and any ranking effect as indirect.

Can I get an exact target file size, like under 1 MB?

Not automatically - there is no target-size mode. The practical approach is to set a sensible max width, then drag the quality slider while watching the compressed size readout until it crosses under your limit.