And soon Firefox will include it in Stable. During October it will go from Safari only to majority coverage. Eventful month!
While AVIF may have a slight edge in some cases like in fairly lossy compression, you won't really go _wrong_ with JPEG XL (unless strongly CPU constrained) and I think the strength of the format is its extreme versatility as a "be all end all image format" for some time where comparative performance depending on functionality ranges from respectable to excellent. It can work as a replacement for AVIF, PNG, JPEG, WebP, even certain TIFF required scenarios (high bit depth, multichannel, layers) depending on use cases.
The article brings attention to advancements in AVIF encoders over the past few years (to which its author has greatly contributed), but does not provide a definitive comparison between the two formats, even when it comes to the web. Parts of it are entirely based on personal opinions and educated guesses.
There are some unanswered questions about the methodology used, the resources spent on development of the respective encoders is not taken into consideration, the future developments of JPEG XL encoding are written off as too costly and the author’s opinion on what kind of content is appropriate for the web is quite subjective. See also the recent discussion:
Rollout looks solid, but I'll probably avoid deploying it to anything live til early next year at the minimum. That'll give time for browser adoption to happen.
Biggest concern I have was the same I had with AVIF a couple years ago, which is hardware acceleration on the server side. I attempted to roll out AVIF only to find out the encoding time was so long that sync calls were timing out due to queuing. It's gotten a lot better, but just know that all of these newer formats really do need more compute. It may not be worth the cost tradeoff vs webp until encoders are baked into chips.
I had the same problem with AVIF. My platform allows users to “scrub” through a video file they’ve uploaded by hovering over the thumbnail. To achieve this it creates a grid of 100 representative frames, up to 480px in width per frame. So the images are pretty large and take up a lot of space in JPEG format. File size is important because it reduces lag time before the thumbnail is scrubbable.
We tried AVIF and file sizes were much better but it would take multiple minutes just to generate. We also got feedback from our self-hosted customers that it was using way too many of their system resources.
So we’re now using WebP which generates in about 10 secs using much less CPU. I’m open to JPEG XL if it can improve on those metrics.
I don't see any advantage of any of the new formats over the good old and proven formats, so I stick with PNG and JPEG (properly optimized.) I can fire up any old browser and it will just work.
I used to think this and then I saw how well webp reduced my website's bandwidth costs compared to optimized jpg or png. I felt a bit left behind at that moment, like I should have been paying attention to these great improvements over the years.
JPEGXL literally is able to display images and colors that jpeg and png cannot (32-but floating point, layers, emission independent transparency, spot colors, built im depth maps). It’s not just about compression optimization. So for those use cases standard JPEG and PNG alone will never work. There are “updated” versions of JPEG that support some of these like HDR but those won’t work with any old browser either so back to the same issue.
I just switched over some machine vision code to use it for the lossless format, saving around 30% file size (~5 gigabytes per dataset) over optimized lossless PNG. I'll gladly take any storage donations you may be passing out though, so I can continue to use the good old and proven formats! ;)
biggest advantage for me is file size and lossless conversion of existing jpg images. In a network scenario that can meaningfully impact load times. Others will care about e.g. bit depth
I still miss the point. We have connections nowadays that are mostly good (with even the average domestic connection being gigabit!) and JPEG was fine in the days we had much slower connections.
On the other side we introduce yet another format that has to be supported, that creates compatibility issues with people that is using older browsers, or older software, older cameras, etc.
It's just another format meant to replace other formats to uniform all, so now we have N+1 formats that the user has to deal with.
What are the benefit for the final user? A reduction in 50% of the image size? We are not talking about videos (I re-encoded a lot of older videos to h265 because it save me almost 100/150% of the space, but unless you are a professional photographer, that btw uses raw format for archival, you don't have Tb of images so the saving for the average user are neglectable!).
This strongly depends on where your domicile is, even in Europe and the US. And lot of the users live outside these areas.
> JPEG was fine in the days we had much slower connections
Except that waiting for a large picture to load was very much thing, and in many cases still is.
> What are the benefit for the final user?
A number of users are still on metered mobile plans, and have little storage on their phones. With the current situation in electronics production, new phones are not going to offer more space, cheaper; to the contrary.
The issue for me is that RAW sucks, and Jpeg also sucks. Jpegs are standardized and display anywhere, but are also super lossy. RAW, like fish, is not actually a thing beyond a sorta "I know it when I see it" deal. It's non-standard even between camera models from the same manufacturer, and there are like 10 pieces of software that bother with this bullshit and afaik none of them are OSes or browsers.
First, try explaining to a non-tech person the difference between jpeg and png and they commonly scratch their head. It's nice to have a single format covering lossy and lossless, just meaning "picture". Whether it's a photo where lossless is ok or some icon where it isn't should be insubstantial.
Second, the "all connections are fast, what's the point" is one reason why the web is so slow. Connections are often slower than the dev with his 1gbps connect feels every day. The average website loads slower (in wall clock time) than it did 15 years ago. Smaller files and fewer network round trips would do everybody a favor.
It's exciting to see JXL support being re-added in Chrome after being removed a while ago and them seemingly not being interested in supporting it [1].
I think JXL is a cool image format, but was being held back by the most popular browser not supporting it, limiting its use (in the web especially) by a lot.
More likely the Google eng. director who tried to get rid of it because of not-invented-here syndrome (it was built in a different org) got a new job or changed company.
Such an important piece of software does not want to subject itself to the packaging and support woes of shared libraries. There are security issues, maintainability issues, and much more headache by going with that approach.
Static linking is one and done, headache gone. People have large drives these days, so it's not a problem.
There are areas where the browser will dynamically link, but those are more OS-related than image and file format codecs.
Removed because having yet another giant C codec was a huge risk, re-added because the PDF Association chose JXL as their next image format so anyone rendering PDFs (including browsers) is now required to have it.
Glad to see it happen. I'd prefer it there was just one format rather than both jxl and avif, but at least it's the final nail in the coffin of webp which seems to have accomplished little but annoy people for not much gain.
The wider ecosystem support is still far from commonplace, but it is slowly changing. iOS 18 wouldn't work with .jxl in Photos, but 27 does. Similarly, quick look and preview works fine on MacOS 27, thumbnails show up properly etc. I also found no issues with .jxl on linux, and image editors are slowly adding support as well.
Plain old jpg will still be everywhere for the next decade, but I'm glad that we finally have superior options with no real downsides, and without all the patent bullshit to boot.
It's frankly pointless. Pretty much nothing produces them natively, so it's usually a generation loss from JPEG, not enough compression gains without annoyingly visible loss of quality, still has format many format and functional limits so it solved nobody's problem at any time, pretty much.
And much (though not all) of its improved compression (before it damages the image too badly) was anyway matched by the better JPEG encoders which were released and improved over time. It sure benched very well against a 30+ year old JPEG encoder implementation though.
JXL has a pixel-accurate JPEG-input mode with no generation loss which already beats WebP, a native mode which is way way better even, it addresses many more use cases and is not Google's pet project (saying this while thanking them for all the foundational work from which modern image/video codecs benefit - JXL itself first and foremost!) so it DOES have better than a snowball's chance in hell of becoming the defacto standard of the next 10-30 years and we'll soon see it in silicon.
Every time a new image format comes out, I think about the compatibility crisis between apps.
E.g. Telegram still doesn't have sane support for .webp, it treats them as stickers. MacOS can take a long time to update with support for new formats. Image viewer apps even longer, many never updating to support new formats.
JPEG-XL is not particularly patent-laden and its license is correct for the use-case.
Other than the complexity of its implementation, there is very-little-to-no business nor technical reason not to use it or include it.
It has every right to be "the" image format for the next 20-odd years. Excellent compression, excellent lossless mode, transparency, etc. etc.
And probably my favorite feature- progressive rendering, which means you never have to make thumbnails ever again, you just truncate the output stream at the right proportion of pixel data (!)
iOS also now supports it natively for the photos it takes... but only if you have a newer iPhone than mine (a 15 Pro Max).
True, but in my opinion JPEG XL has the right balance of features to become a true replacement of almost every relevant image format we use today, on the web and elsewhere.
Nothing is perfect and niche formats will always be necessary but I think JPEG XL has a good chance to become the USB of image formats.
> MacOS can take a long time to update with support for new formats.
Apple added JPEG XL support for macOS, iOS, iPadOS, and watchOS in September 2023 [1]; iPhone 17 Pro/Pro Max added support for JPEG XL Lossy and Lossless compression for ProRAW pictures last year [2].
When Apple adopts jxl-rs, Safari, Chrome and Firefox will use the same JPEG XL decoder.
It's too bad that the concept of having a system-wide plugin architecture for importing/exporting formats never caught on outside a few niche platforms. AmigaOS had DataTypes back in the '80s, and BeOS had Translators back in the '90s.
The Linux/FOSS world kind of approximates this just because applications are often built against the same underlying libraries and utilities, e.g ImageMagick or FFMpeg, rather than implementing their own import/export filters, but it'd be nice to be able to install a single system-wide datatype library for a specific format, and have all of my existing software instantly be able to read and write it.
Codecs have been a thing on both major OSes, Windows Media Player could open DivX and QuickTime could open MKV. I think they were only limited to videos however.
The tortoises have somehow outrun the hare because Safari still hasn't turned on progressive loading in libjxl (which had this feature since before Safari added the feature), while FF (non Android) and Chrome shipped with it enabled. The 3 year long chess clock is now flipped.
Drat! I hoped this was going to cover the internal battle where Google executives trying to stop JPEG XL and how engineers finally convinced them to change their minds.
My guess: the engineers didn’t win the argument. The executives just gave up once all the other browsers had added support.
> The executives just gave up once all the other browsers had added support.
The big turning point seemed to have been Adobe adopting JpegXL as an approved image compression algorithm for the upcoming PDF spec. update. With that, since all browsers seem to also want to be PDF renderers, meant they had no choice but to include a JpegXL decoder. The win, if there was one here, was that the decoder they have to ship anyway now was exposed for use by <img> tags as well as by the PDF renderer.
JPEG XL is largely a Google effort including in creating the specification, the reference implementation and later a safer Rust implementation. Why would Google executives want to stop it? From what I gather it's Chrome engineers that didn't want it because it was huge, had little adoption (at the time), and was rather redundant with AVIF and WebP (for Web purposes). Not saying they didn't have related mandates from executives but they also have a lot of say in what goes in and what doesn't.
It's interesting how different theories come about when there is a lack of information and a high degree of preexisting bias. Reality is a lot simpler - it wasn't deemed worth the cost of addressing the security problems in the existing library so someone chose to abandon the format. However as industry adoption increased and a newer safe library appeared, the decision was changed. Also, note that while Google developed the new rust library, it wasn't the chrome team who made the investment.
> Reality is a lot simpler - it wasn't deemed worth the cost of addressing the security problems in the existing library so someone chose to abandon the format.
As evidenced by what? When first rejecting JPEG XL, Google did share their reasoning, but security problems hardly figured in it.
My guess is that Apple supporting it natively in iOS (there's an option in iPhone 16+ to save taken photos as JPEG-XL instead of Apple's proprietary format) likely also pushed the needle
I think it might have something to do with a Rust based decoder becoming available. IIRC one of the reasons for not implementing it before was expanding the attack surface.
They added enough fear/uncertainty/doubt around jpeg xl that no sane organization will adopt it now. God Google might decide to remove support again in 2027
WebP is 15 years old, and Google cares about it less than anybody else. Pretty much everybody else supports WebP but Google can’t even be bothered adding support for it to Google Docs.
That's true of WebP and AVIF as well. I think all modern image codecs have both lossy and lossless modes - the separation between JPEG for lossy and PNG for lossless seems to be a historical oddity.
You can’t really do that with PNG today either, because of all the PNG optimizers that quantize images before encoding them to PNG for better compression.
This is indeed frustrating, though realistically not that big of a deal for most users, especially if you consider lossless as just highest quality. Though personally I think it makes sense to have different extensions by convention for lossless and animated images.
JPEG artifacts are literally a meme, normal people are aware of this stuff.
I hold the extremist view that had we decided to use .png for lossless webps, it would have been an overall net gain - in people's minds "png" maps roughly to "whoever last touched this image didn't do anything evil to it" - very few people care how the data is actually encoded.
I mean we are already dealing with that nowadays. Many PNGs are either JPEG in a different package or straight up lossy compressed. Unfotunately extensions have never been safe for judge
You cannot tell it just from the extension either. If you like extensions, you can use a '.lossless.jxl'. And in general for most formats, you can use metadata to store that info (also doesn't guarantee anything)
I've been wishing for years that all of these codecs with hybrid lossless/lossy modes would just add a single l to their file extensions, purely for the annoyance of it.
Like, you can do this individually, but it's not the same thing as actually having it in the standard.
When writing GPU shaders it's not uncommon to use extensions like ".vert.glsl" = "vertex shader written in GLSL", ".frag.hlsl" = "fragment shader written in HLSL", etc.
This is something that can be addressed by file managers - showing a metadata entry on whether it's lossy or lossless. File extension (along with the bifurcated mainstream adoption of JPEG and PNG) has been a great proxy to do this, but like others noted, can be deceptive, which is arguably worse.
Interesting win for a cool format, i remember there was a rather arbitrary closing of the issue in Chromium forum despite big support for its addition, more strange yet is that Chrome team was pushing it's technical advancement forward.
I have a feeling that progressive loaders got downgraded along the way for whatever reason. I remember seeing progressive JPEGs and PNGs also load... progressively. JPEG even often had a grayscale-like first layer.
Took them long enough with a few embarassing detours, but a welcome news nonetheless! Has anyone ~blogged about some of the internal dynamics that lead the G ship to course-correct, would be curious to read?
Nice. I added support for JXL to a low traffic chan board after Firefox added experimental support. I would honestly be surprised if anyone ever upload anything in that format but I can see some use cases for it after reading this thread. I am curious if some day JXL would ever be as popular as JPG or PNG and what would drive that change. Art sites perhaps? Maybe DeviantArt could add support for it.
Art sites get the biggest gain with JXL. They can losslessly repackage every single JPEG uploads they have for practically zero cost. Existing PNG can also be losslessly compressed to JXL too, and just wrapping JXL around PNG yields improved compression (Note for last part: it is still in proposal status)
I love the codec and am glad to see it supported again. They overcame the security issues using a rust SIMD port. I wonder what "approximately as fast as the best non-memory-safe alternative" means - the wording suggests they didn't beat the C++ implementation, but how close is it?
Here's a benchmark over time of jxl-rs (Rust) vs libjxl (C++) across both memory usage and performance: https://jxl-rs-perf.lucaversari.it/. I'm inclined to trust that it's a decent benchmark since it's from Luca Versari, a key person in the original JPEG XL standardization effort and development of libjxl, and is now the main developer of jxl-rs.
Seems to be between a little and a lot faster in almost all of the tests.
Excellent, I wanted to ask whether this release will support in Android WebView and iOS WKWebView components as well? Or only the Google Chrome browser will support this feature?
Are they switching it on in Android Chrome? That would complete the picture of at least baseline support... eventually... when a decent percentage of Android phones actually get that version.
But Safari (MacOS or iOS) still doesn't support the progressive rendering shown here, nor animation, if caniuse is up to date:
Kind of orthogonal, but note that JXL creation tools are still uneven. Affinity, for instance, has terrible JXL creation. I don't know what they're using, but it's glitchy, and yields horrible compression levels relative to the quality, and I know a number of people that were soured on JXL purely because Affinity is a poor source for it.
For that tool you need to output an uncompressed target and use the reference command line tools, preferably libjxl and cjxl (which is still the reference, while jxl-rs remains the experimental), to create the JXL. You will have better compression with better quality, minus the glitches.
About three years ago I had to find a replacement for old .jpg files and .png files.
The main two contenders were .avif and .webp. For a few reasons, I selected .avif and in hindsight I think it was the better, choice. Both would be objectively better than jpg or png.
With JPEG XL ... hmmm. AVIF is not perfect, in particular when the compression rate is very high I noticed that some photos lose a lot of intrinsic quality that is not instantly obvious; I noticed this when I took various pictures over the years from outdoors. Still, AVIF beats jpg and png just about on every metric when compression is required. With JPEG XL I guess I have to re-evaluate, but right now I am still sticking to avif. The two factors that will be important for me is compression ratio and quality. I am ok with a bit of loss of quality, if the compression is better, but I am not sure JPEG XL beats AVIF here clearly either, so I am not sure what to do with JPEG XL.
Both JPEG XL and WebP far exceed AVIF when it comes to lossless. For lossy, AVIF used to do better at low quality and JPEG XL at high quality. But apparently AV1 encoders have improved a lot since then, closing the distance. An article comparing the two was posted recently:
The author, who has worked on said AV1 encoders, has expressed doubt that JPEG XL encoders could improve much with only reasonable amounts of effort, but that was also only their personal (if educated) guess. With JPEG XL finally seeing adoption on the web, we will hopefully see work on the reference encoder resume in earnest soon.
So for now, I’d say you’re fine with AVIF. Unless you’re doing lossless, because AVIF sucks at lossless. (And JPEG XL has the unique feature of supporting lossless JPEG transcoding, too.)
I thing the endgame is lossless PNG with 16bit color components with basic compression like gzip or at best bzip2. Or a format without the weirdness of PNG 'line based loading' which is obsolete nowdays. The "expensive part", apart from the compression algorithm, being the meta data storage without kludge.
>without the weirdness of PNG 'line based loading' which is obsolete nowdays
How? Line-based loading is a very simple way to exploit 2D spatial coherence. A 1D format like gzip loses this advantage for minimal gain in simplicity.
These days I favour lossless WEBP instead of PNG. I often save around 30%~40% of file size compared to PNG, especially when the PNG is encoded with lots of bits per pixel (i.e 48 bits or 24 bits).
Fun fact, I needed JPEG XL support for my C++ pipeline and I didn't feel like including any official libraries. Roughly $500 tokens later I had a fully working optimized JPEG XL spec compliant en/de/coder that outperformed the official codepaths (both cpp and rust) by 70% (lower runtime). Took literally 5 hours to build out. Can someone tell me what Google is doing?
Now I just want Flickr to support uploading JXL since I do JXL export as my primary long-term storage format for final images. Would be great if Canon also added JXL support to their photo printer software.
Oh hell no. HDR is already bad enough in Youtube on iOS where there seems to be no way to turn it off - you tune your brightness to something decent in bed... and then some video by some showoff dingus scrolls across the feed frying your eyeballs.
Fuck HDR or at the very least give people an option to turn it off!
I will say windows implementation of HDR - at least the way Chrome handles it within Windows is somewhat of an abomination - so I'm sure Apple's iOS is just as poor!
but sometimes it's not HDRs fault - it's just the segura effect. People with cameras exceeding their capability levels, not understanding what you need to do after you shoot video in LOG.
I mix multi-monitor some-HDR some-SDR in Windows, it's bad.
I do not know if JPEG XL is competitive with AVIF for very compressed images, because that is mostly a concern for those who want to host at a minimum cost Web pages with embedded images. I assume that AVIF must be better for that purpose.
On the other hand, AVIF cannot compete with JPEG XL for high-quality photographs, which is something much more important for me, because it is a format suitable for storing my own photographs and it is a format that would make me appreciate positively a Web site that would have beautiful images in this format.
That isn’t my experience. I tried compressing conference proceedings into thumbnails with tiny file size and for this purpose I found that JPEGXL is far better than AVIF
And soon Firefox will include it in Stable. During October it will go from Safari only to majority coverage. Eventful month!
While AVIF may have a slight edge in some cases like in fairly lossy compression, you won't really go _wrong_ with JPEG XL (unless strongly CPU constrained) and I think the strength of the format is its extreme versatility as a "be all end all image format" for some time where comparative performance depending on functionality ranges from respectable to excellent. It can work as a replacement for AVIF, PNG, JPEG, WebP, even certain TIFF required scenarios (high bit depth, multichannel, layers) depending on use cases.
A great codec but not the best for the web. For typical web use AVIF is almost always better.
The case against JPEG XL https://giannirosato.com/blog/post/case-against-jxl/
The article brings attention to advancements in AVIF encoders over the past few years (to which its author has greatly contributed), but does not provide a definitive comparison between the two formats, even when it comes to the web. Parts of it are entirely based on personal opinions and educated guesses.
There are some unanswered questions about the methodology used, the resources spent on development of the respective encoders is not taken into consideration, the future developments of JPEG XL encoding are written off as too costly and the author’s opinion on what kind of content is appropriate for the web is quite subjective. See also the recent discussion:
https://news.ycombinator.com/item?id=49690554
Rollout looks solid, but I'll probably avoid deploying it to anything live til early next year at the minimum. That'll give time for browser adoption to happen.
Biggest concern I have was the same I had with AVIF a couple years ago, which is hardware acceleration on the server side. I attempted to roll out AVIF only to find out the encoding time was so long that sync calls were timing out due to queuing. It's gotten a lot better, but just know that all of these newer formats really do need more compute. It may not be worth the cost tradeoff vs webp until encoders are baked into chips.
I had the same problem with AVIF. My platform allows users to “scrub” through a video file they’ve uploaded by hovering over the thumbnail. To achieve this it creates a grid of 100 representative frames, up to 480px in width per frame. So the images are pretty large and take up a lot of space in JPEG format. File size is important because it reduces lag time before the thumbnail is scrubbable.
We tried AVIF and file sizes were much better but it would take multiple minutes just to generate. We also got feedback from our self-hosted customers that it was using way too many of their system resources.
So we’re now using WebP which generates in about 10 secs using much less CPU. I’m open to JPEG XL if it can improve on those metrics.
To make sure I understand, your concern specifically applies to images that your application server is rendering custom for each visitor?
I'm assuming that for more persistent, cachable types of images, there wouldn't likely be that type of problem, right?
Seems Firefox will get support in version 158
https://groups.google.com/a/mozilla.org/g/dev-platform/c/3YM...
Obviously, once the Google overlords decided it.
I don't see any advantage of any of the new formats over the good old and proven formats, so I stick with PNG and JPEG (properly optimized.) I can fire up any old browser and it will just work.
I used to think this and then I saw how well webp reduced my website's bandwidth costs compared to optimized jpg or png. I felt a bit left behind at that moment, like I should have been paying attention to these great improvements over the years.
JPEGXL literally is able to display images and colors that jpeg and png cannot (32-but floating point, layers, emission independent transparency, spot colors, built im depth maps). It’s not just about compression optimization. So for those use cases standard JPEG and PNG alone will never work. There are “updated” versions of JPEG that support some of these like HDR but those won’t work with any old browser either so back to the same issue.
JXL has clear advantages and saying you don't see them means you either didn't attempt to see them or willfully ignore them
For one, it allowed me to fit several years of photos in a few gigabytes so I can easily back them up without going broke.
I just switched over some machine vision code to use it for the lossless format, saving around 30% file size (~5 gigabytes per dataset) over optimized lossless PNG. I'll gladly take any storage donations you may be passing out though, so I can continue to use the good old and proven formats! ;)
James Brown recorded his music to sound good over an AM radio. It still sounds good on good equipment.
Meanwhile, there's a lot of modern music that takes full advantage of quality gear, but is basically unlistenable on bad speakers.
There's nothing wrong with either approach, but if you're not trying to raise the bar why not just stick with the lowest common denominator?
biggest advantage for me is file size and lossless conversion of existing jpg images. In a network scenario that can meaningfully impact load times. Others will care about e.g. bit depth
JXL supports extra channels for multispectral images.
You should add that line to your resume.
I still miss the point. We have connections nowadays that are mostly good (with even the average domestic connection being gigabit!) and JPEG was fine in the days we had much slower connections.
On the other side we introduce yet another format that has to be supported, that creates compatibility issues with people that is using older browsers, or older software, older cameras, etc.
It's just another format meant to replace other formats to uniform all, so now we have N+1 formats that the user has to deal with.
What are the benefit for the final user? A reduction in 50% of the image size? We are not talking about videos (I re-encoded a lot of older videos to h265 because it save me almost 100/150% of the space, but unless you are a professional photographer, that btw uses raw format for archival, you don't have Tb of images so the saving for the average user are neglectable!).
> the average domestic connection being gigabit
This strongly depends on where your domicile is, even in Europe and the US. And lot of the users live outside these areas.
> JPEG was fine in the days we had much slower connections
Except that waiting for a large picture to load was very much thing, and in many cases still is.
> What are the benefit for the final user?
A number of users are still on metered mobile plans, and have little storage on their phones. With the current situation in electronics production, new phones are not going to offer more space, cheaper; to the contrary.
Also, publishing larger / better quality images becomes easier and cheaper.
> What are the benefit for the final user?
Many that you can search the web for, but to address the specific points you mentioned off the top of my head:
- Lower cell data usage for users
- Not everyone has gigabit fiber
The issue for me is that RAW sucks, and Jpeg also sucks. Jpegs are standardized and display anywhere, but are also super lossy. RAW, like fish, is not actually a thing beyond a sorta "I know it when I see it" deal. It's non-standard even between camera models from the same manufacturer, and there are like 10 pieces of software that bother with this bullshit and afaik none of them are OSes or browsers.
First, try explaining to a non-tech person the difference between jpeg and png and they commonly scratch their head. It's nice to have a single format covering lossy and lossless, just meaning "picture". Whether it's a photo where lossless is ok or some icon where it isn't should be insubstantial.
Second, the "all connections are fast, what's the point" is one reason why the web is so slow. Connections are often slower than the dev with his 1gbps connect feels every day. The average website loads slower (in wall clock time) than it did 15 years ago. Smaller files and fewer network round trips would do everybody a favor.
Being an “everything” image format sounds awful and something that’s over engineered and no person understands it.
It's exciting to see JXL support being re-added in Chrome after being removed a while ago and them seemingly not being interested in supporting it [1].
I think JXL is a cool image format, but was being held back by the most popular browser not supporting it, limiting its use (in the web especially) by a lot.
[1]: https://issues.chromium.org/issues/40270698
Yes I think the major story here is Google removing and then re-adding it back. Big companies have big egos, so this is quite a miracle.
I have a feeling now JXL is here to stay, finally.
> Big companies have big egos
More likely the Google eng. director who tried to get rid of it because of not-invented-here syndrome (it was built in a different org) got a new job or changed company.
Hurrah!
Wasn't it due to poor security? libjxl had notorious bugs that would've on par with webp exploit, if present in browser:
https://security.snyk.io/vuln/?search=libjxl
I remember Project Zero cautioning Google's browser team against adding insecure decoders/encoders.
No, that was not part of the reason the Google Chrome team gave: https://groups.google.com/a/chromium.org/g/blink-dev/c/WjCKc...
that's what firefox said, not chrome
Probably why Google implemented their own decoder in Rust
https://developer.chrome.com/blog/jpeg-xl-in-chrome#safety_f...
Why do browsers need to support every media format? Why can't it be shipped as a shared library for the whole system to use?
> Why can't it be shipped as a shared library for the whole system to use?
Flashbacks to DataTypes on the Amiga: https://wiki.amigaos.net/wiki/Datatypes_Library
This way browser vendors control what their app supports, and won't have something break because a user doesn't have a library.
> Why can't it be shipped as a shared library for the whole system to use?
That's how it works on macOS; the bundled apps (Preview, Photos, etc.) gained support for JPEG XL.
Given that there are more operating systems than browser engines these days, I'm not sure this would be an unequivocal win.
Google seems to prefer reimplementing every portion of an OS possible in Chrome.
Because browsers want to provide a consistent platform and can’t rely on OS vendors to do it in the way they need and prioritize their interests.
But it is a shared library? It's used in both Chrome and Firefox.
> Why can't it be shipped as a shared library
Shared libraries are a bad idea that is simply taking way too long to just die the horrible death it deserves.
Such an important piece of software does not want to subject itself to the packaging and support woes of shared libraries. There are security issues, maintainability issues, and much more headache by going with that approach.
Static linking is one and done, headache gone. People have large drives these days, so it's not a problem.
There are areas where the browser will dynamically link, but those are more OS-related than image and file format codecs.
> removed a while ago and them seemingly not being interested in supporting it
Removed because no one from Google benifits from supporting it then.
Re-added because someone could get a promotion by supporting it now.
> nobody benifits from supporting it
Do you mean the users of the browsers not benefitting, or specific Google employees/stakeholders?
Removed because having yet another giant C codec was a huge risk, re-added because the PDF Association chose JXL as their next image format so anyone rendering PDFs (including browsers) is now required to have it.
See previous HN discussions for context:
Google set to deprecate JPEG XL support in Chrome 110 - https://news.ycombinator.com/item?id=33399940
JPEG XL support has officially been removed from Chromium - https://news.ycombinator.com/item?id=33933208
Chrome Jpegxl Issue Reopened - https://news.ycombinator.com/item?id=46033330
The case agains JPEG XL - https://news.ycombinator.com/item?id=49690554
Glad to see it happen. I'd prefer it there was just one format rather than both jxl and avif, but at least it's the final nail in the coffin of webp which seems to have accomplished little but annoy people for not much gain.
The wider ecosystem support is still far from commonplace, but it is slowly changing. iOS 18 wouldn't work with .jxl in Photos, but 27 does. Similarly, quick look and preview works fine on MacOS 27, thumbnails show up properly etc. I also found no issues with .jxl on linux, and image editors are slowly adding support as well.
Plain old jpg will still be everywhere for the next decade, but I'm glad that we finally have superior options with no real downsides, and without all the patent bullshit to boot.
What issue do people have with webp?
Still can't upload it to every site that takes images, my file browser doesn't preview them nicely for whatever reason, that kind of stuff.
It's frankly pointless. Pretty much nothing produces them natively, so it's usually a generation loss from JPEG, not enough compression gains without annoyingly visible loss of quality, still has format many format and functional limits so it solved nobody's problem at any time, pretty much.
And much (though not all) of its improved compression (before it damages the image too badly) was anyway matched by the better JPEG encoders which were released and improved over time. It sure benched very well against a 30+ year old JPEG encoder implementation though.
JXL has a pixel-accurate JPEG-input mode with no generation loss which already beats WebP, a native mode which is way way better even, it addresses many more use cases and is not Google's pet project (saying this while thanking them for all the foundational work from which modern image/video codecs benefit - JXL itself first and foremost!) so it DOES have better than a snowball's chance in hell of becoming the defacto standard of the next 10-30 years and we'll soon see it in silicon.
Poor support in some instances. Apple lagged for a long time for iPhone support. Discord mobile still does not support animated webp's.
webp = VP8 image
Nothing wrong with that per se, it's just old and limited, especially compared to avif/AV1 which would be like a theoretical VP10 at this point.
Poor support makes it feel like a form of DRM.
Every time a new image format comes out, I think about the compatibility crisis between apps.
E.g. Telegram still doesn't have sane support for .webp, it treats them as stickers. MacOS can take a long time to update with support for new formats. Image viewer apps even longer, many never updating to support new formats.
JPEG-XL is not particularly patent-laden and its license is correct for the use-case.
Other than the complexity of its implementation, there is very-little-to-no business nor technical reason not to use it or include it.
It has every right to be "the" image format for the next 20-odd years. Excellent compression, excellent lossless mode, transparency, etc. etc.
And probably my favorite feature- progressive rendering, which means you never have to make thumbnails ever again, you just truncate the output stream at the right proportion of pixel data (!)
iOS also now supports it natively for the photos it takes... but only if you have a newer iPhone than mine (a 15 Pro Max).
I think the bigger driver is that, due to it being the next PDF image format, most platforms will already be forced to add some form of support to it.
When literally every OS already comes with a form of libjxl pre-installed there is no good reason not to add support for it.
> you just truncate the output stream at the right proportion of pixel data
Does the format have explicit support for this? As in, is there any easy way to do, say, an exact Range request after reading the file header?
>JPEG-XL is not particularly patent-laden and its license is correct for the use-case.
The same could be said for .webm, but Apple refused to support it because they wanted to patent-laden alternative to thrive.
Can progressive loading be made less fine-grained? With too many levels you don't know, if image is still loading or is just low-res.
Loading vs loaded difference needs to be clear.
> you never have to make thumbnails ever again, you just truncate the output stream at the right proportion of pixel data (!)
It's an attack vector for images to have different thumbnail/first bytes than the final image so software still have to decode the whole image.
The problem with progressive rendering is that the user never knows when downloading is complete unless you add loaders to each image.
True, but in my opinion JPEG XL has the right balance of features to become a true replacement of almost every relevant image format we use today, on the web and elsewhere.
Nothing is perfect and niche formats will always be necessary but I think JPEG XL has a good chance to become the USB of image formats.
Yeah. Here is a surprisingly readable article on all the supported features and design decisions of JPEG XL: https://arxiv.org/abs/2506.05987
The format is designed to be as general as possible, potentially replacing many common (JPEG, GIF, PNG) and professional image formats.
For example, JPEG XL supports pages (e.g. for comic books), layers (with variable frame sizes, positions and blend modes) and timed animations.
How about AVIF?
I have not read that many direct comparisons here.
> MacOS can take a long time to update with support for new formats.
Apple added JPEG XL support for macOS, iOS, iPadOS, and watchOS in September 2023 [1]; iPhone 17 Pro/Pro Max added support for JPEG XL Lossy and Lossless compression for ProRAW pictures last year [2].
When Apple adopts jxl-rs, Safari, Chrome and Firefox will use the same JPEG XL decoder.
[1]: https://webkit.org/blog/14445/webkit-features-in-safari-17-0...
[2]: "iPhone 17 Pro’s Camera Leap: JPEG‑XL, Cleaner Shots, and Pro Filmmaking Tools" - https://modernengineeringmarvels.com/2025/09/19/iphone-17-pr...
When Apple adopts jxl-rs? Any source for them doing that? I can’t think of any Rust code that Apple is shipping.
It's too bad that the concept of having a system-wide plugin architecture for importing/exporting formats never caught on outside a few niche platforms. AmigaOS had DataTypes back in the '80s, and BeOS had Translators back in the '90s.
The Linux/FOSS world kind of approximates this just because applications are often built against the same underlying libraries and utilities, e.g ImageMagick or FFMpeg, rather than implementing their own import/export filters, but it'd be nice to be able to install a single system-wide datatype library for a specific format, and have all of my existing software instantly be able to read and write it.
Codecs have been a thing on both major OSes, Windows Media Player could open DivX and QuickTime could open MKV. I think they were only limited to videos however.
Windows has, for a while, had Windows Imaging Component for images (https://learn.microsoft.com/en-us/windows/win32/wic/-wic-lh) and Microsoft Media Foundation for video (https://learn.microsoft.com/en-us/windows/win32/medfound/mic...). Not sure how widespread actual use is though.
Ugh. Every time I accidentally put a HEIC on my Windows machine, or one of my students tries to upload a WEBP to our school's LMS :/
The user's OS or the LMS should offer to convert it on the spot. Worst case to .bmp
If I remember correctly Instagram didn't support WebP either.
The tortoises have somehow outrun the hare because Safari still hasn't turned on progressive loading in libjxl (which had this feature since before Safari added the feature), while FF (non Android) and Chrome shipped with it enabled. The 3 year long chess clock is now flipped.
Drat! I hoped this was going to cover the internal battle where Google executives trying to stop JPEG XL and how engineers finally convinced them to change their minds.
My guess: the engineers didn’t win the argument. The executives just gave up once all the other browsers had added support.
> The executives just gave up once all the other browsers had added support.
The big turning point seemed to have been Adobe adopting JpegXL as an approved image compression algorithm for the upcoming PDF spec. update. With that, since all browsers seem to also want to be PDF renderers, meant they had no choice but to include a JpegXL decoder. The win, if there was one here, was that the decoder they have to ship anyway now was exposed for use by <img> tags as well as by the PDF renderer.
That's... not what happened? See the timeline I posted here: https://news.ycombinator.com/item?id=49445897
JPEG XL is largely a Google effort including in creating the specification, the reference implementation and later a safer Rust implementation. Why would Google executives want to stop it? From what I gather it's Chrome engineers that didn't want it because it was huge, had little adoption (at the time), and was rather redundant with AVIF and WebP (for Web purposes). Not saying they didn't have related mandates from executives but they also have a lot of say in what goes in and what doesn't.
> Why would Google executives want to stop it?
Google and Mozilla executives. The 'why' is not public knowledge. Maybe someone has a personal vendetta against some people involved in jxl.
It's interesting how different theories come about when there is a lack of information and a high degree of preexisting bias. Reality is a lot simpler - it wasn't deemed worth the cost of addressing the security problems in the existing library so someone chose to abandon the format. However as industry adoption increased and a newer safe library appeared, the decision was changed. Also, note that while Google developed the new rust library, it wasn't the chrome team who made the investment.
> Reality is a lot simpler - it wasn't deemed worth the cost of addressing the security problems in the existing library so someone chose to abandon the format.
As evidenced by what? When first rejecting JPEG XL, Google did share their reasoning, but security problems hardly figured in it.
My guess is that Apple supporting it natively in iOS (there's an option in iPhone 16+ to save taken photos as JPEG-XL instead of Apple's proprietary format) likely also pushed the needle
You made me check. iOS only supports JXL in ProRAW mode, which (I hope) most people don't use.
I think it might have something to do with a Rust based decoder becoming available. IIRC one of the reasons for not implementing it before was expanding the attack surface.
They added enough fear/uncertainty/doubt around jpeg xl that no sane organization will adopt it now. God Google might decide to remove support again in 2027
I thought the reasoning was Google wanted to cartel their own fledgling webp format and didn't want to promote competition?
WebP is 15 years old, and Google cares about it less than anybody else. Pretty much everybody else supports WebP but Google can’t even be bothered adding support for it to Google Docs.
Google is one of the main developers of Jpeg XL.
One downside is that you cannot tell if format lossy or lossless by looking at its extension.
That's true of WebP and AVIF as well. I think all modern image codecs have both lossy and lossless modes - the separation between JPEG for lossy and PNG for lossless seems to be a historical oddity.
And a nominally “lossless” image may have been reencoded from a lossy source.
You can’t really do that with PNG today either, because of all the PNG optimizers that quantize images before encoding them to PNG for better compression.
Independent preprocessing doesn't make PNG itself lossy.
This is indeed frustrating, though realistically not that big of a deal for most users, especially if you consider lossless as just highest quality. Though personally I think it makes sense to have different extensions by convention for lossless and animated images.
It's a big deal :(
JPEG artifacts are literally a meme, normal people are aware of this stuff.
I hold the extremist view that had we decided to use .png for lossless webps, it would have been an overall net gain - in people's minds "png" maps roughly to "whoever last touched this image didn't do anything evil to it" - very few people care how the data is actually encoded.
I mean we are already dealing with that nowadays. Many PNGs are either JPEG in a different package or straight up lossy compressed. Unfotunately extensions have never been safe for judge
You cannot tell it just from the extension either. If you like extensions, you can use a '.lossless.jxl'. And in general for most formats, you can use metadata to store that info (also doesn't guarantee anything)
ah, that's a good point.
perhaps use .ll.jxl to indicate "lossless jpegxl" informally?
prior art: I've been using .frontmatter.md or .fm.md for markdown files with frontmatter
I've been wishing for years that all of these codecs with hybrid lossless/lossy modes would just add a single l to their file extensions, purely for the annoyance of it.
Like, you can do this individually, but it's not the same thing as actually having it in the standard.
When writing GPU shaders it's not uncommon to use extensions like ".vert.glsl" = "vertex shader written in GLSL", ".frag.hlsl" = "fragment shader written in HLSL", etc.
Multiple extensions typically denote nested filetypes.
Like files.tar.xz may be decompressed with xz and then extracted with tar to get the directory "files".
I think in your case .md.fm would be a greater fit, as the front matter is read first. Or just .fmd
This is something that can be addressed by file managers - showing a metadata entry on whether it's lossy or lossless. File extension (along with the bifurcated mainstream adoption of JPEG and PNG) has been a great proxy to do this, but like others noted, can be deceptive, which is arguably worse.
I can't really think of a scenario where that would be useful? File-size is more indicative of quality anyway.
Interesting win for a cool format, i remember there was a rather arbitrary closing of the issue in Chromium forum despite big support for its addition, more strange yet is that Chrome team was pushing it's technical advancement forward.
Sadly, still far from adoptable today's web: https://caniuse.com/jpegxl = 17% https://caniuse.com/?search=webp = 97%
Linking that is really missing the point, that the number is going to have a massive jump in a few weeks.
Watching the example image load I had this flashback of the past, where images were 256 color interlaced GIFs, downloading slowly, line by line...
I have a feeling that progressive loaders got downgraded along the way for whatever reason. I remember seeing progressive JPEGs and PNGs also load... progressively. JPEG even often had a grayscale-like first layer.
Yeah, the conservative loaders took over.
I’ll see myself out.
So it's supported now by all the major browsers (Firefox support coming soon) as well as all the major OSes.
I believe it's been available in Firefox for a while now, just behind a feature flag
Firefox 158 will ship with it on by default: https://groups.google.com/a/mozilla.org/g/dev-platform/c/3YM...
Next up: Phones and cameras. It would be so great to have a common image format again after years of fragmentation.
iPhones have supported it for 3 years.
Took them long enough with a few embarassing detours, but a welcome news nonetheless! Has anyone ~blogged about some of the internal dynamics that lead the G ship to course-correct, would be curious to read?
I doubt anyone that wants to keep their job in big tech would ever publish something like that.
Nice. I added support for JXL to a low traffic chan board after Firefox added experimental support. I would honestly be surprised if anyone ever upload anything in that format but I can see some use cases for it after reading this thread. I am curious if some day JXL would ever be as popular as JPG or PNG and what would drive that change. Art sites perhaps? Maybe DeviantArt could add support for it.
Art sites get the biggest gain with JXL. They can losslessly repackage every single JPEG uploads they have for practically zero cost. Existing PNG can also be losslessly compressed to JXL too, and just wrapping JXL around PNG yields improved compression (Note for last part: it is still in proposal status)
The timetable looks promising: https://cloudinary.com/blog/2026-the-year-of-jpeg-xl#_strong...
I love the codec and am glad to see it supported again. They overcame the security issues using a rust SIMD port. I wonder what "approximately as fast as the best non-memory-safe alternative" means - the wording suggests they didn't beat the C++ implementation, but how close is it?
Here's a benchmark over time of jxl-rs (Rust) vs libjxl (C++) across both memory usage and performance: https://jxl-rs-perf.lucaversari.it/. I'm inclined to trust that it's a decent benchmark since it's from Luca Versari, a key person in the original JPEG XL standardization effort and development of libjxl, and is now the main developer of jxl-rs.
Seems to be between a little and a lot faster in almost all of the tests.
looks great - jxl-rs is faster since June 2026 (using just a bit more RAM)
Excellent, I wanted to ask whether this release will support in Android WebView and iOS WKWebView components as well? Or only the Google Chrome browser will support this feature?
Are they switching it on in Android Chrome? That would complete the picture of at least baseline support... eventually... when a decent percentage of Android phones actually get that version.
But Safari (MacOS or iOS) still doesn't support the progressive rendering shown here, nor animation, if caniuse is up to date:
https://caniuse.com/jpegxl
Not to be a downer — it's one necessary step on the road.
I'll kind of miss (not actually) the early 2000s codec vibe I get when I share an image with people on Signal and half of them say, "I can't view it."
Wanted to use this for building a viewer for astronomical imagery but the decoder resamples to 8 bits internally unfortunately.
Have to stick with AVIF which supports up to 12 bits.
After some time, this seems to be the first image format, now in production, not being just the nus product of some video format.
Any way for those who enjoy dynamic languages (non-Python) to call it via FFI?
how about an option to block that "update address?" dialog on domain basis???
Is jpegxl support in canvas toBlob planned?
Is this the same patent/license nightmare as JPEG2000 ?
No, JPEG XL is an open standard.
"open" in the sense that you have to pay $200 to read it, anyway.
That's good to hear. Let's hope there's hardware adoption on the camera end soon. As an image lib maintainer the codec wars were driving me nuts.
Kind of orthogonal, but note that JXL creation tools are still uneven. Affinity, for instance, has terrible JXL creation. I don't know what they're using, but it's glitchy, and yields horrible compression levels relative to the quality, and I know a number of people that were soured on JXL purely because Affinity is a poor source for it.
For that tool you need to output an uncompressed target and use the reference command line tools, preferably libjxl and cjxl (which is still the reference, while jxl-rs remains the experimental), to create the JXL. You will have better compression with better quality, minus the glitches.
About three years ago I had to find a replacement for old .jpg files and .png files.
The main two contenders were .avif and .webp. For a few reasons, I selected .avif and in hindsight I think it was the better, choice. Both would be objectively better than jpg or png.
With JPEG XL ... hmmm. AVIF is not perfect, in particular when the compression rate is very high I noticed that some photos lose a lot of intrinsic quality that is not instantly obvious; I noticed this when I took various pictures over the years from outdoors. Still, AVIF beats jpg and png just about on every metric when compression is required. With JPEG XL I guess I have to re-evaluate, but right now I am still sticking to avif. The two factors that will be important for me is compression ratio and quality. I am ok with a bit of loss of quality, if the compression is better, but I am not sure JPEG XL beats AVIF here clearly either, so I am not sure what to do with JPEG XL.
Both JPEG XL and WebP far exceed AVIF when it comes to lossless. For lossy, AVIF used to do better at low quality and JPEG XL at high quality. But apparently AV1 encoders have improved a lot since then, closing the distance. An article comparing the two was posted recently:
https://news.ycombinator.com/item?id=49690554
The author, who has worked on said AV1 encoders, has expressed doubt that JPEG XL encoders could improve much with only reasonable amounts of effort, but that was also only their personal (if educated) guess. With JPEG XL finally seeing adoption on the web, we will hopefully see work on the reference encoder resume in earnest soon.
So for now, I’d say you’re fine with AVIF. Unless you’re doing lossless, because AVIF sucks at lossless. (And JPEG XL has the unique feature of supporting lossless JPEG transcoding, too.)
I thing the endgame is lossless PNG with 16bit color components with basic compression like gzip or at best bzip2. Or a format without the weirdness of PNG 'line based loading' which is obsolete nowdays. The "expensive part", apart from the compression algorithm, being the meta data storage without kludge.
>without the weirdness of PNG 'line based loading' which is obsolete nowdays
How? Line-based loading is a very simple way to exploit 2D spatial coherence. A 1D format like gzip loses this advantage for minimal gain in simplicity.
You can’t just ignore signal compression algorithms unless you are fine allocating 4-5x more bandwidth to images.
I believe 7zip outdoes bzip2 these days along every metric
And lossless jpeg-xl exceeds your idea
7zip meaning what, LZMA (xz)?
and zstandard outdoes 7zip (LZMA)
These days I favour lossless WEBP instead of PNG. I often save around 30%~40% of file size compared to PNG, especially when the PNG is encoded with lots of bits per pixel (i.e 48 bits or 24 bits).
I think that’s why they were advocating for gzip or bzip2 instead of just relying on PNG’s built-in compression.
Fun fact, I needed JPEG XL support for my C++ pipeline and I didn't feel like including any official libraries. Roughly $500 tokens later I had a fully working optimized JPEG XL spec compliant en/de/coder that outperformed the official codepaths (both cpp and rust) by 70% (lower runtime). Took literally 5 hours to build out. Can someone tell me what Google is doing?
So do you think your implementation is better? Or there are finer parts of the spec it’s missing?
Your llm has JPEG xl programs in the training data. You copied from GitHub.
Does it satisfy the rule of two?
> Does it satisfy the rule of two?
One to embody power, the other one to crave it?
I'm confused about the connection.
Yep.
Now I just want Flickr to support uploading JXL since I do JXL export as my primary long-term storage format for final images. Would be great if Canon also added JXL support to their photo printer software.
> built-in HDR support
Oh hell no. HDR is already bad enough in Youtube on iOS where there seems to be no way to turn it off - you tune your brightness to something decent in bed... and then some video by some showoff dingus scrolls across the feed frying your eyeballs.
Fuck HDR or at the very least give people an option to turn it off!
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/P...
this does not help me against malicious or incompetent website authors. Mobile browsers usually do not have support for user stylesheets.
I will say windows implementation of HDR - at least the way Chrome handles it within Windows is somewhat of an abomination - so I'm sure Apple's iOS is just as poor!
but sometimes it's not HDRs fault - it's just the segura effect. People with cameras exceeding their capability levels, not understanding what you need to do after you shoot video in LOG.
I mix multi-monitor some-HDR some-SDR in Windows, it's bad.
Nah iOS really cranks up the screen brightness to display HDR content.
what a terrible name
What's wrong with JPEG 40?
50 times smaller than JPEG 2000.
What would be a better name?
obligatory xkcd https://xkcd.com/927/
It's great that Chrome is shipping JPEGXL.
AVIF is still better at 1 bit per pixel and less. (JPEGXL is more efficient at more than that.) Is it possible for JPEGXL to beat that?
I do not know if JPEG XL is competitive with AVIF for very compressed images, because that is mostly a concern for those who want to host at a minimum cost Web pages with embedded images. I assume that AVIF must be better for that purpose.
On the other hand, AVIF cannot compete with JPEG XL for high-quality photographs, which is something much more important for me, because it is a format suitable for storing my own photographs and it is a format that would make me appreciate positively a Web site that would have beautiful images in this format.
That isn’t my experience. I tried compressing conference proceedings into thumbnails with tiny file size and for this purpose I found that JPEGXL is far better than AVIF
They need to relay on Rust to write safe code…
is that a bad thing?
Everytime someone in the world tells the truth about Rust, a lot of "crustracians" went bad...
Folks, it's just a tool