Guide · updated 2026-09-21
Compress an image without losing quality — the honest version
You cannot put 8 megabytes of sensor data into 100 KB and keep every pore. You can avoid the stupid losses: extra shrinks, dirty screenshots, and quality sliders you guessed in the dark.
Lossless is the wrong promise
JPEG is lossy. “Compress without losing quality” in search is a plea to keep the photo usable on a 400 px portal preview, not a request to preserve RAW. ExactKB’s job is to spend the entire kilobyte budget. That is the opposite of a slider left at 40% “to be safe.”
Spend pixels last
Quality-first is the whole algorithm. We encode at a high JPEG/WebP quality, and only if the blob is still over the target do we walk quality down. Dimensions change only when the lowest acceptable quality is still too big, or when you (or a form preset) set a longest-side cap. That is why a 100 KB result from a well-lit headshot often looks like the original on a phone.
Hosted tools that “secretly” resize everything to 1500 px can look sharper in a demo and worse on a 3.5 × 4.5 cm crop, because they threw away the pixels you already framed. ExactKB prints the before/after size on the result card so you can see whether a resize happened.
Practical rules that keep faces intact
- Light the face. Compression artifacts love shadows and phone HDR halos.
- Crop before you compress. Encoding a whole room wastes the 100 KB on wallpaper.
- Do not screenshot a photo to “convert” it. Screenshots are the wrong codec and the wrong resolution.
- Keep JPG for photographs. PNG at 100 KB will be a tiny bitmap.
- If 50 KB looks blocky, check whether the crop is 200 px wide. Enlarge the crop, not the JPEG quality.
When you should accept a resize
A 4000 px scan of a signature does not need 4000 px at 20 KB. A DS-160 photo does not need 4000 px at 240 KB either — the form already wants ~600 px. Use the dimension menu. That is not “losing quality.” That is matching the display size the reviewer will see.
What “quality” on the result card means
The percentage is the JPEG or WebP encoder quality argument, not a MOS score and not “percent of original sharpness.” Eighty percent of a well-lit 800 px face often looks better than ninety-five percent of a 200 px crop. Read the pixels and the bytes together. If quality is 12% and the long side is still 3500 px, you asked 20 KB to hold a poster. Resize.
PNG output will show quality 100 because PNG is lossless on the canvas. The only lever is dimensions. That is why a “lossless 50 KB PNG” of a photograph is a contradiction: the PNG will be a small bitmap, not a magically compact full-resolution file.
Comparisons people actually run
Squoosh lets you pick codecs and see a slider. It is excellent and private. It will not stop at 100 KB unless you watch the byte count and drag the slider yourself. TinyPNG is excellent at perceptual quality and uploads the file; it will not aim at 47 KB. ExactKB is worse as a general art compressor and better as a form tool. Use the right instrument.
If you need the last ounce of quality for a hero image on a website, this is the wrong product. If you need a PAN photo under 50 KB tonight, a quality slider is the wrong product.
More reading on the guides index. Limits change — verify the official notice.