WebP Compression Benchmark Protocol
Direct answer: A useful browser image-compression benchmark must identify every input fixture, record its original bytes and dimensions, pin the browser and operating-system versions, disclose encoder settings, verify the output MIME type, and publish both individual results and aggregate calculations. Results from one browser build apply only to that tested environment because canvas encoders and codec support can change.
Protocol version: 2026-09-13. This page defines a reproducible method; it does not claim compression rates that have not been measured.
Measured browser results
These 12 results were produced on 2026-09-13 with Google Chrome 152.0.7977.83 on darwin 25.6.0 arm64, using WebP quality values 0.6, 0.8, 0.9. Negative byte change means the WebP output was smaller than the generated PNG source.
| Generated fixture group | Quality | PNG bytes | WebP bytes | Byte change | Source SHA-256 |
|---|---|---|---|---|---|
| photograph | 0.6 | 491,534 | 6,374 | -98.7% | c43dbb232857… |
| photograph | 0.8 | 491,534 | 8,452 | -98.28% | c43dbb232857… |
| photograph | 0.9 | 491,534 | 14,508 | -97.05% | c43dbb232857… |
| screenshot | 0.6 | 65,088 | 15,756 | -75.79% | 3cd6106bad0e… |
| screenshot | 0.8 | 65,088 | 18,972 | -70.85% | 3cd6106bad0e… |
| screenshot | 0.9 | 65,088 | 24,750 | -61.97% | 3cd6106bad0e… |
| transparent_graphic | 0.6 | 55,789 | 31,184 | -44.1% | d44c590594b7… |
| transparent_graphic | 0.8 | 55,789 | 33,228 | -40.44% | d44c590594b7… |
| transparent_graphic | 0.9 | 55,789 | 36,402 | -34.75% | d44c590594b7… |
| illustration | 0.6 | 21,087 | 5,598 | -73.45% | 49bd01a8c631… |
| illustration | 0.8 | 21,087 | 6,940 | -67.09% | 49bd01a8c631… |
| illustration | 0.9 | 21,087 | 8,824 | -58.15% | 49bd01a8c631… |
The test contains one generated fixture per group at three encoder quality values, so the percentages must not be generalized to real photo libraries or compared as a representative average. Quality values are encoder inputs, not perceptual-quality scores. Review visual quality separately. Download all results, hashes, settings and limitations.
Required fixture groups
| Group | Minimum evidence | Why it is separate |
|---|---|---|
| Photographs | Natural detail, gradients, faces and low-light texture. | Lossy artifacts differ from text and line art. |
| Screenshots | Text, UI edges and flat color regions. | Small ringing artifacts can reduce legibility. |
| Transparent graphics | Alpha edges and semi-transparent pixels. | Transparency must be verified, not inferred from the extension. |
| Illustrations | Flat fills, gradients and sharp contours. | Simple graphics can favor different settings from photos. |
Fields recorded for every result
- Fixture ID, license or ownership, SHA-256 hash, source MIME, bytes and pixel dimensions.
- Browser name and full version, operating system, test date and BatchWebP commit or release.
- Requested output MIME, quality, scale, target bytes and whether transparency or animation is expected.
- Actual output MIME, bytes, dimensions, percentage byte change, status and any warning.
Calculation and reporting rules
Byte change is calculated as (output bytes - source bytes) / source bytes × 100. A negative value means the output is smaller. Publish every fixture result before calculating medians. Do not average percentages across unlike fixture groups, omit larger outputs, or call a Target KB request successful unless the actual output is at or below the requested bytes.
What the protocol does not prove
File bytes do not measure perceived quality, loading performance, decoding cost, Core Web Vitals or CMS delivery behavior. Those require separate visual review, page-level testing and field data. A valid benchmark therefore reports output size as one observation rather than calling one format universally better.
Download the machine-readable protocol, download the measured results, or review the current product test methodology.