WebP quality: which setting to use, measured from 40 to 100

Use WebP quality 75 for photos and 75 to 80 for screenshots, and lossless for text, logos and flat art. To match a JPEG saved at 80, use 85. We saved 6 images at every quality from 40 to 100 to find where extra bytes stop buying detail. Part of the image API.

WebP quality: which setting to use, measured from 40 to 100

By 16 min readEngineering

Share

What WebP quality should I use?

Use quality 75 for photos on a website. It is cwebp’s default, and it is where libwebp’s scale turns steep. Go to 80 or 85 when the WebP replaces a JPEG saved at 80. Use 75 to 80 for screenshots. Save text, logos and flat art as lossless WebP instead.

The WebP setting for each kind of image, from the 6 images measured below
The imageSettingWhat we measured
A photo on a web pageQuality 75217.8 KB at 75, 815.8 KB at 100, on a 1916 × 1276 photo
A photo that replaces a JPEG at 80Quality 85WebP 85 scored the same SSIM as JPEG 81 and 77 on our two photos
A screenshotQuality 75 to 8091.6 KB at 75, 66% under the JPEG that scored the same
Text, a logo, flat artLosslessText card: 27.0 KB lossless, 28.9 KB at quality 85
Text or a logo, smallestNear-lossless 60Text card: 23.4 KB, 60.4 dB
The WebP setting for each kind of image, from the 6 images measured below

What the WebP quality number means

The WebP quality number sets how much fine detail the encoder rounds away. It is not a percentage of the picture kept. A lower number rounds harder, so the file shrinks and the detail blurs into blocks. The dial runs from 0 to 100 in cwebp, 1 to 100 in sharp, and 0 to 1 in a browser’s canvas.

The scale is not even. libwebp’s own code maps quality in two straight lines that meet at 75, and the line above 75 is 3 times steeper. A comment in the code says why: good quality is “around q=75”, as in JPEG.

Our photo shows the bend. From quality 60 to 75 it grew 17%, from 185.6 KB to 217.8 KB. From 75 to 90 it grew 92%, to 417.8 KB. Below 75, neighbours can even make the same file: 72 and 73 both gave 211.7 KB.

More like this by mail: measured results and what shipped, a few times a month.

WebP quality from 40 to 100, measured on 6 images

We saved 6 images at every fifth quality from 40 to 100 with Blinkimg’s engine. Two are photos: our iguana and a boat at sunset with a smooth sky. Then a screenshot, a card of text, a soft-edged logo and flat colour blocks. The table gives each file’s size.

WebP file size by quality, 6 images, in KB (lossless at the foot)
QualityIguanaSunsetScreenshotText cardLogoFlat art
40142.450.870.116.96.91.2
50165.959.976.218.77.41.2
60185.669.282.019.77.71.2
70207.179.487.321.28.11.3
75 (Auto, photos)217.885.591.622.18.31.3
80261.3106.9103.525.19.11.2
85322.7138.8119.628.910.01.4
90417.8198.4145.134.611.71.5
95620.2297.2205.443.814.41.8
100815.8496.1296.551.518.01.5
Lossless2,041.92,017.3805.027.08.50.2
WebP file size by quality, 6 images, in KB (lossless at the foot)

The photos grew the most past 75. The iguana went from 217.8 KB to 815.8 KB, 3.7 times the bytes. The sunset grew 5.8 times, because its smooth sky costs little at 75 and a lot at 100. The flat art barely moved, and its lossless file was the smallest of all at 0.2 KB.

Six enlarged crops of the scales above the iguana's eye: the source PNG, then WebP at quality 40, 60, 75, 90 and 100, each labelled with its size and PSNR. At 40 the grain between the scales is smoothed away; from 75 up it is close to the source.
The scales above the eye at 3 times, from the very files in the table. Quality 40 smooths the fine grain away; 75 keeps most of it for 217.8 KB.

The best WebP quality for the web

For photos, start at 75. Each step above it is a big one, and each buys less detail per kilobyte than the last. On the iguana, 75 to 80 added 43.5 KB for 1.4 dB. 95 to 100 added 195.6 KB for 1.3 dB: 4.5 times the bytes for less gain.

The iguana photo, 1916 × 1276: size and two scores at each quality
QualitySizePSNRSSIM
60185.6 KB35.2 dB0.9732
70207.1 KB36 dB0.9766
75 (Auto)217.8 KB36.4 dB0.9778
80261.3 KB37.8 dB0.9822
85322.7 KB39.4 dB0.9863
90417.8 KB41.3 dB0.9898
95620.2 KB43.8 dB0.9937
100815.8 KB45.1 dB0.9958
The iguana photo, 1916 × 1276: size and two scores at each quality

Page weight adds up. Ten photos like ours weigh 2.2 MB at 75 and 4.2 MB at 90. Use 80 to 85 for a hero image people look at closely. Skip lossy 100: on both photos and the screenshot it made the largest file, and still not an exact one.

WebP quality vs JPEG quality

The two scales do not match. On our photos, a WebP at 80 scored the same as a JPEG at 69 to 72, not 80. To match a JPEG at 80, set WebP to about 85. We scored each file with SSIM, the measure of structure Google’s own study used.

The JPEG quality that scored the same SSIM as each WebP, and how much smaller the WebP was
WebP qualityIguana: JPEG matchIguana: WebP smallerSunset: JPEG matchSunset: WebP smaller
504313%4128%
605213%4725%
706012%5423%
756312%5823%
807210%6923%
858111%7719%
90878%8826%
95945%9320%
100963%9714%
The JPEG quality that scored the same SSIM as each WebP, and how much smaller the WebP was

Our result agrees with Jeff Kaufman’s 2014 test, which found WebP 80 close to JPEG 67. Twelve years of libwebp later, the gap is about the same. Malte Ubl’s 2021 table put WebP 82 next to JPEG 80, scored with a different measure, DSSIM. The measure moves the answer: by PSNR, our WebP 80 matched a JPEG at 81 on the iguana.

Is WebP 25% to 34% smaller than JPEG?

Not on our photos. Google says lossy WebP is 25% to 34% smaller at the same SSIM. That figure comes from a study of libwebp 0.1.2 from 2011 against libjpeg 6b from 1998. With today’s encoders, our photos came out 10% to 23% smaller at quality 75 to 85. The screenshot, the text and the logo came out at under half the size of the matching JPEG.

WebP lossless vs lossy

Lossless WebP keeps every pixel; lossy WebP at any quality does not. On text, logos and flat art, lossless was smaller than lossy at 85, because long runs of one colour pack tightly. On photos and screenshots, lossless was several times the size of lossy at 100.

Lossy, near-lossless and lossless WebP on 6 images, in KB, with PSNR in dB
ImageLossy 75Lossy 100Near-lossless 60Lossless
Iguana photo217.8 KB (36.4 dB)815.8 KB (45.1 dB)1,436.8 KB (49.8 dB)2,041.9 KB
Sunset photo85.5 KB (37.7 dB)496.1 KB (43.1 dB)1,562.9 KB (50.3 dB)2,017.3 KB
Screenshot91.6 KB (43.2 dB)296.5 KB (46.8 dB)750.1 KB (56.9 dB)805.0 KB
Text card22.1 KB (42.6 dB)51.5 KB (48.5 dB)23.4 KB (60.4 dB)27.0 KB
Logo8.3 KB (42.1 dB)18.0 KB (45.1 dB)7.6 KB (61.9 dB)8.5 KB
Flat art1.3 KB (41.9 dB)1.5 KB (42.6 dB)0.2 KB (identical)0.2 KB
Lossy, near-lossless and lossless WebP on 6 images, in KB, with PSNR in dB

Is WebP quality 100 lossless?

It depends on the tool. In cwebp, sharp, Pillow and Squoosh, quality 100 is still lossy. Our iguana at 100 was 815.8 KB and scored 45.1 dB, not identical. Its lossless file was 2.0 MB. ImageMagick switches to lossless at 100. So do Chrome and Firefox when a page asks a canvas for quality 1: both files we got back were lossless.

Lossy WebP also halves the colour detail at every quality, a scheme called 4:2:0. Red words on blue show it. At quality 100 they scored only 29.3 dB. Sharp YUV, a slower colour conversion, raised that to 30.5 dB. Lossless WebP was exact, and smaller than both at 3.4 KB.

Four enlarged crops of the red letters SAL on a blue ground: the source; WebP at quality 100, with soft, darkened edges; WebP at 100 with sharp YUV, with crisper edges and a light fringe; and lossless WebP, which matches the source.
Red on blue at 4 times. Quality 100 still blurs the colour edge; lossless keeps it for 3.4 KB.

Near-lossless WebP

Near-lossless WebP nudges pixel values so they compress better, then saves them losslessly. Its level runs from 0 to 100, where 100 changes nothing and 60 is typical. On text and the logo, level 60 was smaller than lossless and scored over 60 dB. On the photos, lossy 100 was smaller, which Google’s cwebp page warns can happen.

What quality do apps and browsers use for WebP?

Most tools start at 75 or 80, so two “default” WebPs of our photo differ by 20% in size. We read each maker’s page on 1 November 2026. A page can also ask the browser for a WebP with canvas.toBlob, and the standard leaves that default to each browser. We measured those ourselves.

Default WebP quality by tool, from each maker’s page, and by browser, measured byte for byte
ToolDefaultQuality 100 (or 1) gives
cwebp (Google)75Lossy
libvips75Lossy
ImageMagick75Lossless
Squoosh75Lossy
sharp (Node.js)80Lossy
Pillow (Python)80Lossy
WordPress86 (JPEG: 82)Lossy
Chrome canvas (Chromium 149)0.80Lossless
Firefox canvas (151.0)0.92Lossless
Safari canvas (WebKit 26.5)No WebP: saves a PNGA PNG
Blinkimg Auto75 photos; 82 or lossless for graphicsLossy
Default WebP quality by tool, from each maker’s page, and by browser, measured byte for byte

The defaults come from Google’s cwebp page, the libvips, ImageMagick, sharp and Pillow manuals, Squoosh’s code and WordPress’s image editor code.

WordPress is the odd one. It saves WebP at 86, above its own JPEG default of 82. A 2021 ticket proposed 82 for both. Testers found one portrait needed WebP 90 to match, and the ticket closed as “maybelater” in 2024.

Safari’s canvas cannot write WebP at all. It shows WebP fine, but a canvas asked for image/webp hands back a PNG, as the standard allows. A page that makes WebP in the browser should check blob.type before it uploads.

Blinkimg’s Auto is 75 for a photo and 82 for a graphic. On a graphic that comes in as PNG, it also tries lossless WebP and keeps the smaller file. Our logo and flat art came out lossless, at 8.5 KB and 0.2 KB. On the text card, quality 82 made 26.6 KB, just under its 27.0 KB lossless file, so Auto kept the lossy one.

Other WebP settings that change the file size

Quality is not the only dial. Effort, called -m in cwebp, sets how hard the encoder searches. It changes the size at the same quality, and the time it takes. On our photo at quality 75, effort 0 made a file 63% bigger than the default of 4. Effort 6 saved 4% more for 72% more time.

Effort 0 to 6 at quality 75 on the iguana photo: size, score and encode time (Apple M1 Pro, 8 cores)
EffortSizePSNRTime
0354.2 KB36.5 dB67 ms
1249.0 KB36.5 dB78 ms
2226.2 KB36 dB94 ms
3217.7 KB36.4 dB177 ms
4 (default)217.8 KB36.4 dB179 ms
5215.1 KB36.3 dB194 ms
6209.6 KB36.3 dB307 ms
Effort 0 to 6 at quality 75 on the iguana photo: size, score and encode time (Apple M1 Pro, 8 cores)
  • Sharp YUV (-sharp_yuv, sharp’s smartSubsample): cleaner colour edges on text and logos, at a slower encode. Blinkimg turns it on for graphics only.
  • Alpha quality (-alpha_q): the quality of the transparency, separate from the colour. It defaults to 100, which keeps the edges of a cut-out exact.
  • Presets (-preset photo, text, icon): cwebp’s bundles of settings for one kind of image.

Should I use WebP?

Yes, for images on a web page. At the same SSIM, our WebPs were 10% to 23% smaller than JPEG on photos, and under half the size on the screenshot, text and logo. caniuse counts 97.08% of users with full WebP support.

Keep another format for files you will edit, print or email. A WebP saved again loses a little more each time, and some apps and email clients still refuse it. Our WebP vs PNG post measures those cases. AVIF is smaller again; AVIF vs WebP compares the two on the same photo.

How to set WebP quality

Every encoder takes the number the same way: one option, on the save. The lines below set quality 75 for a photo, and lossless or near-lossless for graphics. Leave quality out and each tool uses its default from the table above.

# cwebp (Google's command-line encoder)
cwebp -q 75 photo.png -o photo.webp
cwebp -lossless logo.png -o logo.webp
cwebp -near_lossless 60 text.png -o text.webp

// sharp (Node.js)
await sharp('photo.png').webp({ quality: 75 }).toFile('photo.webp');
await sharp('logo.png').webp({ lossless: true }).toFile('logo.webp');

# Pillow (Python)
Image.open('photo.png').save('photo.webp', quality=75)

// A browser canvas: 0 to 1, and check the type (Safari returns PNG)
canvas.toBlob((blob) => upload(blob), 'image/webp', 0.75);

# Blinkimg's API
curl -X POST https://api.blinkimg.com/v1/jobs \
  -H "Authorization: Bearer bk_..." \
  -d '{ "uploadId": "...", "options": { "format": "webp", "quality": 75 } }'
Quality 75, lossless and near-lossless in five common tools

Already have JPEGs saved at 80? Convert them at 85, not 75: on our photos, WebP 85 scored the same SSIM as JPEG 77 to 81. Our JPG to WebP converter prints each file’s size before you download it.

How we tested

  • The images: our iguana photo (1916 × 1276), our camera photo of a boat at sunset (1920 × 1076), a 2880 × 1800 screenshot of our pricing page, and three we drew: a text card, a soft-edged logo and flat colour blocks.
  • The files: Blinkimg’s engine, version 12, at each quality (sharp 0.35.5, libvips 8.18.7, libwebp 1.6.0). Lossless and near-lossless WebP and every JPEG came from sharp directly. Measured 2026-11-01 on an Apple M1 Pro, 8 cores.
  • The scores: PSNR over RGB, and SSIM over brightness with an 11-pixel window. The matching JPEG quality is read off a JPEG saved at every quality from 20 to 100. How we measure has the rest.
  • The browsers: Playwright’s Chromium 149.0.7827.55, Firefox 151.0 and WebKit 26.5, a 960 × 640 photo saved at 101 qualities and compared byte for byte with the default.

Read the full guide: Image optimization for the web: formats, sizes and lazy loading.

Questions

What is a good WebP quality?
Quality 75 is a good WebP quality for photos on a website, and it is the default in cwebp and libvips. On our 1916 × 1276 photo, 75 made a 217.8 KB file and 90 made 417.8 KB. Use 80 to 85 for hero images, and lossless WebP for text, logos and flat art.
Is WebP quality 80 good?
Yes, 80 is a safe setting for photos, and sharp and Pillow use it by default. It is not the same as JPEG 80, though. By SSIM, our WebP at 80 matched a JPEG at 72 on one photo and 69 on another. To match a JPEG saved at 80, use WebP 85.
Is WebP quality 100 lossless?
Not in most tools. In cwebp, sharp, Pillow and Squoosh, quality 100 is still lossy: our photo at 100 scored 45.1 dB, not identical. ImageMagick switches to lossless at 100, and Chrome and Firefox do the same when a canvas asks for quality 1. Use the lossless option to be sure.
What WebP quality equals JPEG quality 80?
About 85. On our two photos, WebP at 85 scored the same SSIM as a JPEG at 81 and 77. WebP at 80 matched only JPEG 72 and 69, close to Jeff Kaufman's 2014 result of 67. The WebP at 85 was still 11% to 19% smaller than the matching JPEG.
Should I use lossless or lossy WebP?
Use lossy WebP for photos and screenshots, and lossless WebP for text, logos and flat art. Lossless kept every pixel of our text card in 27.0 KB, under the lossy file at quality 85. Our photo needed 2.0 MB lossless against 217.8 KB at quality 75.
How do I convert to WebP without losing quality?
Save it as lossless WebP, which keeps every pixel. That suits PNG screenshots, logos and graphics. A photo that began as a JPEG grows several times as lossless WebP, so use lossy quality 85 for it instead: on our photos, 85 scored the same SSIM as JPEG 77 to 81 and was smaller.
Is WebP lower quality than JPEG?
Not at the same file size. At the same SSIM, our WebPs were 10% to 23% smaller than JPEG on photos, so at an equal size the WebP scores higher. Two catches: WebP's quality numbers run lower than JPEG's, and smooth gradients can band. Check large skies by eye before you settle on a number.
What are the disadvantages of WebP?
Lossy WebP stores colour at half resolution, so red text on blue blurred even at quality 100 in our test. WebP holds 8 bits a channel, Safari's canvas cannot write it, and some editors and email clients refuse it. Keep JPG or PNG for files you edit, print or email.
What quality does Chrome use for WebP?
0.80, when a page calls canvas.toBlob or toDataURL for image/webp without a quality. Chromium 149's default file matched the one at 0.80 byte for byte. Firefox 151.0 uses 0.92. At quality 1 both switch to lossless WebP, and Safari's canvas returns a PNG instead.
Why is my WebP bigger than the JPEG?
Usually the quality is too high or the file is lossless. Our photo at WebP 100 was 815.8 KB, bigger than a JPEG at 90, and its lossless WebP was 2.0 MB. At the same SSIM, our WebPs were smaller than JPEG at every quality we tried, so lower the number first.
Does WebP quality affect page speed?
Yes, through the bytes it adds. Ten photos like ours weigh 2.2 MB at quality 75 and 4.2 MB at 90. On a 10 megabit connection, the extra takes about 1.6 seconds to download. Quality 75 to 80 keeps photos light while the detail still holds up.
What WebP quality does WordPress use?
86. WordPress saves WebP at 86 and JPEG at 82, the defaults in its image editor class. A 2021 ticket to use 82 for both stalled after one tester’s portrait needed WebP 90 to match, and it closed as “maybelater” in 2024. The wp_editor_set_quality filter changes it.
  • Tags
  • WebP
  • Quality
  • JPEG
  • Lossless
  • Compression
  • Developers
Share

More to read