Compress an image to 100 KB
100 KB is the hardest of the three target sizes: for a large photo it is often not reachable without visible loss. This tool tells you which of the two cases applies instead of deciding for you. It works entirely in your browser, measures every intermediate result against your source and shows the measured value with the download.
Drag an image here
or paste from the clipboard (Ctrl+V / ⌘V)
JPEG, PNG or WebP · the image stays on your device
Our own test series: 20 images against 100 KB
Of the 20 images in our test corpus, 12 are above 100 KB. On the quality target SSIM ≥ 0.98 alone — with no target size set — 2 of them drop below the limit; the median of those 12 sources shrinks by 31.5 %.
Across all 20 runs, 10 results are below 100 KB. No run missed the quality target, and none produced more bytes than its source.
| Sources above 100 KB | 12 of 20 |
|---|---|
| of those, below it on the quality search alone | 2 |
| Median saving for those sources | 31.5 % |
| Results below 100 KB | 10 of 20 |
These runs set no target size — they measure how far the quality target gets on its own. The preset on this page does set one: it pushes the quality setting further down and reduces the resolution if it has to. The numbers above are therefore the floor of what comes out at 100 KB, not the result.
Based on the fixed corpus runs of this project: 20 images, quality target SSIM ≥ 0.98, measured under Node with the codec versions from the manifest. Not counted: wide-gamut-p3.jpg — Decision 44: Display P3 profile, decoded without color conversion under Node. Its SSIM under Node is not the one the product delivers; the image tests ICC detection and counts in no statement about quality or size.
The values on this page, with their origin
| Preset | Target 100 KB (size.100kb) |
|---|---|
| Target resolution | at most 100 KB |
| How the dimensions are read | not applicable without a target resolution |
| Allowed formats | WebP, JPEG, PNG — chosen by measurement |
| Quality target | SSIM ≥ 0.98 |
| Metadata | removed (EXIF, GPS) |
| Origin of the values | Project value, no outside source |
| Source | none — the value comes from this project’s specification |
| Last checked | – No check date needed |
The target size of 100 KB is the preset itself; the value is set this way in the project specification 7.2 and counts in base 1024 (102,400 bytes). There can be no outside source for it. The resolution stays untouched — it is reduced only when the target size cannot be reached through the quality setting alone (6.6). Without a target resolution `fit` has no effect; it is set to “max” because a requirement without dimensions would not be one.
Platforms change their requirements without notice. That is why every check expires after 90 days and then shows as “Check due” — here and on the presets overview.
The quality target itself is not set but tested: on September 13, 2026 it was held against the eye on the test corpus. It passes narrowly — what exactly that means, and where the method reaches its limits, is on How we measure quality.
Why these values?
100 KB — 102,400 bytes in units of 1,024 — is a project value, not an outside requirement. It makes sense as a target where a hard ceiling applies and the image is shown small. For a photo of several megapixels at full resolution it does not: the pixels alone then cost more bytes than are allowed to remain.
That is why the order matters. The tool lowers the quality setting first and only then the resolution, in steps of ten percent, down to forty percent of the original size at most. Forcing an image to 100 KB by shrinking it to the size of a stamp would be the easy solution and the wrong one: you end up with a small file and no usable image.
If the limit is only reached below the quality target, the result says so. And if it cannot be reached at all, you get the smallest result above the quality floor and a sentence saying that 100 KB is not possible for this image without visible loss. Both are information, not errors.
Frequently asked questions
- Why do many photos not reach 100 KB without visible loss?
Because the bytes depend on the image information, not on the file size you would like. A photo with noise, foliage or fine texture has structure in every part of the image, and structure cannot be compressed away without disappearing.
Smooth surfaces, graphics and screenshots behave the other way round: they often reach small file sizes before the quality target gets in the way.
- How is this different from “setting quality to 40 %”?
A percentage on a compression slider is a parameter of the encoder, not a statement about the result. The same “40 %” means one thing for a night shot and another for a logo.
This tool turns the direction around: you state how close the result has to stay to your source, and the quality setting is the means of getting there. The setting that came out is shown under the result.
- Is my image enlarged if it is smaller than the target?
No, it is only ever scaled down. Scaling a smaller image up to the target resolution would invent pixels your source does not have: the file would grow and not a single detail would be added.
If the aspect ratio does not match the target, the image is fitted rather than cropped. The result then does not fill the frame, and the tool writes that under the result.
- What does the quality value under the result mean?
It is called SSIM. It compares the result with your source — not byte by byte, but by structure: brightness, contrast and local pattern in small windows across the whole image. 1.000 means the images are identical — that is the value you see when the tool hands your own image back. Below that the distance grows.
The value is measured on every run and shown, including when it comes out badly. How the measurement works, and where it reaches its limits, is on the page about our method.
- Is my image uploaded anywhere?
No. Everything runs in your browser: decoding, measuring and encoding happen on your device, in a background thread. There is no server that receives your image, and therefore none where it could stay behind.
This is not a setting you can flip. It is how the tool is built — there is no counterpart it could send anything to.