Essentials
Compress an image to a target size
Make an image fit an upload limit — under 100 KB, 500 KB, 1 MB or any size you set. Image reports success only when the file really fits.
No upload. No account. Nothing stored.
Drop an image here
or
JPEG, PNG, WebP, AVIF or GIF. Processed in your browser — nothing is uploaded.
How it works
Pick a target and Image searches for the best quality that fits. It first tries high quality (95%); if that already fits, you get the best-looking result. Otherwise it encodes at the lowest allowed quality and binary-searches between the two, keeping the largest file that is still under the target — the highest quality that fits.
Keep dimensions only lowers quality (to as little as 5%). Allow resize if needed keeps quality at 60% or above and makes the image smaller in pixels instead, which looks far better than heavy compression. Image tells you exactly what it did.
Sizes are decimal: 1 KB = 1,000 bytes. That's the stricter reading of a limit, so a file made for “500 KB” fits whether the website counts 500,000 or 512,000 bytes. If the target can't be reached, you see the smallest result and why — it is never reported as a success.
Worked example
Target 500 KB (500,000 bytes) for a 3.6 MB, 4000 × 3000 JPEG with Keep dimensions:
- Quality 95% → 2.9 MB — too big.
- Quality 5% → 180 KB — fits, so the answer lies between.
- Quality 50% → 540 KB — too big. Quality 27% → 380 KB — fits.
- Quality 39% → 470 KB — fits and is within 8% of the target, so the search stops.
Result: 470 KB at quality 39%, 4000 × 3000. With Allow resize the same photo would instead keep quality ≥ 60% at roughly 2600 × 1950 px. (Exact byte counts depend on the photo.)
Edge cases handled
- Already under the target: you're told, and get a metadata-free copy that still fits.
- Impossible without resizing: reported as not reached, with the smallest size achieved.
- Transparent images: WebP keeps transparency; JPEG asks for a background colour.
- PNG output can't be size-targeted losslessly, so targets produce JPEG or WebP.
- Tiny targets with resizing stop at a 16 px edge rather than shrinking forever.
- Cancel stops the search immediately.