Study 01 JPEG · Compression · Published 2026-09-29

JPEG Quality 50–90: What 20 Real Images Actually Told Us

We re-encoded 20 images at five quality settings with the browser's own JPEG encoder and measured what actually happens to file size and fidelity. Some of the results contradict common compression advice.

The Question

Search for "best JPEG quality" and you'll find the same advice everywhere: "60–80 is a good range", "never go below 50", "quality 90 looks identical to 100". What you won't find is data — file sizes and fidelity numbers measured on real images, with the encoder you'd actually be using.

This study asks three concrete questions:

  • How much smaller does a file actually get at each quality step from 50 to 90?
  • How much fidelity is lost at each step, measured rather than eyeballed?
  • Does the answer change depending on what kind of image it is?

Method

Test set — 20 images, four kinds of content:

Group Count Dimensions Source format
Photographs101600×1200JPEG
UI screenshots41600×1000PNG
Text documents31240×1754PNG
Flat illustrations31600×1200PNG

The photographs are real-world photos (landscape, people, textured scenes) at 1600×1200. The screenshots are genuine captures of this website's pages. The documents are dense-text pages representative of scanned or exported documents. The illustrations are flat-color vector-style art.

Encoder: every image was decoded and re-encoded through an HTML5 canvas in Chromium 151 (Windows 10), calling canvas.toBlob('image/jpeg', q) at quality 0.50, 0.60, 0.70, 0.80 and 0.90. This is the exact code path our Image Compression tool uses — the browser's built-in libjpeg-based encoder, the one you get when you compress images in any modern web app. No command-line tool, no different codec family.

Fidelity metric: SSIM (structural similarity, grayscale, 11×11 Gaussian window, σ = 1.5) between the lossless decoded original and the re-encoded result. SSIM ranges from 0 to 1; values above ~0.98 are usually visually indistinguishable, and below ~0.95 differences start to be noticeable.

File size: actual encoded bytes, reported relative to the original file's size (1.00× = no change).

Environment: Chromium 151.0.7922.34, Windows 10 Pro, 2026-09-29. The main run encodes 20 images × 5 qualities (100 encodes); a supplementary run re-encodes the 10 photographs from a lossless PNG source × 6 qualities (60 more). The complete per-image results are published as raw data: r1-results.json.

Results 1: Photographs — Q70 Saves Almost Nothing

Averages across the 10 photographs (all 1600×1200, original files already JPEG-compressed):

Quality Mean size vs original SSIM (mean) SSIM (worst)
50149 KB0.77×0.95880.923
60172 KB0.89×0.98270.970
70191 KB0.99×0.99540.993
80207 KB1.07×0.99580.993
90241 KB1.25×0.99780.996

The most practical finding of this study: at quality 70, the re-encoded photo was on average 0.99× the original size — essentially no savings at all. The sources in our test set were themselves JPEG-compressed photos, and re-compressing an already-compressed JPEG at a similar quality level is close to a no-op. Real savings only begin once you go below the source's effective quality:

  • Q60: 11% smaller, SSIM 0.98 — still visually clean.
  • Q50: 23% smaller, SSIM 0.96 — visible only if you look for it (see the comparison below).

Meanwhile Q90 grew files by 25% with no meaningful fidelity gain over Q80. Re-encoding photos at high quality doesn't preserve quality — it just costs storage.

What if the source is lossless? The numbers above describe the common real-world case of re-compressing an already-JPEG photo. So we ran a supplementary pass: we decoded each of the 10 photos to a lossless PNG (average 2,434 KB — this is what an uncompressed photo of this size actually weighs) and re-encoded that through the same canvas encoder:

Quality Mean size vs lossless PNG SSIM (mean)
50149 KB0.059×0.9588
60172 KB0.068×0.9827
70191 KB0.076×0.9954
75156 KB0.078×—
80207 KB0.082×0.9958
90241 KB0.095×0.9978

The perspective shift is dramatic: from a lossless source, every quality setting is a massive win — even Q90 removes 90% of the weight. The slider now only trades a 1.6× size difference (Q50 vs Q90) against fidelity, which is why Q75–80 is a comfortable default here: the fidelity gain over Q60 is real (0.996 vs 0.983), and the extra cost is just 2% of the lossless size.

Here is a center crop of one test photo. Left: lossless reference. Right: quality 50:

Center crop comparison: lossless reference (left) vs JPEG quality 50 (right) — clouds and rock texture remain nearly identical
Photograph, center crop, lossless (left) vs Q50 (right). At this zoom the difference is hard to find; the file is 23% smaller than the original JPEG and 94% smaller than the lossless PNG.

Results 2: Screenshots — JPEG Works, but It's the Wrong Format

Averages across the 4 UI screenshots (1600×1000, PNG sources):

Quality Mean size vs original SSIM (mean)
5065 KB0.54×0.9877
6073 KB0.60×0.9896
7083 KB0.69×0.9918
80100 KB0.82×0.9946
90133 KB1.09×0.9976

Converting a PNG screenshot to JPEG at Q50 halves its size, and SSIM stays high. But the artifacts JPEG introduces on flat UI surfaces and text edges — ringing along borders, slightly dirty whites — are exactly the kind of damage screenshots are sensitive to. If you need a screenshot smaller than PNG, a lossless or near-lossless format (WebP lossless, or lossy WebP at high quality) usually beats JPEG for this content type. That comparison is exactly what our planned Study 02 (WebP vs JPEG) will measure.

Results 3 & 4: Text Documents and Flat Art — JPEG Makes Files Bigger

Text documents (1240×1754, PNG sources) and flat illustrations (1600×1200, PNG sources):

Quality Documents: vs original Documents: SSIM Illustrations: vs original Illustrations: SSIM
501.06×0.97132.26×0.9786
601.17×0.97682.48×0.9813
701.32×0.98342.82×0.9317
801.55×0.98953.35×0.9881
901.95×0.99654.36×0.9939

For both content types, JPEG was the wrong tool at every quality level:

  • Text documents got bigger, not smaller. PNG's lossless run-length-style compression is extremely efficient on crisp text; JPEG's 8×8 DCT blocks smear the sharp glyph edges and cost more bytes doing it. At Q90 the JPEG was nearly double the PNG. Converting scanned text pages to JPEG to "save space" does the opposite.
  • Flat illustrations inflated 2.3–4.4×. Same mechanism: PNG stores large flat regions almost for free, while JPEG has to encode every 8×8 block.

The anomaly worth knowing about: notice the illustrations' SSIM at Q70 — 0.9317, worse than Q50's 0.9786, while the file is bigger. This inversion reproduced consistently on all three illustrations. The likely mechanism is the interaction between JPEG's 8×8 block quantization and chroma subsampling on large flat saturated regions: at mid-range qualities, residual DCT coefficients are kept just precisely enough to form visible block boundaries on flat color, while at Q50 heavier quantization smooths those regions flat instead. In other words, on flat art there is a quality band (in our test, around Q70) that is simultaneously bigger and more artifacted than Q50. We haven't seen this covered in mainstream compression guides — it's exactly the kind of thing generic advice misses.

Here is the same effect on a text document. Left: lossless reference. Right: Q50 — note the ringing around glyphs, and remember this file is 6% larger than the PNG it came from:

Text document center crop: lossless reference (left) vs JPEG quality 50 (right) — ringing artifacts visible around glyphs
Text document, center crop. Q50 introduces ringing around characters while growing the file.

Conclusions

Your image is… Best move (from our data)
A photo (already JPEG) Re-encode at Q60–Q70: Q70 ≈ breaks even on size, Q60 saves ~11% with SSIM 0.98. Only go to Q50 when you need the 23% and can tolerate minor texture softening. Never re-encode at Q80+.
A photo (raw/uncompressed) From a lossless source, any JPEG quality is a huge win — even Q90 is 9.5% of the PNG's weight (measured, see Results 1). Q75–Q80 is the comfortable default: SSIM 0.996 for about 8% of the lossless size. Go lower only if the extra 20% relative saving matters.
A screenshot / UI capture Stay lossless (PNG) or use WebP; if JPEG is the only option, Q80+ and accept ~0.8× size, or Q50 to halve it at the cost of text-edge ringing.
A text document / scan Don't convert to JPEG at all. PNG (or PDF) is smaller and artifact-free at every quality level we tested.
Flat illustration / graphics Keep PNG, or use a lossless WebP. If you must use JPEG, avoid the Q60–Q75 band — our data shows it can be bigger and more artifacted than Q50.

Three takeaways we'd highlight over the usual "60–80 is fine" advice:

  • Quality settings are not absolute. What Q70 does depends on what the image has been through already — an already-compressed photo gains almost nothing at Q70, which most guides never mention.
  • JPEG is a photograph format. For text, UI and flat art it consistently lost to PNG on both size and fidelity in our test.
  • Mid-quality JPEG has a trap zone on flat content. If your image has large flat color regions, Q50 may genuinely beat Q70 on both axes.

Limitations & What's Next

An honest study states what it doesn't cover:

  • 20 images is enough to expose the patterns above, but per-image variation is real — a noisy high-ISO photo behaves differently from a clean studio shot. Our per-image data (published above) spans SSIM 0.92–0.98 at Q50.
  • We measured SSIM, not human judgment. SSIM correlates well with perceived structure loss, but a formal viewer study would be stronger evidence.
  • The photo sources were themselves JPEG-compressed (as most real photos are). Findings about "already-compressed" photos specifically reflect that common real-world case — the raw-photo case is called out separately in the conclusions.

Next studies: Study 02 — WebP vs JPEG will measure whether the format switch beats the quality slider, and Study 04 will look at what EXIF metadata survives this whole process.

Try It on Your Own Images

Every measurement above came out of the same encoder our compression tool exposes. Put your own photo through it and compare — the numbers you get are the numbers this study describes: