from Hacker News

It's the future – you can stop using JPEGs

by FraaJad on 12/8/23, 1:46 AM with 59 comments

  • by politelemon on 12/8/23, 10:23 AM

    From what I can tell, the author is focusing a bit too much on numbers, but is unsure why these alternatives haven't gained widespread adoption.

    The comparison photo isn't great. Even my pedestrian eyes are able to tell that the Webp and Avi conversions result in poorer photos (most glaring example is the tree in the background), so immediately I'd not want my photos created, converted, or displayed in that format.

    But numbers aside, the main reason is because JPG is 'good enough'. It's the same reason that old protocols like FTP and SMTP still hang around, why customers still want CSVs/Excels over Parquets. If a thing is good enough, it will hang around for a very long time because there's no compelling reason to move away from it. Considering the bloat that websites already present to the user, and the general lack of attention to bandwidth savings in the development stage, AND the existence of 'workarounds' like CDNs, even the development teams have little incentive to look for savings here (for now).

    There will be hundreds of workflows built around JPG's capabilities as well, right from how cameras take the photos, embed metadata into it, how tools read that metadata. Think of embedded devices and webcams that produce images, which will be running 'in the field' for decades.

    Additionally it's not just about browser support, which is a very limited way of considering it. For people working with those image types, they will want to know if it's compatible on all desktop OSes, and through tooling like GIMP, Photoshop, Affinity, exiftool, ffmpeg, imagemagick, etc.

    It'll probably be a good number of years before there is widespread adoption that enable those workflows, at which point we (hopefully) no longer have to care whether it's a .webp or .jpg.

  • by t-writescode on 12/8/23, 9:20 AM

    I encourage everyone to click the images and zoom in on them. The test itself is pretty flawed since the images probably all came from the jpeg in the first place (and if they didn't, then that's pretty damning to the non-jpeg options, in my opinion).

    The place I found the most interesting is the dark, top of the screen. Zoomed to 240% and looking at the top area, especially where the power lines are going across, there's a very, very clear difference in quality between even the 95% jpeg and webp, and in my opinion, the jpeg wins for being more honest. That difference is more stark at the 65% compression option.

    Is that difference worth the larger size? That's up for each of us to decide as we choose our technology; but, those images are very different from my perception.

    Caveat: I've used Firefox to render them, which may have different results than Chrome, perhaps.

  • by ksec on 12/8/23, 8:00 AM

    An image codec comparison that doesn't include JPEG XL.
  • by j16sdiz on 12/8/23, 9:59 AM

    The non-browser support of WebP is just bad. I hate website using WebP, because, when I save them, I have a hard time editing them.
  • by vsnf on 12/8/23, 10:18 AM

    Just for fun, I downloaded the wbep in the article to my desktop to check non-web comparability and found something strange. For usability reasons, I still use Windows Photo View from the XP days on my modern Windows 11 computer. After loading it up there, I noticed that the webp image is viewable but decodes very differently than other applications. For comparison, I included the image as Firefox sees it, as the native Windows 11 Photos app sees it, and as the XP-era Photo Viewer sees it. Notice that Photo Viewer is darker and with what looks like messed up HSL saturation values. Why would it do this, instead of just not displaying the file at all?

    https://imgur.com/a/inom1D0

  • by mihaic on 12/8/23, 10:53 AM

    I give some leeway before passing judgement, but this article is not very good. It uses one single photo, a bad one at that, picks some arbitrary percentages that don't mean the same thing for all formats and in the end the only message is that "progress is happening".

    There are many better comparisons on the internet, with much better examples and metrics.

  • by richeyryan on 12/8/23, 9:41 AM

    It would be nice if the author would add mozjpeg[1] to the comparison. At certain image resolutions, it can produce smaller file sizes than WebP, and because it is still a jpeg, it has a much better compatibility story, which the author alluded to.

    [1]https://github.com/mozilla/mozjpeg

  • by habitue on 12/8/23, 7:17 AM

    Great advice but... really should have picked another picture. A night shot on a phone camera is going to be heavily postprocessed, it's grainy... just not the best demonstration of the tech
  • by rollcat on 12/8/23, 10:47 AM

    WebP produces visible artifacts at compression levels comparable to JPEG:

    https://eng.aurelienpierre.com/2021/10/webp-is-so-great-exce...

    As Aurélien points out, if you fixate on a bunch of metrics without actually caring about the professional applications, the outcome will look... amateurish.

  • by The_Colonel on 12/8/23, 8:24 AM

    I think the article assumes that JPG 65, WebP 65 and AVIF 65 all produce same quality which is not necessarily true.
  • by JyrkiAlakuijala on 12/14/23, 5:20 PM

    Jpegli will lift traditional JPEG compression density by 25–30% and support 10+ bit HDR within the backward compatible 8 bit formalism. Jpegli is based on porting jpeg xl encoding strategies back to old jpeg. It is a whole new reimplementation, instead of tweaking old libs such as libjpeg, libjpeg-turbo or mozjpeg. Jpegli is API and ABI compatible with its usual alternatives like three mentioned before.
  • by HackerThemAll on 12/8/23, 10:41 AM

    1MB club, yeah, that triggered me.

    Try to open Google Maps, or any Google product webpage for that matter. In Maps, just get to a chosen place and repeatedly zoom in to the maximum and then zoom out to see a few countries (or US states). The best is to click on + and - buttons so that you're sure the area and zoom ratio is the same. Observe network requests. Many requests are in range 1-20 bytes, but they send 800 bytes in request headers and cookies. Cookies? Really? For a static image (map tile) or a supporting JSON? Do they have to be that long? Are those requests really necessary?

    Also look at the length of URL. Is it really required to send that much crap? And there are thousands of those requests, only some of them get cached. And there's a grid that blinks now and then, especially when those buttons "restaurants", "hotels" etc.

    Compare that to OpenStreetMap which is way leaner and smoother (and now, after changing maps color scheme by Google, much nicer and more professionally looking), and works flawlessly with Firefox, too.

    Google could substantially reduce the maps servers' load, and the network load, but their "top talent" programmers just made it heavyweight and ugly by design. They're against all web best practices they require others to follow. Is all that crap required to spy users, or is it because of their programmers are way overrated?

    Look at the enormous amount of requests to www.google.com/log204 and /gen_204. There can be several of them for one display of map in a specific place at a specific zoom rate. Each of them is about 680 bytes, of which 500 is the GET request, rest is headers (+ cookie, of course!)

    And I need to mention that my mobile data transfer plan gets depleted much faster than it could have if this product was properly developed (yeah I often use maps on my laptop with mobile internet plans). Not everybody sits in a colorful office having 1- or 10Gbps fiber internet connection and nicely stuffed microkitchen.

  • by janfoeh on 12/8/23, 11:13 AM

    > In fairness, it wasn’t practical to use even with a fallback until around 2015 and only became usable without a fallback in the last 2-3 (ish?) years.

    And because of that school of thought, about 20% of all sites I visit are currently broken for me. I'm still on macOS Catalina, which is the last somewhat bearable version of macOS, but which has no webp support in Safari.

    Even pages which pretend to specify JPG fallbacks via srcset and the like do not, because the JPG endpoints return webp anyway.

  • by GoblinSlayer on 12/8/23, 8:21 AM

    That dark blurry photo can be compressed at 10% without any meaningful loss of quality.
  • by mihaaly on 12/8/23, 10:51 AM

    I never see the point of giving an argument for replacement, even just as a title, on the basis of being old. It is good that inside there are functional arguments but the title should reflect that too.

    The age is never the prime characteristic of a technology, only collateral in many of the circumstances, but far from for all. Emphasizing modernness or freshness is a bit superficial and childish.

  • by jrmg on 12/8/23, 10:01 AM

    Would be interesting to see how all those jpegs fared if run though ECT (https://github.com/fhanau/Efficient-Compression-Tool). I’ve found it can save a surprising amount of space sometimes.
  • by swiftcoder on 12/8/23, 10:57 AM

    Worth mentioning that it's only been "the future" for a little less than 3 years.

    Safari on iOS added support for webp in iOS 14, in late 2020. Before that version reached widespread adoption you would have needed a jpeg fallback for your webp images.

    AVIF is still not universally supported.

  • by supermatt on 12/8/23, 10:42 AM

    > Regardless of whether AVIF ends up being better than WebP, it’s clear that there are viable alternatives you can use today that are massive improvements over JPEG.

    Friendly reminder that there is JPEG-XL which is arguably better for all cases than WebP and AVIF (and also supports progressive decoding!). Unfortunately Google (who have a vested interest in WebP and AVIF), are actively hostile towards supporting it and have outright lied about their reasoning (stating lack of interest despite thousands of developers and market-leading corps saying otherwise).

  • by karmakaze on 12/8/23, 12:10 PM

    > An overview of some compelling alternatives.

    The story lost me at the subtitle--I'll wait until there's one. Seriously though if a very large part of your company's cost or user experience depends on efficiently rendering quality images, then this should be on your reading list.

    For the vast majority, choosing the nearly-right image dimensions and compression level is probably going to do a lot more than choosing any format over jpeg.

  • by mikewarot on 12/9/23, 7:06 AM

    Years ago when I was tight on disk space I converted my photos all to jpeg2000 to save space. I've regretted it ever since, as I've permanently lost resolution of my personal photos of friends and family, and some turn out to be completely lost.

    For web pages, you can just turn up the jpeg compression on photos, and use pngs for constructed images with hard edges.

  • by everfrustrated on 12/8/23, 9:33 AM

    Would be interesting to know if there's any increase in CPU battery (power) consumption to render these different formats too?
  • by rado on 12/8/23, 10:52 AM

    PSA: Safari still doesn't support HDR AVIF, more than a year after it was reported: https://bugs.webkit.org/show_bug.cgi?id=245858
  • by have_faith on 12/8/23, 10:40 AM

    Apart from being a single sample of a low quality photo to start with. The WebP seems noticeably softer at 100% viewing, especially textures on the wall and some faces.
  • by cm2187 on 12/8/23, 9:26 AM

    I wish .net standard libraries would support anything else but they are frozen in time to the early 2000s (at least on .net framework full).
  • by bitsandboots on 12/8/23, 11:51 AM

    webp is perfect for serving images but not perfect as a source. jpeg at 100% quality is less lossy than webp lossy version. webp lossless is fine, but then not very small. taking photos at 100% jpeg can be a good middle ground for that reason, unless you really dont care about the quality.
  • by jgalt212 on 12/13/23, 1:43 PM

    email support for anything other than jpg and gif is pretty sparse.