Compress an image to 500 KB
Drop your image here. It is brought under 500 KB in your browser and does not leave your device. The tool tries quality settings and measures, after each attempt, how far the result has moved from your source. You get the smallest file that still holds your quality target, with the measured value next to it. If compression alone is not enough, the tool tells you instead of quietly giving up quality.
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 500 KB
Of the 20 images in our test corpus, 8 are above 500 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 8 sources shrinks by 25.5 %.
Across all 20 runs, 14 results are below 500 KB. No run missed the quality target, and none produced more bytes than its source.
| Sources above 500 KB | 8 of 20 |
|---|---|
| of those, below it on the quality search alone | 2 |
| Median saving for those sources | 25.5 % |
| Results below 500 KB | 14 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 500 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 500 KB (size.500kb) |
|---|---|
| Target resolution | at most 500 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 500 KB is the preset itself; the value is set this way in the project specification 7.2 and counts in base 1024 (512,000 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?
500 KB is not a requirement of any platform. It is the purpose of this preset. That is why the table above says “project value” and names no outside source — claiming an origin that does not exist would be worse than naming none. Sizes are counted in units of 1,024: 500 KB means 512,000 bytes. File sizes are always rounded up in the display, so a file that misses the target by one byte never shows as “500 KB”.
The target size is a ceiling, not a goal. The tool first looks for the smallest file that holds your quality target. If that is already below 500 KB, it stays there — inflating it to 500 KB would make no sense. If it is above, the tool lowers the quality setting further, and only if that is not enough, the resolution.
If 500 KB can only be reached below the quality floor, you do not quietly get a worse image. The result then says “Target size reached, quality below your setting” or “Target size not reachable”, with the measured value next to it. That is the difference from a quality slider: you see what the number cost.
Frequently asked questions
- What happens if 500 KB is not reachable without visible loss?
Then you get a message instead of a silent compromise. The tool has two outcomes. Either it reaches the file size and states that quality fell below your target to get there. Or it returns the smallest result above the quality floor and says that 500 KB is not possible for this image without visible loss.
Which one happens depends on the image. Noise and fine structure — night shots, macros — cost more bytes at the same quality than a smooth surface.
- Why 512,000 bytes and not 500,000?
Throughout this tool, “KB” is counted in units of 1,024, as in the preset specification. 500 KB is therefore 512,000 bytes.
What matters is less which reading you pick than that the target and the display use the same one. Otherwise a result of 501,000 bytes that meets the target would show as “501 KB” next to a target of “500 KB”.
- Is the resolution reduced?
Only if it has to be. This preset sets no target resolution: the search first works only through the quality setting. Only if the file size cannot be reached that way does the tool reduce the resolution, in steps of ten percent.
Every resolution step freezes its own reference. Otherwise the damage from scaling would be reported as compression damage, and the quality value would mean something other than what it says.
- 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.