Skip to main content

Decode Speed Test

Same images. Different decoders. See how quickly your browser turns compressed files into pixels.

sine wave

Put your browser to the test

5 images · all formats

Five photographs, 2400 pixels on the long side, each tested as the lossless PNG master plus 13 encodes: JPEG, JPEGli, WebP, AVIF at 8/10/12 bits, and seven JPEG XL variants. Encoding settings vary by format; these files are not matched for visual quality.

Courtyard café

2400 × 1635 px · 1,298 KiB JPEG

Courtyard caféPhoto by Abdullah Öğük / Unsplash
Hummingbird

2000 × 2400 px · 514 KiB JPEG

HummingbirdPhoto by Kyle Doerksen / Unsplash
Airport burgers

1920 × 2400 px · 799 KiB JPEG

Airport burgersPhoto by Mos Sukjaroenkraisri / Unsplash
Lantern portrait

1600 × 2400 px · 286 KiB JPEG

Lantern portraitPhoto by Sabesh Photography Ltd / Unsplash
Forest mushroom

1802 × 2400 px · 656 KiB JPEG

Forest mushroomPhoto by Vitaly K / Unsplash

Preparing the test…

Keep this browser tab visible while testing; switching tabs cancels the test run. Results appear together when the run finishes.

What are we measuring?

From bytes to pixels

Files are downloaded before timing begins. Each result gets one untimed warm-up, followed by sequential decodes. We report the median time and calculate speed from the decoded pixel dimensions. Downloads, loading the WASM decoder, and drawing to the screen are excluded.

Native decoding uses a fresh image and object URL for each decode. WASM creates a fresh decoder and copies its output into JavaScript memory as 8-bit RGBA. These timings include the work of the respective browser APIs; they are not isolated codec CPU measurements.

Two ways to decode JPEG XL

If your browser decodes JPEG XL natively, the test uses that. You can also include our self-hosted jxl-rs v0.7.4 WebAssembly decoder for comparison; it is slower and significantly lengthens the run. Without native support, JPEG XL always runs through WebAssembly. Both decoders get exactly the same bytes, and unsupported or failed files stay visible in the table.

Results depend on your device, browser, and encoding settings. Background activity, thermal throttling, and browser scheduling can affect timings. Compare multiple runs; this is a local experiment, not a universal ranking.

Inspired by Jon Sneyers’ browser decode speed test.