BuildRiot
Sign in

Article · Frontend

JPEG XL in Chrome 155: How it compares with AVIF and WebP

Chrome 155 adds JPEG XL decoding, giving developers another option for image delivery. Published comparisons differ on lossy efficiency against AVIF, while one measured study places both ahead of WebP. Encoding costs, display behavior and reversible compression shape where it fits.

A warmly lit miniature camera cutaway contrasts blue accordion-fold photographs with coral glass image layers above a bulky rolled print.
Illustration: BuildRiot (AI-generated)

Key takeaway

JPEG XL deserves a selective pipeline trial, especially for high-fidelity photographs and reversible compression of existing images. Adoption should depend on measured quality, processing costs and browser coverage for the site's audience.

Chrome support opens another delivery option

Chrome announced on October 6, 2026, that JPEG XL decoding ships starting with Chrome 155. Google identified high-fidelity photography, lossless compression and fine-grained progressive decoding as promising uses. The company also recommended trying both JPEG XL and AVIF. Developers now have a reason to compare them on their own assets before choosing a pipeline default. Sources: Chrome for Developers

Google claims 30–50% better compression than JPEG, without guaranteeing that saving for a particular image library. Chrome uses jxl-rs, a Rust decoder, so reference-library decoding benchmarks do not measure Chrome's implementation. A useful evaluation separates format capabilities, encoder efficiency and browser presentation. Each answers a different production question. Sources: Chrome for Developers

Published size comparisons favor different formats

NoWaterProgramming tested 24 Kodak photographs at 768×512 pixels, searching encoder settings for target SSIMULACRA2 perceptual-quality scores. It used libjxl 0.11.1 at effort 7 and libavif 1.3.0 at speed 6. The other encoders were libwebp 1.6.0 at method 6 and libjpeg-turbo 3.1.3. JPEG XL produced the smallest aggregate files at both targets in the table below. Its savings against JPEG were 22.5–23.2%, below Google's headline range. Sources: Chrome for Developers, NoWaterProgramming

Table

Aggregate encoded size for 24 Kodak photographs, in bytes

SSIMULACRA2 targetJPEGWebPAVIFJPEG XL
802,107,3611,846,9761,684,1411,633,451
60982,461839,896757,957754,392
JPEG XL produced the smallest encoded-file totals at both target scores in NoWaterProgramming's test.Source: NoWaterProgramming

Jake Archibald's comparison used an M4 Pro MacBook Pro and images generally 1,598 pixels wide. His tools included avifenc 1.4.2, libjxl 0.12.0 and jixel 0.4.2, generally at maximum effort unless that increased size. AVIF beat both JPEG XL encoders on the photograph and illustration in the table below. Sources: JakeArchibald.com

Archibald also reported that equivalent JPEG XL photographs were typically 15–25% larger than AVIF at default effort. That finding uses different effort settings from the selected examples below, which generally used maximum effort unless it increased size. Neither comparison establishes a universal winner: the images, encoder versions and effort policies differ. The Kodak totals also measure encoded files, not browser transfers or Chrome decoding performance. Sources: NoWaterProgramming, JakeArchibald.com

Table

Selected image sizes from Archibald's comparison, in kB

ImageSSIMULACRA2 targetAVIFJPEG XL with libjxlJPEG XL with jixel
F1 photographApproximately 7041.458.446.6
IllustrationApproximately 8068.5139.8110.4
AVIF produced smaller files for these examples under Archibald's encoder and effort settings.Source: JakeArchibald.com

Encoding cost and reversible compression change the calculation

Encoding cost belongs beside file size in a production comparison. For Archibald's illustration, AVIF speed 0 saved 14–21% against its default setting while taking 35–48 times as long to encode. JPEG XL's effort documentation says higher effort can produce larger files for individual images despite improving search and quality consistency. Compare an affordable production setting with a slower setting to see whether additional computation buys useful savings. Sources: JakeArchibald.com, libjxl

Existing JPEG files offer a separate opportunity because the reference tools support reversible recompression. NoWaterProgramming reduced 30 files from 178.0 MB to 141.0 MB, saving 20.8%, and reconstructed all originals byte-for-byte. Encoding took 11.3 seconds and reconstruction took 5.6 seconds on the study's laptop. Evaluate this workflow separately because exact file reconstruction serves a different requirement from visually acceptable lossy delivery. Sources: NoWaterProgramming, libjxl

The reference encoder defaults to lossless JPEG recompression, and the decoder can reconstruct the original when given a JPEG output filename. The commands below perform a pilot round trip and compare the resulting files. Retain originals during validation and compare every pilot file before relying on the archive. Sources: libjxl

cjxl original.jpg archived.jxl
djxl archived.jxl reconstructed.jpg
cmp original.jpg reconstructed.jpg

High dynamic range needs a separate comparison

High dynamic range, or HDR, makes metric choice especially consequential. Archibald's experimental HDR SSIMULACRA2 comparison placed default libjxl output 5–33% larger than AVIF using the perceptual quantizer transfer function. ColorVideoVDP instead placed it 28–53% smaller. Report the metric and its display assumptions alongside each result. Sources: JakeArchibald.com

AVIF supports 8-, 10- and 12-bit content, transparency, color profiles and HDR transfer-function signaling. Lossy WebP uses 8-bit color with 4:2:0 chroma subsampling, while lossless WebP uses red, green, blue and alpha channels. Use an approved standard dynamic range, or SDR, rendition for WebP in this comparison. Inspect small colored text and edges separately from photographic detail. Sources: Google for Developers, MDN

The libjxl changelog records gain-map bundle APIs in version 0.11.0. Archibald nevertheless reported that browsers did not yet handle JPEG XL gain maps. Check that time-sensitive observation against the browser and operating-system combinations being deployed. Record display model, brightness, highlight detail, banding and SDR appearance alongside file size. Sources: JakeArchibald.com, libjxl

Build a test around the production library

Build a test corpus that covers the site's actual image categories. Include skin, foliage, fabric, noise, smooth skies, screenshots, illustrations, transparent cutouts and HDR highlights. Cover thumbnails, normal responsive sizes and full-resolution photographs, with existing JPEG files in a separate reconstruction group. Publish dimensions, hashes, licenses, encoder versions, exact commands and machine configuration so later upgrades can be compared fairly.

  1. Separate lossy delivery, exact decoded-pixel preservation and byte-for-byte file reconstruction.
  2. Match perceptual quality before comparing bytes, and inspect images before revealing their sizes.
  3. Sweep practical and expensive effort settings, recording color and subsampling choices.
  4. Keep resizing, metadata policy and color preservation consistent across variants.
  5. Repeat browser tests on desktop and a constrained mobile device under controlled network conditions.

Record encoded bytes and actual cold-cache transfer, plus encoding wall time, CPU time, peak memory and thread count. Google's benchmark documentation distinguishes concurrent codec instances from internal codec threads and recommends ten encoding and decoding repetitions. In the browser, capture decode time, first useful paint, final paint and Largest Contentful Paint, or LCP. Use a filmstrip to inspect progressive loading, and measure LCP directly before claiming an improvement. Sources: Google

Report medians, spread and per-image outcomes alongside aggregate totals. Add an analysis weighted by actual request frequency, then subtract encoding and additional storage and cache costs from delivery savings. For mobile tests, consider libjxl's decoding-speed tiers from 0 through 4, which trade compression density or quality for faster decoding. Choose the configuration that meets the site's visual and operational requirements. Sources: libjxl

Start with a limited rollout

Begin with a limited asset class and measure how many actual requests receive JPEG XL. Expand when rendering results and delivery savings justify the additional encoding, storage and cache costs.

Attribution

Sources

  1. 1Chrome for DevelopersShipping Jpeg XL in ChromeSource published (UTC)
  2. 2NoWaterProgrammingJpeg XL in Chrome 155, measured: 21% off existing Jpegs with a byte-exact way back
  3. 3JakeArchibald.comJpeg XL vs AVIF for web use-cases
  4. 4libjxlJpeg XL image format reference implementation
  5. 5libjxlEncoding effort documentation
  6. 6libjxlJpeg XL encoder API
  7. 7Google for DevelopersFrequently asked questions about WebP
  8. 8MDNImage file type and format guide
  9. 9libjxllibjxl changelog
  10. 10GoogleJpegli benchmarking documentation

Read the original source for full details and context.

Report a problem

Links, dates or what you expected. Do not include passwords or private data.

More on Frontend

All Frontend stories

Review · AI

Firefox DevTools MCP 0.10.6 adds PDF output and fixes tab targeting

Mozilla’s Firefox DevTools MCP connects agents to Firefox for browser inspection; its documentation says the developer preset adds debugging, network, console and profiler tools. The locally run server uses WebDriver BiDi via Selenium. Mozilla lists Node 20.19.0+, Firefox 100+ and clients including Claude Code, Claude Desktop, Cursor and Cline. The proposed evaluation configuration is npx -y @mozilla/firefox-devtools-mcp@0.10.6 --tool-preset developer --viewport 1280x720 --start-url http://localhost:3000. Mozilla announced 0.10.6 on October 16, 2026, documenting PDF output through print_page and profile reuse changes. According to Mozilla, select_page and close_page now target the tab identified in the last tab listing, even if tabs have since opened or closed.

Mozilla