Line chart showing file size rising steeply above quality 85

Original Data

What Quality Setting Should You Actually Use? A Quality Ladder Test

By Published Updated 10 min read

Everyone says “use quality 80” and nobody says why. We re-encoded the same four images at nine quality steps from 30 to 100 and recorded the file size at each stop, so you can see exactly where the curve flattens and where the artifacts start.

Why “use 80” is unsatisfying advice

Every image optimization guide, this one included, tells you to set quality to 80. Almost none of them show you the curve that recommendation comes from. Without it, 80 is folklore: you do not know how much you would lose at 70, how much you would pay at 90, or whether your particular image behaves like the average one.

So we measured it. Four photographs of deliberately different character, re-encoded at eleven quality steps from 30 to 100, with every file size recorded. What comes out is a curve with a very distinct shape — and the shape, more than any single number, is the thing worth understanding.

How we tested

  • The images. Four photographs, each 1600 px on the long edge, chosen to span the range that matters: dense foliage (high-frequency detail, the hardest case), a portrait (large smooth areas and skin tones), a flat neon-lit still life (broad areas of solid colour), and a small product shot that was already lightly compressed.
  • The sources. All four were fetched as JPEGs at quality 90. This matters: the source is already well compressed, so the savings here are deliberately conservative compared with the typical unoptimised website image.
  • The encoder. cwebp from libwebp, default settings, quality varied from 30 to 100. No resizing, no metadata stripping beyond the encoder default.
  • The measurement. File size on disk, in bytes. We report sizes as measured and percentages rounded to the nearest whole number.

The full quality ladder

Every cell is a real encode. Sizes in kilobytes.

WebP file size in kilobytes at eleven quality settings for four test photographs
ImageSource q30q40q50q60 q70q75q80 q85q90q95q100
Foliage
high detail
560.0151.0188.3225.1255.8287.1304.9372.4450.4572.3728.9956.7
Portrait
skin, soft background
879.2100.8137.7191.1256.1340.9379.2504.0683.0897.21269.11612.8
Neon still life
flat colour areas
206.040.747.454.060.667.772.386.3106.2143.7208.8307.1
Product shot
small, pre-compressed
60.410.311.512.613.814.715.418.121.829.040.261.7

All figures in KB, measured with libwebp. Sources are JPEG quality 90 at 1600 px on the long edge.

Read across any row and the shape is unmistakable. From q30 to q80 the size grows gently and fairly linearly. From q80 upward it takes off. The portrait more than triples between q80 and q100; the neon still life goes up 3.6×.

Savings against the source file

The same numbers expressed as savings against the original JPEG. Negative means the WebP is larger than the file it came from.

Percentage saved versus the source JPEG at each quality setting
Imageq30q50q60q70q75q80q85q90q95q100
Foliage73%60%54%49%46%33%20%−2%−30%−71%
Portrait89%78%71%61%57%43%22%−2%−44%−83%
Neon still life80%74%71%67%65%58%48%30%−1%−49%
Product shot83%79%77%76%75%70%64%52%34%−2%

Two things stand out. First, even against already-good JPEG 90 sources, WebP at q80 saves 33–70%. Second, the column of red on the right is the phenomenon our converter warns you about, quantified: past a certain quality, converting to WebP costs you bytes instead of saving them.

What each extra 5 points costs

This is the table that changed how we think about the slider. Each figure is the additional bytes that quality step adds, expressed as a percentage of the q80 file — so you can see what you are paying, in units of the file you would otherwise have shipped.

Additional file size added by each five-point quality increase, relative to the quality 80 file
Image80 → 8585 → 9090 → 9595 → 100
Foliage+21%+33%+42%+61%
Portrait+36%+43%+74%+68%
Neon still life+23%+44%+76%+114%
Product shot+21%+40%+62%+119%

Moving from 95 to 100 on the neon still life adds more than a whole extra copy of the q80 file. You are more than doubling the download so the encoder can preserve detail that was, in many cases, JPEG compression noise in the source to begin with.

The one-sentence version

Below 80, quality points are cheap and you are buying real savings; above 80, quality points get rapidly more expensive while the visible improvement gets rapidly smaller. That asymmetry is the whole reason 80 is the default.

The crossover point

Every image has a quality setting at which the WebP stops being smaller than the source. Ours:

Quality setting at which the WebP output first exceeds the source JPEG size
ImageCharacterCrossover
FoliageDense high-frequency detailq90
PortraitSmooth gradients, soft backgroundq90
Neon still lifeLarge flat colour areasq95
Product shotSmall, already lightly compressedq100

The crossover is not a property of WebP — it is a property of the relationship between your quality setting and how compressed your source already was. Feed the encoder a JPEG that was saved at quality 60 and the crossover arrives much earlier, because you are asking WebP to faithfully reproduce a file that has already thrown most of its detail away. Our 15-image benchmark caught one file crossing over as low as q90 against a lighter source.

This is why the converter shows a negative saving in red rather than quietly handing you a bigger file. When you see it, the fix is always the same: lower the quality, or accept that this particular file is already about as small as it usefully gets.

Reading the curve for your own images

You do not need a benchmark rig to find your own knee. Convert one representative image three times — at 60, 80 and 90 — and compare.

  1. Look at the sizes first. If q90 is less than about 25% bigger than q80, your image is flat and forgiving; you can afford a higher setting. If it is 40% bigger or more, your image is detailed and every point above 80 is expensive.
  2. Then look at the pixels. Use the Compare button in the converter to wipe between the original and the q60 version at full size. If you cannot see damage at 60, you certainly will not see it at 80 — and you can consider dropping your default.
  3. Check the worst region, not the whole image. Artifacts appear first in smooth gradients (skies, skin, bokeh) and along hard edges against flat backgrounds. Judging on a thumbnail tells you nothing.
  4. Decide once, apply broadly. Per-image tuning is only worth it for a handful of images — the hero, the top product shots. Everything else can take the default.

Recommended settings by image type

Suggested WebP quality settings by image category
Image typeSuggested qualityWhy
Hero / above-the-fold photo80–85It is the LCP element and the most scrutinised image on the page. Worth a few extra kilobytes and a manual check.
Body and gallery photos75–80The knee of the curve. Best ratio of saving to visible quality.
Thumbnails under 400 px65–75Artifacts are invisible at small display sizes, and these are usually numerous.
Screenshots with text85–90, or losslessText edges are exactly what lossy compression damages first. Consider PNG or lossless WebP instead.
Logos and flat graphicsLossless / SVGFlat colour compresses superbly without loss. Vector is better still where you have it.
Source already at JPEG <7060–70Little detail remains to preserve; a high setting only re-encodes the existing artifacts at great expense.

What this test does not tell you

We measured bytes, not beauty. There is no perceptual quality score here — no SSIM, no Butteraugli — so this data can tell you exactly what a quality setting costs and nothing about what it looks like. Judging that still requires your own eyes on your own images, which is what the Compare view is for.

Four images is also a small sample, chosen to span a range rather than to represent an average. And these results are from libwebp; your browser's encoder may differ by a few percent, and a different format will behave differently again — AVIF in particular holds quality better at aggressive settings, as covered in the format comparison.

What the shape of the curve does generalise well. Exponential growth above 80, cheap savings below it, and a crossover determined by your source quality — those hold across every image set we have measured. If you understand that shape, you can pick a sensible setting for any image without a table.

Find your own knee in about a minute

Queue the same image three times, convert at 60, 80 and 90, and use Compare to wipe between original and result. The sizes and the pixels, side by side.

Open the converter

Frequently asked questions

Is WebP quality 80 the same as JPEG quality 80?
No. Quality numbers are encoder-specific scales, not a shared unit. WebP q80 and JPEG q80 apply different quantisation strategies and generally produce different file sizes and different artifacts. Never assume a quality number transfers between formats — or even between encoders for the same format.
Why did the savings look smaller here than in your 15-image benchmark?
Because the sources are different. This test used photographs fetched at JPEG quality 90, which are already well encoded. The 15-image benchmark used more typical web images, including photographs mistakenly saved as PNG. The better your source is already compressed, the less slack WebP has to take up — that is the single biggest factor in how much you save.
Should I use a different quality for each image?
Ideally yes, and large publishers automate it with perceptual metrics like SSIM or Butteraugli, encoding each image at the lowest quality that stays below a visible-difference threshold. For everyone else, a fixed 75–80 with a spot check on the few images that matter most gets you the majority of the benefit for none of the complexity.
Does lowering quality help my LCP proportionally?
Not proportionally. Halving a file halves its transfer time, but connection setup, server response and render time do not shrink with it. On a slow mobile connection with a large image, transfer dominates and the gain is close to linear; on fast connections with small images you may see almost nothing.

Sources & further reading

Specification and vendor documentation used to check the claims in this guide.

  1. 1 cwebp — WebP encoder command line tool — Google Developers
  2. 2 WebP Compression Techniques — Google Developers
  3. 3 HTMLCanvasElement: toBlob() method — MDN Web Docs
  4. 4 Largest Contentful Paint (LCP) — web.dev

Written by

John Cabardo

Founder & Developer, WebPMagic

I build and maintain WebPMagic, a browser-based image converter, and write the guides on this site. Most of what I publish here comes out of actually shipping image pipelines: measuring what compresses, what breaks, and what the byte savings look like on real files rather than in a spec sheet.