16 ms·
Firefox intent to ship: JPEG XL
- cpeterso 1mo agoAnd Chromium intent to Ship: JPEG XL decoding support (image/jxl) in blink https://groups.google.com/a/chromium.org/g/blink-dev/c/-gDojQbDPRI/m/X8JyGp7uDgAJ https://groups.google.com/a/chromium.org/g/blink-dev/c/-gDoj...
- cpeterso 1mo agoAnd Mozilla's blog post about shipping JPEG XL: https://hacks.mozilla.org/2026/08/intent-to-ship-jpeg-xl/ https://hacks.mozilla.org/2026/08/intent-to-ship-jpeg-xl/
- ChoosesBarbecue 1mo agoFor all the furore, I think the best outcome happened here. Both browsers used their weight to get a memory-safe implementation out, and now we can all benefit from a new file format with a significantly reduced attack surface.
- culi 1mo agoAgreed. It's been hard to watch how much vitriol was pointed at Mozilla for their reasonable position. The C++ decoder was simply unsafe and they would not implement it until a memory-safe decoder was available. Imagine if the fanatics got what they wanted immediately and then major vulnerabilities were introduced and there was a huge backlash against JXL. It could have set things back way more
- eviks 1mo ago> and then major vulnerabilities were introduced and there was a huge backlash against JXL. Has that ever stopped any of the previous unsafe stuff? Seems like this would be the same - we'd just see faster adoption of the better format without browser limits
- Macha 1mo agoArguably killed WebSQL and Java applets, for some past examples. Currently it's why WebUSB is not getting picked up by Safari/Firefox.
- Dylan16807 1mo agoJava applets were massively harder to secure than an image decoder and died in a very different era. I don't remember security being an issue with WebSQL. The big complaint was about getting locked too tightly to SQLite's implementation details. I see the security issues with WebUSB as not wanting to step into a minefield, which is pretty different from adding one more C++ library.
- account42 1mo agoNotably, it did not stop webp and avif.
- zamadatix 1mo agoAgreed. Much thanks to Mozilla for taking the wildly unpopular decision to shoot the early proposal down as well instead of supporting it just because it'd make people more mad at Chrome.
- bholley 1mo agoThanks all. I'm really happy with how it all turned out.
- culi 1mo ago(^CTO for Firefox at Mozilla)
- account42 1mo agoPursuing a different implementation didn't require rejecting the initial proposal, especially after already having an implementation. They didn't even agree to re-add support with a Rust implementation much later. This is a post hoc justification for Mozilla blindly following Google at the time.
- jaffathecake 1mo agoSome background on this, and demos of JPEG XL's progressive rendering: https://hacks.mozilla.org/2026/08/intent-to-ship-jpeg-xl/ https://hacks.mozilla.org/2026/08/intent-to-ship-jpeg-xl/
- heresie-dabord 1mo agoKey points (from TFA): = = = The image [...] is a 116 kB AVIF with a quality score (SSIMULACRA 2) of 62.8, meaning medium-high quality. To get the same quality, the JPEG XL image would be 134 kB. At a SSIMULACRA 2 score of 80 (very high quality), the AVIF is 227 kB, and the JPEG XL is 264 kB. But at lossless, the AVIF is 1.76 MB, and the JPEG XL is 1.45 MB. A lossless WebP is 1.55 MB. At a SSIMULACRA 2 score of 78 (very high quality), the AVIF is 11.6 kB, and the JPEG XL is 23.8 kB. But at lossless, the AVIF is 164 kB, and the JPEG XL is 92 kB. A lossless WebP is 96 kB. Although AVIF tends to produce smaller files at web-quality than JPEG XL, AVIF only has basic progressive rendering support. So, for very large images, it may be worth taking the filesize hit with JPEG XL. = = =
- ComputerGuru 1mo agoI'm a fan of JpegXL and happy to see support finally begin to coalesce around it on the browser scene, but I was wondering if anyone knew what goes into the decision of whether or not to consider adding encode support, e.g. via offscreenCanvas.convertToBlob() or whatever. How did browsers (minus Safari, of course) end up deciding to add support for WebP encode in addition to JPEG and PNG?
- jaffathecake 1mo agoIt often comes down to compat, and developer requests. Personally I find in-browser encoding for images inadequate, because it doesn't expose enough options. When we built https://squoosh.app/ https://squoosh.app/, we exposed the browser encoders for completeness, but they're pretty bad compared to the wasm codecs.
- ComputerGuru 1mo agoI love your editor/comparison tool. Would you be open to adding browser WebP? Is the JpegXL lossless options the "transparent JPEG recompression" or the actual lossless profile? I'm presuming the latter because it more than doubled the image size.
- jaffathecake 1mo agoYeah it's the latter. I'm going to look into adding transcoding, but Squoosh is currently set up to pass a bitmap to the encoder rather than the original image, because the original image can be processed first.
- ComputerGuru 1mo agoI can totally see how this feature would upend most architectures. Great work, I am adding a todo list action item up see if the performance can’t work out in favor of using this in place of the browser APIs we currently run to maybe adopt it. Love what you’ve done with the package and the site (this isn’t the first time it’s come on my radar, but you’ve spurred me to actually do something about it this time).
- jl6 1mo agoGreat outcome, and I hope the weight of mainstream browser support will spur camera and phone manufacturers to emit native JXLs from their devices.
- culi 1mo agosmartphones, computers, and TVs also dedicated hardware acceleration for AVIF video. Decoding an AVIF image uses virtually no battery/CPU power. It will require mass adoption to convince hardware makers to dedicate chips for decoding. especially with AVIF2 on the horizon
- Scaevolus 1mo agoChrome doesn't use hardware acceleration for decoding any image codecs-- not for JPEG or WebP or AVIF. It has some code for it (using VA-API), but it's disabled by default. Hardware video decoders are generally hard to use for image decoding tasks. Safari appears to be the only shipping browser using hardware decoding for JPEG and HEIF (HEVC based images). This is probably because vertical integration lets them make the decoders appropriate for image use. Also, "AVIF video" is incorrect. AVIF is the image codec based on AV1 intra frames.
- ledoge 1mo agoAVIF supports regular AV1 videos, there is no intra-only constraint. You can try this yourself with any AV1 video: ffmpeg -i input.webm -c:v copy output.avif You are right about Firefox and Chrome not using hardware decoding though, as such an AVIF video plays back poorly. And Chrome refuses to load an AVIF larger than 256 MB on my machine.
- jaffathecake 1mo agoAVIF video does support an alpha channel, which AV1, annoyingly, doesn't.
- Ohentis 1mo agoWe've been here before. Jpeg and PNG are "good enough" and consumers aren't going to get behind anything that is slightly less convenient.
- tristor 1mo agoNice. I hope we'll see more support for jxl across the web. It's so good at this point that it's my primary output/archival format for all of my photography.
- deleted 1mo ago[deleted]
- mchusma 1mo agoI am excited for this! A great practical format. I love progressive rendering. At 15% loaded in this example it’s surprisingly good already.