JPEG XL vs. AVIF for web use-cases

(jakearchibald.com)

293 points | by farlight 22 hours ago

51 comments

  • yhjc2692 21 hours ago
    > libjxl's maximum effort is very slow. It produces files 2–7% smaller than its default for photos, and ~25% smaller for the screenshot and illustration, but takes 9–46 seconds, which is 50–180x as long as its default. jixel gets the same results in a couple of seconds.

    libjxl's slow speed at efforts >7 is primarily due to an iterative evaluation-optimization loop of a perceptual error metric called Butteraugli (by tuning quantization weights). This, as well as some other computations in libjxl encoding, happen to be data-parallel and run faster on GPUs than multicore CPUs.

    In case anyone is interested, I've been working on a GPU-accelerated libjxl port (supporting CUDA and Metal for now) that makes this much faster, closer to libjxl's normal speeds: https://github.com/yunho-c/gjxl - geared for encoding a large batch images into JPEG XL. It's also faster by around 2.9x at normal effort (7).

  • ezst 19 hours ago
    Having lived through the MP3 era and experienced the many years/decades? that it took for experts across fields to come together and figure out LAME and the bag of parameters that ultimately made it better than most audio formats around it, I would lean towards waiting this one out, and not take any announcement of a "winner" as gospel. We've yet to see the codecs mature and refine for some time.

    I also remember the big claims about WebP's superiority, which ended-up in practice, at equivalent file-size, mostly trading away some of the JPEG artifacts that we all know for some unusual new ones.

    I don't think there's a large-enough margin in this space that a new format could chew into to make the general public care: image compression seems like a solved problem overall. The second best thing is to come-up with a format that can make the content producers not have to care either, i.e. be the best in class or close-enough in a variety of use-cases (lossy, lossless, fast, animated, hdr, progressive, …). My naive impression was that jxl is mostly interesting in that regard.

    • abanana 17 hours ago
      Regarding real-world use of WebP - what makes it much worse, in my experience, is that so many web servers are set up to do a lossy conversion to WebP from the original file, most often JPEG (to cut down on bandwidth, or just to satisfy a web speed report originating from Google and therefore pushing Google's technologies). The difference is often very noticeable, e.g. textures smoothed out of existence. Helps to remove WebP from the Accepts header to force servers to serve the original.

      It means the technical differences between format, and the real-world choice of which file you want, don't match.

      • thayne 9 hours ago
        Which is a big advantage jpegxl has over avif. You can convert existing jpegs to smaller jpegxls without losing any data.
      • throwaway2046 12 hours ago
        > Helps to remove WebP from the Accepts header to force servers to serve the original.

        I have tried doing that with curl/wget but have been unsuccessful, websites still serve webp even when the original URL ends with .jpg or .png... Could you explain how you do it?

    • Aachen 18 hours ago
      > I don't think there's a large-enough margin in this space that a new format could chew into to make the general public care

      What improvement do you think is necessary for people to care?

      Genuinely curious. Spoiler link with my answer to avoid any bias: https://lgms.nl/p/cau/?b64&ZVRNb9QwEL0j9T%2BMKqFtpe1Cqcq9qoT...

    • javier2 2 hours ago
      the main thing with jpeg is adding 10bit would be a breaking change anyway, and storage space on phones gets you 30-40% more photos on the same storage if you change formats.
    • tormeh 18 hours ago
      Another interesting niche is in between JPEG and RAW. RAW files are a pain to deal with, but editing JPEGs can be problematic due to bit depth and whatnot. Personally I just want to shoot pictures and not edit/convert/whatever, but sometimes I have a shot that could benefit from a bit of adjustment, and that's where even large JPEGs have an issue. Bit depth and whatever isn't suitable.
      • to11mtm 13 hours ago
        > RAW files are a pain to deal with,

        RAW can be it's own entire nasty^nasty rabbit hole. The sorts of stuff that honestly do make me wonder if certain raw formats have their own unique ways of exposing vulnerabilities in accepted ways of implementing.

        Things that come to mind are;

        - Compressed RAW images. Both the lossless and lossy variants, esp because every manufacturer does their own thing, well except maybe MFT[0], buuuut;

        -For MFT, my understanding is that the RAW doesn't just contain some info for LR/C1/DPL[1] or any other sufficiently implemented processing tool to apply correction data (again, I could be wrong, but I think that is something that the Micro 4/3 format does.)

        [0] - Micro 4/3

        [1] Light room, Capture One, DXO PhotoLab (FKA DXO OpticsPro)

        • mikae1 10 hours ago
          I'd say I'm rather well-versed in this topic but I have a really hard time following what you're saying. Could you attempt rephrasing?

          MFT is a sensor size and lens mount, not a raw file format. Panasonic and Olympus (among others) have made cameras using this standard, but use different raw file formats.

      • pitchlatte 3 hours ago
        some of the pain of RAW is mitigated with good workflow. shoot RAW+JPEG and when culling, delete the RAWs you won’t edit. keep RAWs for any outstanding shots. that clears up a large proportion of the issues.

        JPEG engines are getting better and more configurable (Fuji recipes, LUTs on Panasonic) which makes this workflow more viable.

        what i’d love is a good intermediary archival format that is more space efficient than RAW while keeping more editing latitude than a JPEG. using a dynamic preserving tone curve like Log in 14 bits and compressing it losslessly. although i wonder if that would be much better than compressed DNGs.

  • F3nd0 8 hours ago
    > For screenshots and illustrations, AVIF is much better than JPEG XL.

    Have you tried encoding with JPEG XL’s modular mode? By default, libjxl only uses it for lossless and I haven’t tried with jixel, but in my experience, it often handles clean edges and smooth surfaces (the likes of which you might see in digital art) better.

    > I'm a little nervous about this, because discourse around JPEG XL can get a little… weird.

    As someone who’s been rooting for JPEG XL for years now, I also find the discourse a little upsetting. When first introduced, the format was very competitive with AVIF and steadily improving, until Google decided to single-handedly halt web adoption (de facto, because market share). No careful evaluation presented, no solid argumentation given.

    My understanding is that the future of the format became uncertain at that point, because web adoption is regarded as crucial and no one wants to go all-in on a codec that may not end up filling the universal role it was designed for. Of course, AV1 encoders kept seeing lots of interest and improvement in the meantime, because everyone was already all-in on AV1 for video.

    And now, when JPEG XL has finally painstakingly clawed its way back onto its original trajectory, now there are comparisons popping up showing how AVIF actually compresses better. People end up quoting them around social media, painting the picture that JPEG XL turned out to be the inferior format after all. It hasn’t, it just got a massive handicap.

    Not that it’s a problem with your article. It’s informative, you compare the current state of available encoders for a specific use case, and you mention how they’re still evolving. It just sucks that we can’t really do a fair comparison of the formats at this point, yet that’s exactly what people will end up doing anyway, and it’ll really suck if it ends up hurting JPEG XL even more than Google already has.

    • ksec 33 minutes ago
      >now there are comparisons popping up showing how AVIF actually compresses better.

      You perfectly summarise how I felt as well. The revisionist also tries to paint the story as JPEG XL was first banned due to security issues which is again not true.

      But that is OK. Since JPEG XL has finally and rightfully won its place, mostly thanks for Safari. We can now hopefully wait for better encoder.

  • linolevan 18 hours ago
    I think people are really forgetting that JXL's encoders are bad right now. For instance, in TFA Jake presents

    - The Firefox screenshot w/ lossless JXL at 66.9kB, when with a better encoder you get get it down to like 40.7kB (39% smaller) [1] (or 43kB if you need it to work with jxl-rs [2])

    - The cat illustration w/ lossless JXL at 255.3kB, when with a better encoder you can get it down to 178kB (30% smaller) [3]

    [1] https://www.linolevan.com/05-screenshot.jxl

    [2] https://www.linolevan.com/05-screenshot-web.jxl

    [3] https://www.linolevan.com/06-illustration.jxl

    • Aachen 18 hours ago
      Oh, that explains! I tried AVIF and JXL a few years ago and one of the two took ages to encode (a minute versus <1s for jpeg) to get similar compression ratios, and the other was somewhat reasonable on cpu complexity but significantly worse quality at the same size / much bigger to achieve the same quality as good old jpeg. I ended up concluding that jpeg is still the best for the specific image I was trying to lossily compress, but that was probably just the encoder then
    • jaffathecake 18 hours ago
      Happy to see your version of the cat illustration doesn't come with massive decoder overhead. Are you planning to open source this encoder?
      • linolevan 18 hours ago
        It's just a side project I'm working on with some friends. May release it if it's interesting to folks.
        • 149765 17 hours ago
          I would love to try it out.
          • linolevan 17 hours ago
            I'll post it to bsky/HN at some point in the future!
    • mikae1 10 hours ago
      > with a better encoder you can get it down to 178kB

      What encoder?

      • linolevan 6 hours ago
        Encoder I’m working on as a side project, not publicly released (but feel free to pull the included files to prove it to yourself)
    • yhjc2692 18 hours ago
      Yeah, it's very cool that jixel was able to achieve such large efficiency improvements!
    • ksec 18 hours ago
      Thank You. I was about to post I suspect both of those images would have worked better with JXL lossless.

      Curious what is the better encoder here referring to?

  • Metricon 20 hours ago
    AVIF is fantastic format and I use it in my production applications. Spent quite a bit of time looking to the best settings (at least for up to 2k images) and for anyone interested in converting images to AVIF, here's what I've found to work the best for creating the smallest size (10x+ smaller) while still retaining good quality and even supports PNG transparency:

      ffmpeg -i {input_file} -filter_complex "[0:v]format=pix_fmts=yuva444p,split[color][alpha];[alpha]alphaextract[alpha_chan]" -map "[color]" -map "[alpha_chan]" -c:v libaom-av1 -crf 25 -cpu-used 3 -still-picture 1 -aom-params "sharpness=2:enable-chroma-deltaq=1:arnr-strength=0" -color_range pc -colorspace bt709 -color_primaries bt709 -color_trc bt709 {output_file}
    • jaffathecake 20 hours ago
      Hmm, I haven't tested this, but I'm deeply sceptical. avifenc is now optimised very well for still images, and you're bypassing all of that here.
      • Metricon 20 hours ago
        These settings have worked very well for me so far, but if you are aware of even better settings, I'd certain like to give it a try.
    • LewisOrton 18 hours ago
      in my app i was using jpeg but then switched to webp two years ago, they're for generating/displaying thumbnails for images and videos. and now avif seems like a better fit? anything that you're not happy about? considering avif now, appreciate any ideas
      • Metricon 17 hours ago
        If you're working with images that need to be lossless or are simple in color diversity, WEBP is probably still a better choice (though not by a large margin). The biggest issue you might run into with AVIF is legacy support, particularly amongst Apple devices who were slower to implement support for it.

        Otherwise the massive size reduction for storage and transfer speeds makes it incredibly attractive for modern web applications.

        • LewisOrton 16 hours ago
          it's a desktop app so i dont see any reason not to use avif, thanks!
  • PaulHoule 21 hours ago
    That F1 image is, in my mind, proof of exactly what is wrong with AVIF. If you look closely the beautiful highlights on the car have been erased and replaced with something plausible. Once you see it you can't unsee it and it boggles my mind that people are still using it as an example.

    Granted, AVIF performs impressively for, say, a huge hero image for a blog where you're out to create an overall impression and people aren't going to look at it closely. It does not impress me when I am compressing photos I took with my mirrorless and I expect them to look like photos taken with a mirrorless and not cell phone snaps.

    • boogerlad 21 hours ago
      Would you be able to circle these highlights? I viewed - https://jakearchibald.com/c/original-CXtAofvc.jpg - https://jakearchibald.com/c/avif-q39-e0-d8-yuv444-ssimu70.4-... at 100% magnification at peeped around for a few minutes but didn't notice anything. Maybe my eyes / monitor is bad...
      • debazel 11 hours ago
        Look at the fuel cap, the green part of the front wheel, or the vertical frame split behind the fuel cap. AVIF smooth the details out too much.
      • PaulHoule 21 hours ago
        Oh crap, it's this image

        https://jakearchibald.com/2020/avif-has-landed/demos/compare...

        I was talking about. He linked another one! Guess people finally realized that one sucks and now they have a new one. I screwed up.

        • jaffathecake 21 hours ago
          They didn't even have the halo back then!
    • dfabulich 21 hours ago
      I'm looking as closely as I'm able, and I don't see what you mean. (I'm not a car guy, or a photo guy.) What do you mean by highlights? What am I looking for? Reflections?
      • buzer 21 hours ago
        Look between the Eni and ApeCoin logos. In lossless you can see there are lines from what I assume separate pieces assembled together. Next to ApeCoin there's also a round piece in the lossless version which is missing from the AVIF. JPEG XL loses most of these as well though.

        That's what I noticed anyway, not a car or photo guy either.

        • jaffathecake 20 hours ago
          The original is a single photo.
          • buzer 20 hours ago
            If you are referring to "lines from what I assume separate pieces assembled together." I didn't mean that the photo was assembled from multiple pieces, I meant that part of car was (panels or similar). Those lines between panels were no longer visible.
      • jaffathecake 21 hours ago
        I agree fwiw. The only one that looks bad to me is jixel at lower qualities.
    • jaffathecake 21 hours ago
      OH WAIT. I KNOW WHAT'S HAPPENING HERE.

      You're looking at it in a browser that doesn't support JPEG XL, so it's falling back to a WASM renderer, and I think it handles resizing differently.

      This is totally my bad. I thought I was doing a good thing by adding that fallback renderer, but it isn't identical and it's giving people the wrong impression.

      The lossless version is JPEG XL, hence the difference to AVIF.

      • CodesInChaos 18 hours ago
        In Firefox 157.0.1, the right border of the image moves by a pixel or two when I press "hold for lossless" while viewing the AVIF. I think it's the lossy AVIF that's a bit too small.
        • jaffathecake 17 hours ago
          That's what I'm talking about. JXL support landed in 158.
          • CodesInChaos 17 hours ago
            But why does missing JXL support make the AVIF too small? It ends one pixel before the gray background.
      • eviks 20 hours ago
        by the way, why not convert everything to png for comparisons to avoid browser support issues?
        • jaffathecake 20 hours ago
          All browsers support AVIF and JPEG XL now. I was hoping to keep their download size benefits.
          • D2OQZG8l5BI1S06 19 hours ago
            Firefox added support only 3 days ago! And this doesn't cover the ESR version.
            • jaffathecake 18 hours ago
              Sure but this is a technical post aimed at a technical audience.
              • Telaneo 14 hours ago
                What's the liktlyhood of ~~a technical~~ any audience being 4 days behind on updates? (hint: very high)
                • qingcharles 9 hours ago
                  Not me keeping Chrome open for two months with "New Chrome available" badge in the corner.
              • bigstrat2003 15 hours ago
                None of which means you should expect your audience to have a new version which came out three days ago. Lots of technical people stay behind the bleeding edge for very good reason.
                • jaffathecake 12 hours ago
                  This is why I added the wasm fallback. The question was why I didn't serve PNGs to everyone.
      • mkesper 17 hours ago
        I also feel like sometimes the lossless image 'sticks' even after having released the button. Don't know how to reliably test that, though.
  • Velocifyer 1 hour ago
    I think that near lossless, progressive JPEG XL would work well, once compression algorithms improve. I am _so_ tired of trying to zoom in on a product picture (eg to see what buttons are on a remote or just to read fine print) on E-Stores, only to realize that I need to open in new tab and remove some query paramaters from the URL because they think that people are using 3G but with a computer with a fast CPU (to decode AVIF).
    • jaffathecake 1 hour ago
      I disagree. Making things slower for everyone due to this edge case is a bad tradeoff. Web APIs exist to let you know when zooming in happens. You can swap to a higher resolution, or even tiled image in these cases if you really care about this use-case.
  • theandrewbailey 21 hours ago
    I've been using AVIF on my blog for a few years. My blog's image corpus is almost entirely videogame screenshots, and I keep the original PNGs so I can re-encode if better encoders release. Despite playing around with JPEGXL every year or so, AVIF images usually looked better (if only a little) at the same file size (vs JPEGXL).

    After reading this article, there's something to point to prove I'm not going crazy.

  • fngjdflmdflg 21 hours ago
    >Animated image formats are dumb and animated JPEG XL is no exception. Video formats are better at video. They're built for it. They're optimised for it. Not just in terms of encoding, but also in terms of playback.

    This is something I've felt doesn't get enough attention when comparing JXL and AVIF. AVIF can be the replacement for GIF.

    ><video muted autoplay> is right there.

    >No, I'm not adding a demo. I don't want it on my server. Use video formats for video.

    I'm not sure if "Use video formats for video" is saying to use AVIF over JXL or saying to use AV1 over AVIF. If the latter, GIF-like animations have a different enough user expectation that it makes sense to have it as something different from regular videos. Even <video muted autoplay> doesn't encode the full expected behavior because GIFs are not expected to have controls like pause, play and scrub. And even if you hide the controls users will expect similar behavior when opening it in an image viewer or in a new tab. Images do not have controls so they fit better as an image, although maybe they need their own category.

    Also, I didn't realize how good AVIF was at progressive rendering. I don't think I knew it could do that at all. I think AVIF is the clear winner for the web, although it is still nice to have JXL for lossless. Somehow I feel that AVIF still hasn't gained as much usage as it should, especially now that it is supported almost everywhere. I think I see more webp than AVIF, and JPEG is still everywhere. Maybe now that JXL is out, developers will take another look? AVIF is supported by 96.35%-98.83% of browsers according to caniuse whereas webp is 97.18%-99.68% and JPEG is 97.28%-99.78%.

    I also didn't know there was a Rust JXL encoder named jixel.[0]

    [0] https://github.com/awxkee/jixel

    • Dylan16807 20 hours ago
      I agree that animated images make sense as a category. But I wish I did get controls on them when opened directly. Being unable to pause a gif leads to very annoying workarounds sometimes.
    • eviks 20 hours ago
      nit: another rust ENCoder, not DE

      Though given the lagging speed in decoding, is there a faster tying JXL decoder planned?

      • jaffathecake 20 hours ago
        jxl-rs is rust (used in Firefox and Chrome), and already faster than libjxl (used in Safari).
      • fngjdflmdflg 20 hours ago
        Fixed that, thanks!
  • eviks 20 hours ago
    Unfortunately for the comparison-focused blog post the comparison widgets is pretty bad - you can't quickly compare 2 reference pictures (original vs AVIF or original vs JXL) at different scalings like here https://web.archive.org/web/20200915201019/https://afontenot...

    (also like the BPP size metric that is picture size-independent)

    Wish that widget with improvements (that allows comparison of 3 pics with 3 buttons: original/codec1/codec2) were the widespread standard (also, "hold" is a rather unergonomic action)

    Otherwise, seems like AVIF has had impressive gains in both speed and quality, wonder whether JXL could catch up

    • networked 19 hours ago
      For a moment I was sad the original comparison page was gone. It turns out it is still online under the developer's new GitHub username: https://lmfont.github.io/image-formats-comparison/#abandoned....
      • eviks 19 hours ago
        Thanks! Was also sad, but it's "just" linkrot, will update bookmarks
    • jaffathecake 20 hours ago
      Offering different scalings is pointless because they're designed for a single largest size.
      • eviks 19 hours ago
        But they won't be viewed at different sizes? But even then, the point is in making detection of artifacts easier
        • jaffathecake 17 hours ago
          As someone putting an image on a web page, why would I make detection of artifacts easier?

          The images in the article max out at the maximum size I'd want them displayed.

  • bitpush 21 hours ago
    I'm only casually following JPEG-XL and my impression from previous reading here on HN was that JPEG-XL was the best solution available for a wide variety of usecases, but it looks like numbers dont match that claim?
    • adrian_b 20 hours ago
      JPEG-XL is not the best solution if you want small low-quality images, to reduce your costs for hosting some Web site. AVIF seems appropriate for that goal.

      JPEG-XL seems to be the best solution for storing and distributing high-quality images. For myself, I want high-quality images, so JPEG-XL is what matters, both for new images and for compressing the old archives of JPEG images.

      While I have my own Web server, it is for private use and not for commercial purposes, so I have no interest in using AVIF to achieve the smallest image sizes, but at a lower quality than I want.

      • jaffathecake 20 hours ago
        Please read the article. All of the comparisons default to "high" quality, according to JXL's own metric.
        • adrian_b 20 hours ago
          Most of the comparisons are not about what I would call "high quality" images.

          And the article supports what I have said.

          Quotation from the article:

          > But JPEG XL catches up at very high quality. Around SSIMULACRA2 85, libjxl's default matches AVIF's default, and at maximum efforts, jixel 'extraslow' is ~6% smaller than AVIF s0. jixel 'slow' is 10–13% smaller than AVIF's default from SSIMULACRA2 80 upwards.

          • JyrkiAlakuijala 18 hours ago
            I believe that:

            ssimulacra2 85 is rather close to median quality in the internet

            ssimulacra2 90-95 is rather close to high quality in the internet

            ssimulacra2 98+ is close to camera quality

          • jaffathecake 17 hours ago
            'high quality' and 'very high quality' are different things.
            • Gigachad 12 hours ago
              There’s also data that isn’t needed in the final delivery format but is needed for editing. 8bit vs 16bit color for example. 8 bit is visually all you need for an image, but if you edit it to say being up the shadows, 8 bit will show banding because you’ve stretched it to the point the bands are visible. While 16bit has so much extra data it still looks perfect after being stretched.

              JPEG XL is the ideal high end photography format. AVIF seems better for a space efficient web format.

              • zbobet2012 9 hours ago
                Human eyes can quite reliably see greater than 8 bit color. While the eye is only able to differentiate about 10 million colors at any given brightness, because its sensitive to brightness in a logarithmic fashion the eye needs about 24 bits of per channel depth to see no banding.
                • Gigachad 7 hours ago
                  Presumably this is for HDR. In the SDR space I don’t think you’d see the difference between 8 and 16bit. And the way it’s encoded is logarithmic so you can express the visible range with less bits where your eyes are less sensitive.
              • Evidlo 9 hours ago
                Also the JXL decoder in Firefox and Chrome only returns 8 bits, unfortunately.
    • kps 19 hours ago
      > for a wide variety of usecases

      For a wide variety of usecases, not for every isolated usecase. Today, AVIF is better for showing people ads^W^W^W web content delivery. This article is titled “JPEG XL vs. AVIF for web use-cases”. The other article recently discussed¹ is subtitled “Investigating JPEG XL's place as a Web image codec” and ends:

      > JPEG XL isn't useless; it is genuinely compelling technology for use cases beyond the Web.

      ¹ https://news.ycombinator.com/item?id=49690554

      (Either way, can we agree to take webp out behind the barn?)

    • mdasen 18 hours ago
      I think many people disliked Google's control of Chrome blocking JPEG XL rather than it being able to compete on its merits.

      JPEG XL also has some big benefits for many use cases like lossless re-encoding and supporting higher resolution. AVIF images have a max size of 8192x4352 last I checked. That's not a problem for web images almost all of the time, but there's certainly uses where you might want more. I think AFIV might be limited to 12bit overall while JPEG XL can do 32bit. Again, is that something many will take advantage of on the web? No, but if it's something you care about it might be really meaningful to you.

      Also, if you care about the 90% quality level, JPEG XL often outshines AVIF, but when I'm putting images on the web it's often well below that.

      Some of it was bad information. I saw some people saying JPEG XL being way less computationally intensive (even less than WebP) and offering much better compression. Some of it was selective data - do you only test things at 95% quality level and declare a winner?

      But I think the big thing is that a lot of people wanted the two formats to succeed or fail based on their merits. I think a lot of people don't like AVIF because it isn't well supported outside of browsers - and there can be a hope that the JPEG name would mean JPEG XL would get the kind of adoption JPEG did.

      And it's hard to truly compare formats - or benchmark in general. As the article shows, different JPEG XL encoders offer vastly different performance. And when we're dealing with lossy compression, sometimes it can be a bit of personal preference. At some point, people started enjoying the way that MP3 garbled symbols (the instrument) and that was the sound they expected a symbol to make.

      • jaffathecake 18 hours ago
        > AVIF images have a max size of 8192x4352

        This isn't true btw. The format supports up to 64k x 64k, although browser decoders currently fail beyond 16k x 16k.

        Not sure when you'd serve something like that on a web page though.

        • gary_0 15 hours ago
          > coded image items compliant to the AVIF Baseline profile may not have a number of pixels greater than 8912896, a width greater than 8192 or a height greater than 4352.

          https://aomediacodec.github.io/av1-avif/#profiles

          I'm assuming if both the encoder and decoder support more than the baseline profile, then higher resolutions up to 64k x 64k are possible, although I would worry the file would be incompatible with some software.

        • pixelesque 17 hours ago
          It's been a few years since I last tried, so hopefully no longer an issue, but trying to encode 8192 × 5464 images from a Canon R5 a few years ago with libavif, and avifEncoderAddImage() would return a generic error.

          If I reduced the res a bit, then it worked, so there did seem to be a limit there somewhere. height and width are stored as u32s internally though, so yes, the format itself technically supports it...

          I never looked into it more, so might have been a libavif issue, or maybe the way I was using it (maybe it has defaults or profiles?)

    • throw0101c 21 hours ago
      JPEG-XL can be a quick win since it is possible to do a transcode of all of your existing ('classic') JPEG files with zero (visual) losses in quality.
      • venusenvy47 18 hours ago
        I always think of transcode and lossless as opposites. How is this achieved in this format?
        • ksec 18 hours ago
          It extracts the already quantized DCT coefficients and related data from the JPEG bitstream and re-encodes them with JPEG XL’s more efficient entropy coding and container,

          Think of it as zip compression that is specially designed for JPEG and putting the JPEG data in a different/better container.

      • bitpush 21 hours ago
        If you're transcoding why wont you go to avif or another one? If jpeg -> jpeg-xl uniquely better?
        • pwg 21 hours ago
          JPEG is a lossy format. JPEG -> AVIF adds a second loss operation. JPEG to JPEG-XL is lossless but with a smaller file size. So one does not further degrade the jpegs beyond what they were already degraded in creating them in the first place.
    • jaffathecake 21 hours ago
      Claims around JPEG XL have always been wild. E.g. this from one of the creators https://x.com/jyzg/status/1592811472073416704
      • bitpush 21 hours ago
        That's.. horrific. How can someone be this out of touch?
        • F3nd0 8 hours ago
          … are you all reading that as a serious statement, not a joke (possibly in poor taste, but still)?
    • ksec 18 hours ago
      AVIF ( or even AV1 itself ) has had massive increase in quality improvements over the past 6 years. JPEG XL was close to release in 2020 and finalised in 2021. A lot of the sentiments hold true back then.

      JPEG XL has always been targeting high quality encoding metric first before the lower end low BPP images, which AV1 excels at with or without the last 6 years of improvements.

      The current top comments about MP3 and LAME is again about how encoder extract maximum potential. JPEG XL was may be the best in 2021, but has been fighting for survival since then.

      There a lot of different images that JPEG XL encode better. Screenshots with text is known to be not something they have optimised for or think it could be good at. Lossless mode may be better. Edit: As one of the other comment here proved my point.

      Had all of these, even just a hint of AVIF improvement be told, may be the sentiments would have been a little different. But then again I am not one who would trust the same people who sold me WebP and AOM roadmaps.

      But at least AV2 is coming. And JPEG XL is finally in every browser. Hopefully we can all have something even better in the future.

    • F3nd0 7 hours ago
      Your impression is correct; when JPEG XL was first introduced, it did just as well or better than AVIF in many cases. But in short, work on JPEG XL encoders slowed down, so they fell behind, and JPEG XL now loses to AVIF in some areas.

      As the article points out, this might change yet again in the future, depending on how much AVIF keeps improving and whether JPEG XL development picks up steam again and how far it’ll go.

  • RobotToaster 6 hours ago
    AVIF/AV1 has patent trolls targeting it, an issue JPEGXL doesn't have, yet.
  • adzm 22 hours ago
    JPEG transcoding is one of the neatest features of JXL; there is so much existing jpeg out there. Eventually that may be unnecessary, but it's looking like this could already save a significant amount of space for photo archive backups for example.
    • lern_too_spel 21 hours ago
      That's just by changing the entropy coder and retaining the DCT coefficients. The idea is similar to Dropbox's Lepton. https://dropbox.tech/infrastructure/lepton-image-compression...
      • jeffbee 21 hours ago
        The main difference being that Lepton is worse and 100x slower.
        • CodesInChaos 18 hours ago
          Lepton guarantees that JPEG->Lepton->JPEG produces an identical file, not just identical pixels. Does JPEG XL achieve the same thing?
          • farlight 6 hours ago
            That's actually the default behavior for libjxl cli: encoding and then decoding jpeg via jxl produces a file bit identical to the original jpeg file.

            Try it: run cjxl › djxl and hash the output against the original.

          • usef- 16 hours ago
            Yes
          • Zardoz84 5 hours ago
            yes
        • lern_too_spel 15 hours ago
          The blog post is from 10 years ago. I'm sure it's much faster on modern hardware. I'd say that the main difference is that JPEG XL can be rendered directly in many applications, while Lepton files will have to be processed into JPEG out of your archives.
          • jeffbee 15 hours ago
            If anything the gap is worse on modern hardware because Lepton is hostile to both SIMD and divide-and-conquer thread parallelism.
            • lern_too_spel 12 hours ago
              Microsoft's implementation claims to get a speedup using AVX2.
  • watersb 16 hours ago
    I've found AVIF to be very effective at screenshots with lossy compression.

    Text has lots of edges, hard transitions between bright and dark areas. So text requires lots of high-frequency detail, and JPEG adds a lot ringing as it bounces off all those lines and curves.

    AVIF seems to follow contours, so it does a good job with line art.

    Otherwise, it's hard to beat the Mozilla JPEG encoder.

    JPEG XL can represent lossless images that exceed the limits of human vision. I don't expect it to replace FITS for astronomical images, but the future is weird.

    (Super huge thanks to Jake Archibald for the SVGOMG web app. Which is also fantastic for line art.

    https://jakearchibald.github.io/svgomg/

    Squoosh is a web app front end to various image encoders

    https://squoosh.app

    )

  • torginus 4 hours ago
    I don't get the hype. AVIF is marginally better than WebP which is marginally better than JPG. AVIF is also free, and since it's literally the I-frame of an AV1 stream, it can be decoded directly on the GPU, meaning you don't have to store the decoded picture in memory.

    JPEG XL can't be decoded in such a way, and tons of people still use JPG.

    • 0x_rs 1 hour ago
      Browsers do not use hardware decoding with the exception of Apple for HEIC, and it's implausible any will ever do so for AVIF. Chromium tried to, and never managed for simple lossy WebPs. It'd be limited to a subset of images with a matching profile, have significant overhead for most of those "web-friendly" potato images people make pointless comparisons for, and any implementation would not come without downsides. Nobody is willingly shouldering the cost of dealing with all the broken hardware implementations out there. So it's difficult to see it as a possible advantage.
  • throwaway2046 11 hours ago
    Every single webpage I've seen with webp / avif images also had autoplaying videos, intrusive ads, and megabytes of JS. I don't think jxl will change that... What's the point of introducing new image formats that are poorly supported and take longer to encode/decode if you're going to cancel out the space savings anyway?
    • xigoi 5 hours ago
      I use JXL/AVIF/WEBP images on my website and don’t have videos, ads or unnecessary JavaScript.
  • Klaus23 21 hours ago
    The question now is how much of AVIF's advantage comes from the encoder compared to the image format itself. If it is the encoder, does JPEG XL even stand a chance of catching up? AVIF will certainly receive further improvements, albeit at a diminishing rate.
    • jaffathecake 21 hours ago
      https://giannirosato.com/blog/post/case-against-jxl/ suggests JXL is fundamentally limited. We'll see. There's a race on and it's great!
      • F3nd0 8 hours ago
        Note: Author has worked on the most popular AV1 encoder, seems to be working on his own commercial AV1 encoder, and bases his suggestions on an educated guess. Presumably the authors of JPEG XL had reasons to believe otherwise when introducing JPEG XL.

        Not to call into question the article’s author’s expertise, just to point out that they are a single individual and not an authoritative source (which you haven’t implied, but some people might read that way).

    • pushtocar 12 minutes ago
      [flagged]
  • CodesInChaos 17 hours ago
    https://jakearchibald.com/2026/jpeg-xl-vs-avif/#lossy---scre...

    In full screen mode, the "hold for lossless" version "Firefox help"/"Submit feedback" are not underlined. In inline mode they are. Both modes seem to render a scaled down version of the image, which seems to cause these problems.

  • quentindanjou 22 hours ago
    Great article!

    Overall I am getting that AVIF is better on the web...unless Lossless is needed, in that case better take JPEGXL.

  • objectcode 16 hours ago
    4:2:0 chroma subsampling might be useful for compatibility. So, sticking with 4:4:4 might or might not be ideal. There are codecs such as H.264, where using 4:4:4 substantially reduces compatibility. Though, there are others like JPEG where it seems fine. Perhaps there are AV1 hardware decoders that only support the AV1 main profile? For the web, there is the HTML picture element where an avif image can be automatically selected by supported browsers and images of other codecs can be used as fallbacks, but maybe it would display wrong and not fall back if avif is supported but 4:4:4 isn't?
    • jaffathecake 12 hours ago
      I'm not aware of any browser that cannot render AVIF 4:4:4. Given that avifenc outputs 4:4:4 by default, I don't expect that to change.
  • andrewaylett 16 hours ago
    I'm glad Jake's run the numbers — but do make sure you validate your own use-case rather than just following them. My personal experience has been somewhat different, but also my use-case appears to be pretty different so that's OK.

    That said, I last benchmarked over a year ago, maybe I should re-evaluate. My experience was that AVIF was too slow for on-the-fly encoding, while JXL was absolutely fine and JPEGLI was also pretty useful.

  • throw0101c 21 hours ago
    • braiamp 21 hours ago
      Note about caniuse: browsers dragged their feet with jpegxl while avif had the backing of the biggest browser in existence: internet explorer
      • jaffathecake 21 hours ago
        Apologies if your comment was meant to be a parody as there's a bit of Poe's law around this stuff…

        IE never supported AVIF. Edge even shipped AVIF later than Chrome. One of the leaders of JPEG XL worked at Google until relatively recently. A massive amount of JPEG XL development has been done by a team at Google.

        • F3nd0 8 hours ago
          I think they were calling Chrome the Internet Explorer of our age. Having a majority market share and getting to decide on de-facto standards and indeed practically halting JPEG XL’s adoption at one point, pretty much on a whim. All that stuff. :-)
  • aorth 8 hours ago
    Impressive. How can we use AVIF from Java? I have a Java application that relies on ImageMagick, which seems to use libheif for AVIF rather than libavif (avifenc).
    • Zardoz84 5 hours ago
      There is a partial read-only implementation in native Java. I'm particularly interested in doing an ImageIO plugin using libxl or the rust version. In my field, we work with terabytes of JPEG images for archival/preservation of books and archives. Transcoding it to JXL and reading/writing JXL from our software would be a nice improvement.
  • adzm 22 hours ago
    > AVIF is basically the keyframe format of AV1 video, with a bunch of still-image-specific optimisations thrown in. Animated AVIF however, is pretty much just a repackaging of AV1 video. You can convert an AV1 MP4 to AVIF and back losslessly - it's just a container change. That's why it performs so much better, because it's built for motion.

    So, is animated AVIF only keyframes / p-frames, where each frame is independent from the other? I was under that impression, uncertain if there are any other capabilities it might have (like only updating part of the canvas when only parts change, like GIF supports)

    • jaffathecake 21 hours ago
      No. I used to think this too, but it isn't limited to keyframes.You can convert an AV1 MP4 to AVIF and back losslessly - even if it has non-keyframes. It's just a different container. It has the full AV1 capability. Plus transparency.
  • RRRA 4 hours ago
    Are inline AV1 as well supported by browsers as animated AVIF?
  • est 12 hours ago
    > The interesting detail of animated AVIF is that it supports transparency, whereas AV1 video doesn't

    Amazing.

  • Dylan16807 20 hours ago
    > AVIF is basically the keyframe format of AV1 video, with a bunch of still-image-specific optimisations thrown in. Animated AVIF however, is pretty much just a repackaging of AV1 video.

    What optimizations are being added? I thought it was basically the exact same codec, but different packaging and usually some adjustment to how the encoder is tuned.

  • moecables 20 hours ago
    I don't have any real use cases for jxl or avif or any other modern format b/c I rarely host images but all these articles are always so interesting to me. And at the end of it, I'm left wondering, is there ever going to be a single winner here?
  • aadharshpan 20 hours ago
    A little while ago, I chucked together a comparison game on image file formats (incl a stab at av2 images), encoders, parameters to back out preferences relative to ssimulacra2 and butteraugli: https://aadhar.sh/pixel-peeper

    It does seem like AVIFs win on small images, and JXL gives you progressive rendering, easy upgradability on JPEGs, and better lossless and high bitrate images.

    • usef- 15 hours ago
      Note that progressive rendering is now supported by avif, and the comparison in the OPs post makes is appear quite a lot better.

      It does sound like the remaining areas jpegxl is better at are almost all non-web use cases.

  • Theodores 21 hours ago
    Jake's interest in F1 hasn't waned, which is good to see. I am presuming that picture of an Alpine/Renault at Goodwood is his 18Mb photo, but I could be wrong. Neither has his interest im image compression waned, which is also good to see. But why the move from Google to Firefox?

    I am still on webp, thinking that I am on the bleeding edge in a world where artworkers are obsessed with pixels with JPG/PNG as the only formats they know, which is an advance on GIF.

    Every browser advertises what formats it will accept and if it is in 'data-saving, low bandwidth mode', so I just configure the CDN to keep the names the same '.jpg' but to send the bestest format for the situation/browser, whether that be webp or AVIF, fetching super-high resolution files from the origin server, outputting them in 'retina' resolution with none of those 'picture' elements referencing half a dozen 'responsive' sizes.

    In this way nobody has to care what image format is being served, and if it is deemed that everything is way too compressed, the CDN can be flushed of the cached images, quality increased, and cache rebuilt.

    It looks like I will need to update my server configuration to use JPEG XL in the usual five years' time, given the lack of any revolutionary benefit.

    • jaffathecake 21 hours ago
      Yep, Alpine, and yep, Goodwood! Nicely done!

      I was at Google for 10 years, then went to Shopify for 2 years, but I missed the web. For most of the time I was at Google, it mostly did what was good for the web, rather than pushing Google's interests, but that started to change, which is one of things that led to me leaving. E.g. see what happened with the Prompt API.

      • Theodores 2 hours ago
        Team and driver for in 2026?

        I am always on Team Hamilton even though I appreciate that he is a little long in the tooth and doing the classic retirement act in a 'stupid red car'.

        I am obsessed with SVG and image compression/delivery, and I would like it if you could introduce the concept of an 'SVG sampler' to the world. This is very much inspired by embroidery samplers from the times when women needed to sew.

        The point of the sampler is to impress, so as to get the work in, however, it is also a reference, with stitches to copy for lettering, numbers, religious iconography, sock-darning, button-holes and whatever else needs to be repeated.

        With an SVG sampler the idea is to use the whole SVG toolkit, filters, masks, clip paths, symbols, views, SMIL, CSS and everything else.

        Sure this can be done in Inkscape, however, the goal of the SVG sampler is to make it human drawable. For example, the search icon is a circle and a line, which can be done in a 45Kb export from Illustrator, with the circle defined as a thousand points, specified to NASA numbers.

        Or it can be done in ten lines or so of SVG primitives, with the circle and the line using simple two-digit integers. The former is not something that a mere mortal could draw, whereas the latter could be.

        Clearly some paths do need to be complex and imported from elsewhere.

        SVGOMG will be able to mash the 45Kb Illustrator export into a tenth the size, however, it will not be as concise or as human readable as the 'haiku of the SVG sampler symbol'.

        The SVG sampler does not have to be web-optimised, it can max out the CPU for the PC to go full China Syndrome and melt its way through your desk. However, it could be forked, culled of CPU-eater show-stoppers, to just have the icons needed for the next project.

        Another way of seeing the SVG sampler idea is 'SVG golf', where you want to strive for maximal 'use' clones, maximal human readability, yet also an insistence on detail such as light/dark mode currentColor things, animating pretty much everything and using the primitives rather than paths, even if the code is longererer according to SVGOMG.

        I think that SVG falls within an awkward gap where artworkers don't care for the code with programmers also not caring for the code, because SVG is artworker stuff, not for programmers, right?

        In a typical team workflow there is no scope for this to change, the frontend developer is obligated to use the 'assets' churned out by the art worker and the backend developer certainly doesn't care.

        Hence, an SVG 'sampler' competition of sorts, with some acknowledgement, could help Firefox win over some developer mindset to FF. Already MDN has the de-facto best documentation for SVG, I probably have a dozen MDN tabs open right now, maybe with all of them on some type of FEconvolve type of feature.

        For the sampler, the IDE rather than the graphics program is how it works. Anything with 'sodipodi' type of extra markup can be considered not worthy of being an SVG sampler. Really it has to be a mostly text-only thing, under version control, and not needing CodePen or other. To go with the SVG there needs to be a 'sampler.html' file to show the sampler symbols in 'inline mode' as well as CSS, the favicon and as shown as an 'image' element. Scripting is allowed, but really the goal is to keep everything in the SVG file, to not need huge amounts of extra files.

        Ideally comments outside of 'title' and 'description' should not be needed, the author should be able to explain their own code, hence an emphasis on 'defs', sensible id names and descriptive ids.

        Since F1 is your thing, you are welcome to give the SVG sampler idea a F1 inspired ethos to it. If you think of the FW14C with the active suspension and whatnot, or the F-duct, DAS and other wonders, then applied that design rigour to SVG, think how good it could be. Added marks for everything good looking, however, there needs to be this solid human-readable underpinnings.

        Please do something for SVG at Firefox, to inspire people to get into it rather than assume it is someone else's job. Maybe just have a competition, no prizes needed, with folks able to vote on awesomeness, sophistication, haiku-esque simplicity and how educational a given sampler is.

        I see no reason why you can't call yourself 'uncle Bernie', to cosplay as the benevolent dictator that gives out a star prize for an SVG sampler (every time there is an F1 race, rather than monthly, as that would be tedious).

        As for AI, Google suggest does offer up SVG code that never works, it gets a duff namespace declaration on line one, dooming any of its concoctions to never open. But where we are going with 'SVG samplers', we don't need no AI robots.

  • javier2 21 hours ago
    1. How long does size, encode time and resize take compared to good old jpeg?

    2. Is it possible to encode AVIF with hardware acceleration?

    • jaffathecake 21 hours ago
      JPEG is fast as fuck, due to it being designed for decades old hardware.

      When it comes to hardware encoders, the nicest thing you can say about them is they're fast. Software tends to do way better at quality. Hardware AV1 encoders will be tuned for video rather than stills.

  • IshKebab 20 hours ago
    To be honest it's starting to sound like Google were right and adding JPEG XL support was a mistake.
    • F3nd0 7 hours ago
      This is exactly the kind of misunderstanding I worried about in another reply. [1]

      AVIF uses the AV1 codec. For the past several years, AV1 has been enjoying a wide interest and a continuous stream of improvements as the best, open, royalty-free video codec around that pretty much everyone had agreed to support from the get go.

      JPEG XL started out with a smaller group behind it and took a massive hit when Google decided not to support it in Chrome (and by extension, the entire web, because market share). That made JPEG XL’s future as the universal format very uncertain for a few years. Excitement waned, development slowed down and was further divided to develop a new encoder which Mozilla later said they wanted.

      So for a good while, AVIF was steadily improving and approaching its full potential, while JPEG XL was not. The article compares the current state of the current encoders; in no way does it indicate how good the formats themselves are. The article makes note of this. [2] It’s been known for years that JPEG XL compression can still be improved by quite a bit, so I imagine the current encoders are still far from reaching the format’s full potential. (Heck, they don’t even make use of all its features from what I know!) Back when it was first proposed, JPEG XL was very competitive. With interest in the format hopefully renewed, we might see it catch back up with AVIF and overtake it again. Or we might not. We have no way of knowing for sure right now.

        [1]: https://news.ycombinator.com/item?id=50128587
        [2]: https://jakearchibald.com/2026/jpeg-xl-vs-avif/#:~:text=Both%20AVIF,in%20future
    • usef- 15 hours ago
      It seems pdf chose jpegxl, so they would have shipped with a decoder regardless. But, yeah.
    • est 12 hours ago
      WHy? Browsers should have supported plethora of formats!
      • jaffathecake 8 hours ago
        Plethora means an excessive amount, so I disagree.

        Adding formats to the browser gives us more code to maintain, increases the binary size, and increases the attack surface area. That's why, at Firefox, we insisted on a Rust decoder.

        • est 7 hours ago
          > gives us more code to maintain, increases the binary size

          In that case, don't nanny everything as a monolith. Let formats/codecs can be installed as extension/plugin.

          For example I really want to webrtc to f' off, I can't. I can't even disable it for a particular site like microphone permissions. It sucks!

          And to my knowledge, webrtc stack is so much more complicated than an image format, so many sites trying to grab my private IP using webrtc. yet every browser vendor are happy to support it!

          • jaffathecake 6 hours ago
            Browser vendors want their browser to be safe to use. If we encourage users to essentially bake their own browser from a hodge podge of unverified third party code running at high privilege, we don't meet that goal.
            • est 5 hours ago
              An image codec can be run in a sandboxed way, with a preset cpu/ram boundary, the output is rastered pixels, how could this not be "safe"?

              There are dozens of .wasm based image encoder/decoders outthere, no?

              It's not like it could access network or IO, unlike extensions do, which could steal your data after authors sell their popular extension and buys profits from stealing data from installed users.

  • dc3k 22 hours ago
    I really hope that some day Firefox supports HDR AVIF images
    • jaffathecake 21 hours ago
      It's not AVIF that's the issue, the blocker is supporting HDR in general.
      • dc3k 21 hours ago
        Fair point. HDR images in Firefox just do not work at all, regardless of the format.
  • phoronixrly 22 hours ago
    Ah, Chrome ships JXL when we already have a better codec for the web!
    • F3nd0 7 hours ago
      AV1 is not necessarily a better codec for the web. It’s just that its encoders have been continuously improving while those of JPEG XL weren’t seeing much attention, so they fell behind. The format might be better overall, but we won’t know for sure until the encoders catch up.
    • lern_too_spel 22 hours ago
      PDF standardized on JPEG XL, and Chrome ships with a PDF renderer.
  • yhjc2692 21 hours ago
    It'd be interesting to scale this up to a lot of images - and have users blind A/B test, like the LLM Arena on Huggingface which helped filter out "benchmaxxing" vs actual intelligence & utility. Because 1) images can be so diverse* and 2) an intrinsic tradeoff might exist between general efficiency and out-of-distribution robustness.

    It's hard to rigorously judge a codec from a handful images, especially given the large impact they would have (with a widely adopted codec encoding bazillions of images in the coming years).

    * There are many intricate details that go into codecs and visual perception. For instance, our sensitivity to visual errors are dependent on colors (all of hue, saturation, and brightness), spatial frequency of artifacts, local contrast and texture presence, et cetera.

    And like OP mentioned, perceptual error metrics (including SSIMULACRA2) aren't perfectly representative of human-evaluated visual quality. For instance, libjxl deliberately makes choices that hurt SSIMU2 scores, but improve human-rated quality.

    • janwas 20 hours ago
      There was a large scale study a while back: https://cloudinary.com/blog/contemplating-codec-comparisons
      • ksec 18 hours ago
        That was done before AVIF had any improvements. Arguably one could even say JPEG XL competition brought the best of AVIF out.
        • F3nd0 7 hours ago
          And ironically, the lack of JPEG XL adoption (and careful consideration, really) probably held the best of JPEG XL back at the same time.
    • jaffathecake 21 hours ago
      There was a study done while I was at Google, and I fought for it to be done on high density screens, because that's what most users have. The response was "but people won't be able to see the artifacts" and my head nearly rotated 180 degrees.

      But yes, you can see this with jixel, which I'm really impressed by, but it's so tuned to SSIMU2 that it looks really bad to human eyes in some cases compared to libjxl.

      • eviks 20 hours ago
        > but people won't be able to see the artifacts

        But that is correct and why any proper study should first train the participants on the type of artifacts and trade-offs. Like the reference to JXL choices: think its creator mentioned that AVIF might look nicer for faces because it was "smoothing" them but it was a worse representation of the original. So the study participants would need to be conscious of that trade off and be clear in terms of what they're asked to evaluate - whether the result looks nicer or whether it represents the original better.

        • yhjc2692 20 hours ago
          This is a good food for thought. Semi-related: It reminds me of the fact that smartphone cameras nowadays use ML based filters to make faces prettier before saving in the first place.

          Perhaps we can use clever experiment design to address it, like doing a "full-reference" evaluation (e.g., pick most similar two images, out of encoder A, encoder B, and original) rather than strictly A/B.

        • jaffathecake 20 hours ago
          Its creator (me) mentioned the smoothing as a negative.
      • yhjc2692 21 hours ago
        I feel that!

        Maybe the first step to designing better encoders is to build an extremely accurate visuoperceptual error metric. Seems like ML's rapid progress haven't caught onto it just yet.

        • janwas 20 hours ago
          This was indeed what the JPEG XL effort started with :) The Butteraugli metric.
          • yhjc2692 18 hours ago
            Haha, that's a great point! On that note - do you have any good pointers on understanding more about how Butteraugli works? I wholeheartedly agree it is a great metric (which aligns well with my subjective assessment much better than MSE or MS-SSIM), but the Guetzli paper (or the Butteraugli GitHub repo) does not explain the theory behind it in detail.

            Seems like others were curious too, given the Wikipedia page on Guetzli mentions:

            > Butteraugli. ... How the hundreds of parameters that model the properties of the human visual system were derived remains unexplained.

            My rough understanding is its multi-scale convolution architecture was inspired by biological visual perception (perhaps how the layers of visual cortex gradually represent higher level features, ish), and involved some sort of empirical parameter tuning based on human evaluations. It'd also be a very nice resource for beginners wanting to learn more about image/video codecs (like me :)

  • shevy-java 18 hours ago
    Some days ago we had a similar discussion here.

    For me personally, AVIF is still better, for various reasons (not solely file size compression ratio as such, though this is my number one go-to objective; browser support is also useful but to me is not so important as it is).

    I am keeping a close eye on JPEG-XL, but right now I am quite settled on .avif. All my local collection is in .avif, when before it was a mixture of .jpg, .png and a few animated .gifs. From my findings a few years ago, avif is superior to jpg, png and gifs on pretty much everything it matters. On very high compression, though, I also noticed artefacts, but we had that even more so with jpg, and for 1:1 comparable file size, avif beats jpg with both eyes closed.

    By the way, great article. I hope he can do another review, based on that blog entry, in, say 3 years. Would be interesting to see how avif and jpeg-xl have improved. In all likelihood I will still keep on using avif, but if jpeg-xl is a real winner in some areas, I may use it. (Lossless is one area where jpeg-xl excels, but I don't need to store satellite data; I want to store old family pictures in an efficient manner, and here it seems avif is better.)

  • superkuh 20 hours ago
    What good is a really small file size if small but significant fraction of the people who view the page see nothing at all? I loaded this page and I can read the text and see the plots but none of the example images display.
    • usef- 15 hours ago
      What are you viewing with?
  • 0xy 22 hours ago
    AVIF is a lifesaver for animation with separate transparency layers so the transparency can change position frame by frame. The only other alternative is WebM which has Safari limitations.
    • jaffathecake 21 hours ago
      But the performance is so bad it isn't worth using. You're better off encoding a double height AV1 and mashing it together with WebGL https://jakearchibald.com/2024/video-with-transparency/. That's how bad the situation is.
    • adzm 22 hours ago
      Is there an advantage to this as a separate layer compared to just having an alpha channel baked into the image data itself? If not premultiplied then it would not affect the other channels either.
  • sylware 3 hours ago
    What? Stick to simple PNG. It is simple, runtime and SDK, beyond good enough and has 16bits per color component support (which webp does not have).
  • lofaszvanitt 21 hours ago
    Most of these images are not at 100%. Use large images and show 100% crops everywhere.
  • shmerl 22 hours ago
    I think one overlooked aspect is that AVIF is container based. Meaning that once sites support, when AV2, AV3 etc. will come out, there won't be a need to go through another very difficult phase of sites adoption - it will still be AVIF just with newer codec inside, and it will be just up to browsers to catch up on newer versions and newer codecs will address technical needs as times goes.

    JPEG XL doesn't have that benefit, while sites adoption is arguably a worse issue than browser adoption.

    To demonstrate the point even for AVIF itself - it has been in the browsers for a while. Can you use it on common sites? Good luck if you can, even major sites like GitHub and GitLab have issues with it due to some site code depending on hardcoded list of known formats or other similar problems.

    • pornel 22 hours ago
      The container is useless. Files based on a newer codec won't display anyway.

      ISO-BMFF container is bloated and needlessly complicated. AVIF decoders didn't even want to reuse existing MP4 libraries for it due to all the baggage it brings, and implemented their own minimal parsers.

      AVIF would have been better off with a simple wrapper similar to RIFF/PNG or extending AV1's own OBU header (which for inexplicable reason gets its data duplicated inside the HEIF container and then implementations are required to verify that both copies agree!)

      I hope AVIF will skip AV2. We don't need yet another almost-identical format to migrate to.

    • theandrewbailey 21 hours ago
      > I think one overlooked aspect is that AVIF is container based.

      Many other image formats are. AVIF uses HEIC, the same container that HEIF does.

      > when AV2, AV3 etc. will come out, there won't be a need to go through another very difficult phase of sites adoption - it will still be AVIF just with newer codec inside, and it will be just up to browsers to catch up on newer versions and newer codecs will address technical needs as times goes.

      Fingers crossed, but AV2-based AVIF specs haven't even been finalized, so who knows.

      https://github.com/AOMediaCodec/av2-isobmff

    • jaffathecake 21 hours ago
      This doesn't make sense to me. There's enough content negotiation out there that AV2 will need a new content-type parameter. Feature detection is important to browsers.
      • shmerl 21 hours ago
        I don't think so. WebM doesn't need new content type and it can ship AV1 and VP9 all the same.
        • jaffathecake 21 hours ago
          What are you talking about? Video formats have a whole mad type parameter for this stuff https://jakearchibald.com/2022/html-codecs-parameter-for-av1...
          • shmerl 18 hours ago
            It's not mandatory, and it would work without using it. The whole point is for forward compatibility support effect for sites which are very slow introducing these kind of changes.
            • jaffathecake 17 hours ago
              It's not mandatory. But if you don't use it, the browser may select a source it cannot play.
              • shmerl 17 hours ago
                Possibly, but as above, a much slower problem to solve is not in the browser support, but in sites support. Browsers in practice move way faster.
    • arendtio 22 hours ago
      Can someone please explain the downvotes?
      • pwg 21 hours ago
        My guess: because the OP forgot that to decode AV2/AV3 it matters not that it is in an AVIF container, it matters that the display system (browser, etc.) actually have the codec available to it that can decode the new format (AV2/AV3/etc.).

        With no codec for a new compression algorithm, it does not matter if the browser can read the container, you still see the "broken image" icon on your display.

        • shmerl 21 hours ago
          You didn't get the point of the post. I explained why and how container matters here. Not a specific container, but just the idea of container itself. Hint, it's not the browser.
          • ksec 18 hours ago
            I don't get it. And to me it wasn't clear in the post. As others have explained the container and codec are two separate issues.
            • shmerl 17 hours ago
              Concrete example. Let's say GitHub will add AVIF support at some point (it's not yet handled well by the site as you can notice[1].

              You as user can then upload AVIF images to wherever images on the site are processed. And after that, let's say when newer codec inside AVIF will get a good browser coverage, you'll be able to start using it without waiting another decade for GitHub to pipe it through their site code.

              For formats without a container, it's always a two step process. Browser coverage first, then another huge period of sites support catching up.

              [1]: https://github.com/orgs/community/discussions/138164

  • veloqaglobal 7 hours ago
    [dead]
  • drexor 8 hours ago
    [dead]
  • 5324_1 20 hours ago
    [flagged]
  • whodeven 21 hours ago
    [flagged]
  • pydevgo 11 hours ago
    [flagged]
  • pdfutils 17 hours ago
    [flagged]
  • Androcles 21 hours ago
    [flagged]
  • JyrkiAlakuijala 18 hours ago
    [flagged]