How to Reduce JPEG File Size Without Losing Quality
A practical guide to shrinking JPEGs while keeping the detail that matters, including the one encoder setting most online tools get wrong.
Almost every "compress your image" tool makes the same silent trade: it throws away half of your colour information and hopes you will not notice. You can usually spot the result on skin tones, red flowers, thin coloured text, and any photo with strong colour edges. Quality sliders do not fix it, because it is not a quality problem.
What actually makes a JPEG big
A JPEG stores brightness at full resolution and colour at reduced resolution. The ratio is called chroma subsampling:
- 4:4:4 — colour stored at full resolution. Highest fidelity, largest file.
- 4:2:2 — colour stored at half horizontal resolution. Visually close to 4:4:4 for most photos.
- 4:2:0 — colour stored at half resolution in both directions. Three quarters of the colour data is gone.
Many cameras and image generators export 4:4:4. Many encoders, when asked for a "web" or "compressed" JPEG, quietly convert to 4:2:0. That conversion is irreversible: the colour detail is discarded before any quality slider is consulted.
We measured this on a set of 1,195 generated illustrations. Re-encoding at the same quality but dropping 4:4:4 to 4:2:0 pushed the worst colour channel from 0.984 SSIM down to 0.975, with the worst single image falling to 0.944. Raising the JPEG quality did not recover it.
The quality number is not a percentage
A JPEG "quality" of 80 does not mean "80% of the original". It is an index into a table of quantization steps that was defined in 1992 and has no physical meaning. Two encoders both claiming quality 80 can differ in file size by 40% at the same visual quality.
Practical ranges for photographic content:
- q90–q95 — visually indistinguishable from the source in side-by-side crops.
- q80–q85 — the usual sweet spot for the web. Typically 60–75% smaller than a q99 export.
- q60–q70 — fine for thumbnails and backgrounds, visible softening in fine texture.
- below 50 — blocking becomes obvious in gradients.
What this tool does differently
We read the chroma subsampling out of your file's header before touching it, and keep it unchanged. If your image is 4:4:4, it stays 4:4:4. Most tools cannot tell you what your file used; we show it on every image before you compress.
We also refuse to spend your quality for nothing. If your file is already compressed (say an earlier export at q70), re-encoding it at q80 makes the file larger while looking no better — the encoder is spending bits describing compression artifacts. We detect that case and, instead of guessing, run a lossless pass: the entropy coding is rewritten, the image data is left bit-for-bit identical. On baseline JPEGs that typically saves about 4%.
A workflow that works
- Start at q80 with keep original colour sampling enabled.
- Check the result at 100% on an area with fine colour detail, not on the sky.
- If it is still too large, use the target size mode and set the limit you actually need — for example 200 KB for a form upload.
- Never compress an already-compressed file twice if you can go back to the original.
Everything runs in your browser. Your images are never uploaded.