Compress an image to 100 KB
Hit an exact 100 KB limit with a local binary-search encoder that shows every attempt. No upload, no queue, no cap on how many images you try.
- Runs in your browser
- Files are never uploaded
- Free, no account
1 KB = 1024 bytes, the same arithmetic your operating system uses.
Only kicks in when quality 5 still overshoots.
Why “100 KB exactly” is hard, and how this page does it
There is no formula that turns a quality setting into a file size. Quality 74 might give 42 KB for a studio portrait and 380 KB for a photo of a hedge, because JPEG spends its bits on detail and those two images have wildly different amounts of it. Every tool that offers a quality slider and hopes for the best is asking you to guess, then re-upload, then guess again.
So this page measures instead. It encodes at quality 92 and checks the byte count. If that already fits, it stops — you keep the best possible quality. If not, it binary-searches: encode at the midpoint of the remaining range, and if the result fits, remember it and raise the floor; if it does not, lower the ceiling. Nine or ten rounds narrow the range to a single quality point, and the highest passing encode is the file you download. Every attempt is listed in the result card with its quality and byte count, so nothing about the choice is hidden.
The reason upload sites cannot do this
On a server-based compressor each attempt costs a round trip: your photo goes up, an encoder runs, the result comes back. Ten attempts is ten uploads, which is why those services offer one quality slider and a single shot at it, and why the free tiers cap you at two or three jobs a day. Here the encoder is MozJPEG compiled to WebAssembly, running on your own CPU: ten encodes of a 12-megapixel photo take well under a second, so an exact target is not just possible, it is the obvious way to do it.
What actually fits in 100 KB
| Content | Comfortable size at 100 KB |
|---|---|
| Passport-style portrait, plain background | 1200 × 1600 px at quality 80+ |
| Product shot on white | 1600 px wide, visually lossless |
| Ordinary outdoor snapshot | 1200 px wide at quality 70–80 |
| Foliage, crowds, water, film grain | 800 px wide, and it will still look soft |
| Screenshot with text | Use PNG and resize instead — JPEG rings around letters |
If quality alone cannot get there
When even quality 5 overshoots — typical for very large or very detailed photos — the tool switches to a second binary search, this time on the pixel dimensions, using a Lanczos3 resample. It reports the scale it settled on so you know what happened. If the dimensions must not change, switch that fallback off; you will then get the smallest file the quality search could produce, plus a clear warning that the target was missed.
Get more out of the same 100 KB
- Crop first. Every pixel you remove is a pixel the encoder does not have to spend bits on. A tight crop at 100 KB beats a wide scene at 100 KB every time.
- Cap the width. Use the width field. A photo displayed at 800 px does not need 4000 px of data.
- Try WebP. Where the destination allows it, WebP holds roughly 25–35% more detail than JPEG at the same byte count.
- Start from the original. Re-compressing an already-compressed JPEG compounds the first generation's errors. Always go back to the camera file.
Kilobytes, kibibytes and the 2% margin
We treat 1 KB as 1024 bytes — the arithmetic your operating system's file browser uses — and aim 2% under the limit. That margin exists because upload validators compare against a hard byte ceiling and reject a file one byte over, and because a handful of them measure the base64-encoded size rather than the raw one. A 100 KB target therefore produces a file of about 100,000 bytes or less, which satisfies both the 1024 and the 1000 interpretation.
Batch and ZIP
Drop in as many images as you like. Each one gets its own independent search to the same target, with a progress row as it goes, and you can download them individually or as a single ZIP. There is no ten-file cap, no daily quota and no account, because there is no server cost to ration.
Other targets
50 KB · 200 KB · 500 KB · 1 MB · any target you type. For a quality slider rather than a byte target, use Compress Image.
Questions
How does it hit the exact size?
By measuring rather than guessing. There is no formula from “quality 74” to “96 KB” — it depends entirely on the picture. The tool encodes at quality 92, then binary-searches the quality range, keeping the highest setting that still fits. Ten local encodes take well under a second, and every attempt is listed so you can see the search.
Is 100 KB 100,000 or 102,400 bytes?
We treat 1 KB as 1024 bytes and aim 2% under the limit, so the file is comfortably inside either interpretation. Upload forms compare against a hard byte ceiling and reject anything one byte over.
What if quality alone cannot get there?
The tool switches to a second search on the pixel dimensions, shrinking the image with a Lanczos filter until it fits. You can turn that off if the dimensions must stay exactly as they are.
Why do upload sites struggle with this?
Because every attempt costs them a round trip. On a server-based compressor each retry means re-uploading your photo; here the whole search happens on your CPU, which is why an exact target is practical at all.
Can I do a whole batch?
Yes. Drop in any number of images, each is searched separately to the same target, and you can download them individually or as one ZIP.