The image codec lab
The comparison pages show our test images; this one runs the actual encoders on yours. Real MozJPEG, libwebp, libavif and libjxl, compiled to WebAssembly, running entirely in this tab.
Drop an image here
Never uploaded; every byte stays in this tab.
Format
Real codec builds compiled to WebAssembly: the same MozJPEG, libwebp, libavif and libjxl that run on servers.
Quality
The same number means different things in every codec; compare results by size, not by setting.
The preview is decoded back from the actual encoded bytes, which is how this page can show you a JPEG XL even if your browser cannot display .jxl files natively.
What to try
- Drop the quality to 20 and switch formats: JPEG blocks, WebP smears, AVIF smooths. Every codec fails differently.
- Encode a screenshot with text, then a photo. Notice which formats hold text edges together at low quality.
- Compare encode times: AVIF and JPEG XL buy their quality with noticeably more CPU than JPEG.
Honest limits
These are single-threaded wasm builds at default effort settings: results are representative, but a tuned native encoder given more time can do better, especially for AVIF. Large images are downscaled to 1600px on the long edge to keep encodes snappy. And a browser demo says nothing about decode speed on your users' devices; that part depends on their hardware, as the capability report shows.