So as every time I read something decrying how webp is allegedly "annoying", the conclusion is that the problem was never about webp itself but the tooling and ecosystem to handle it
Is there a real distinction? It can be a great format, but if actually using it sucks then in practice it's a pain to use/encounter. (I don't actually have this problem personally - all my apps seem to handle it fine - but the argument seems reasonable.)
Yes, it's important to distinguish annoyances of the codec from annoyances of the ecosystem.<p>Ecosystem being slow to adopt it is something that can be fixed or improved, but also more importantly (given jpegxl & avif comparisons) are things that will impact any new image format.<p>Meanwhile annoyances of the codec tend to be things that are dramatically harder to deal with. Like HEIC being a license minefield and also slow as shit. Or that many of these newer image codecs do not have ways to work with them in a memory efficient manner like jpeg does (see eg libjpeg-turbo's sample size & skip scanline options). Or WebP insisted on being in a RIFF container for... uh... absolutely no fucking reason whatsoever afaict. Fortunately RIFF is so trivial that this overhead doesn't actually matter in practice, but then HEIC & AVIF dials up the annoying container bullshit to 11 thanks to their video heritage with ISOBMFF
It seems much harder to get an audience as someone complaining about technical details of codecs and their implementations, than as someone complaining about the formats (which in practical terms is always going to mean the ecosystem, or really, how broad the support base is or what the user has to do in order to deal with it).
RIFF is so trivial and has such useful properties that I've done several application-specific binary formats that are RIFF with a different start atom.
RIFF itself is fine, but in the context of webp it's pointless. WebP doesn't make any use of being in a riff container. Like it still internally has its own chunk system anyway. So you end up with a single RIFF chunk for the webp file that itself then can contain multiple, non-RIFF chunks
Perhaps it's a matter of who hits the pain point? Ugly specs make annoyed devs, licensing problems make distributors unhappy, and ecosystem issues leave users unimpressed. (With some spillover between categories, of course.)
> Like HEIC being a license minefield and also slow as shit.<p>How much slower? I'm finding very conflicting numbers.<p>But on the timescale of "wow this still doesn't support webp" those patents will solve themselves soon.
Absolutely there is. If it works seamlessly for potentially endless end users and the burden is only on the singular you… yeah, it’s worth the extra effort on your part.
It matters. The ecosystem by itself could be fixable. But a bad ecosystem could also be a symptom of a bad standard, for example IPv6.
>I don't actually have this problem personally - all my apps seem to handle it fine<p>I heard this argument against WebP about 3 times, each time I asked people what software exactly do they use that doesn't support WebP, they told me, I checked the support (downloaded the software and opened/edited WebP file), and it did support WebP.<p>I deemed this "I hate WebP" just a comment bait argument in social networks.
There was a multiple year timespan where webp was being used on websites, but local software (especially image viewers/phone gallery apps) wouldn't render webp. The format's poor reputation is sadly earned.<p>> I deemed this "I hate WebP" just a comment bait argument in social networks.<p>Go try adding a webp image to a Google doc and then reconsider your position.
>Go try adding a webp image to a Google doc and then reconsider your position.<p>Lacking support for WebP or for other <i>common</i> media is a flaw of a specific service.<p>Many websites accept videos only in mp4 + h264 + aac audio for some reason, while there are many other video formats and codecs which could be used on the web and in general. That doesn't mean the other formats or codecs are worse or annoying.
I haven't seen much if anything saying webp itself is annoying directly, and your conclusion agrees with what I've seen. The complaining I've seen <i>is</i> about the tooling available (mainly from non-techies who don't care to know how to convert to another image format because, and I agree, why should they?) that once you've got a webp image file from one site the next site you try to upload it to doesn't accept them. For those of us who can convert the tooling has been there for ages, as have editors happy to load and save the format.<p>Though TBH I still use JPEG, PNG, or GIF, depending on use case, out of habit. The size saving for the same quality of lossy compression is not something I've found myself hankering for. It is different if you run a site that sends out millions of every image, but nothing I do is that popular and is never likely to be, and no one stuck on a really slow connection where the difference would matter to them is going to be accessing my stuff.
The problem really boils down to WebP having no purpose to exist for any user, therefore no reason to waste time and introduce vulnerabilities for its support, especially for feature-complete software. An image format (actually not, one of those video keyframes formats that have little to do with images, let alone photos, and in its case it's 2-in-1 too with lossless), that was already outperformed by mozjpeg on its initial release as far as human eyes are concerned, and thoroughly obsoleted by jpegli..
It's still annoying that if you set quality anywhere below 100, you get half-resolution color (VP8 only has 4:2:0 chroma subsampling).
The fact that there is a size limit (16,383 x 16,383 pixels) is still annoying for some (rare) use cases.
The culprit was very often specificially Photoshop. People using old (pirated) copies of Photoshop will still be annoyed about it.<p>I've also encountered issues with some Linux distros not shipping webp support by default for their image viewers, for some reason, but it's been a while since I've set up a new Linux env so hopefully that's been fixed since.
> <i>the conclusion is that the problem was never about webp itself but the tooling and ecosystem to handle it</i><p>That is true in life.<p>EVs aren’t annoying, the charging infrastructure is.<p>Etc
That isn't entirely true. EVs' smaller range, and longer "refueling" time are annoyances by themselves, and compund the annoyance of not having good charging infrastructure.<p>OTOH, being able to charge while you are sleeping or working is pretty convenient.
It's annoying how the format itself, or should I say just the file extension, doesn't make it clear whether or not you have lossy compression.
This is an issue with most media formats. PNG can be palletized, full-color in four or five different configurations and bit counts, or lossy. You have no idea what's actually inside of a .mkv/.mp4 either. God help you if you try to distinguish between lossy JXL and lossless HDR JXL.<p>A decoder can and should just do both. A MIME type/extension never really indicated what the contents are like, it just indicated the common restrictions of a file format.
And only some software. All my Linux software supports it and have been for ages.
Does Windows already display WebP files in File Explorer? :-|
> the tooling and ecosystem to handle it<p>That’s the whole point, though. If the tools I use don’t handle it properly, it’s annoying. Saying it’s an ecosystem problem doesn’t change that.<p>How long has it been now? And from what I’ve seen, even Google’s own stuff doesn’t always handle it. That’s not helping their case.
Yeah it's purely the fault of the tens of thousands of application devs that have been too stupid to recognize the obvious and immense benefits of webp over existing widely adopted formats /s
Firefox actually silently and automatically converts images to webp in some cases when you Save As them, with no option to revert to the format you see in the DOM. It’s fucking infuriating. I hate webp because the support is so spotty.
I highly doubt that is what's happening. More likely the server is serving a webp under a .png filename or something.
I don't think that's firefox doing it? I'd guess it's some CDNs doing the conversion. Or the URL says .jpg but when you look at the mimetype sent by the server it's actually webp. Extentions are meaningless for browsers.
It's not Firefox, it's the server. Edit and resend the request with header "Accept: image/jpeg" only and you'll most likely get a JPEG file.
This would cause the downloaded file to have incorrect file extension because such services don't configure the Content-Disposition header properly, and you still may have lots of improperly named files unless you realize that the file content doesn't match its extension.
Annoyingly, this doesn't work for a whole lot of websites that insist on serving webp, they just ignore the header. Some of them have bespoke workarounds like adding ?format=original on fandom wikis, with some the server will just never serve you anything other than webp.
That seems more likely. I still hate webp.
Does it actually request the image that it already downloaded again to save it to a file? Seems rather silly?
No, the server is just sending the file named 'foo.jpg', but encoded as a webp with webp mime type, so when you save the file it defaults to the webp extension cause it ends up treating the filename as a blob of text without an expected extension for the file type.
Webp does not have hardware decode and does not support progressive.<p>I speculate the asymmetric push is a case of it solving Google’s problem (bandwidth cost) but not the end user’s problems (battery and latency).
Hardware JPEG decode isn’t as valuable on today’s hardware. CPU decode with SIMD instructions is fast and energy efficient. It’s such a negligible part of battery usage that it’s barely worth thinking about for fast modern CPUs.<p>Even formats like H.264 are being dropped from some hardware decode engines because it’s so easy to do on CPUs now, as can be seen even on the Raspberry Pi 5. Many software stacks will skip hardware JPEG decode even when available because it’s extra maintenance and debugging overhead for such a little gain.<p>Progressive decode is a feature that is good in theory but rarely used in practice. If you’re concerning yourself with power usage and memory footprints, progressive decode goes in the opposite direction. Users also don’t like progressive decode as much as developers think they will as it’s often perceived as something being broken.<p>I think WebP made reasonable tradeoffs for the way images are actually used and delivered.
Then why do they put it on the phones? surely manufacturers would love to cut the part?
Since webp is little more than a vp8 iframe, and most SoCs already have a hardware vp8 video decoder, the additional hardware cost to decode webp is zero. Just takes a bit of firmware development effort.<p>And while hardware image decoders might be dubious, hardware video decoders are very much worth it.
> Even formats like H.264 are being dropped from some hardware decode engines because it’s so easy to do on CPUs now, as can be seen even on the Raspberry Pi 5<p>CPU decode efficiency most certainly was not the reason h.264 was dropped on the Pi
Btw, even Google doesn't support webp for many of its products, like Docs/Slides.
It also lost much of its quality advantage over plain jpeg, given the improvements in jpeg encoders: the jpegli encoder (from google's jpegxl team) has improved plain jpeg encoding significantly.<p>Most photo/design apps don't seem to be using SOTA jpeg encoders, though, so I think webp looks better in comparisons like OP's than it actually is. You maintain all the ultra-fast decoding of jpg when you use a modern encoder, too.
Is hardware decoding even commonly used for still image codecs?
JPEG decoding is frequently included in systems with DSP blocks because it’s easy to add to a system that is already doing similar math for video decoding.<p>It’s not always used when available. It can be a lot easier and safer while being fast enough to do it on the CPU. If the operating system has an image decoder path that will handle everything for you then it might be used (Apple hardware for example) but if you have to go out of your way to implement the API, common software will favor software decoding because nobody wants to maintain code testing branches for different hardware image decode platforms.
Only for HEIC realistically, and that only still causes it to struggle to match jpeg or webp performance anyway
People only seem to care about progressive when talking about webp. I suspect most people don't even enable progressive decoding in formats that support it.
I was amazed at how much better compression webp offered over jpg and png.<p>Using it in a web-browser 360 panorama viewer enabled pretty substantial latency and storage improvements.<p>close to 4x iirc.<p>ditto large "xray" style orthographic images of building scans generated from pointcloud laser scan data.<p>avif was even better compression for some cases, but seems to take a long time to generate, and less widespread browser support. Will look at jpeg-XL .. but Im guessing it will be a while until it has widespread support
It's typically 15%-30% smaller than JPEG at comparable perceptual quality. Any reduction bigger than that is just loss of quality without further compression improvement, and you could have similarly reduced file sizes by recompressing/optimizing JPEG.<p>In JPEG file size grows exponentially with quality, which also means that "I can't tell the difference" decrease in JPEG quality makes a huge difference in file sizes.
[dead]
Google aren't pushing WebP. Google Docs / Slides <i>still</i> don't support it.<p>I appreciate Google isn't a monolith, but that lack of consistency makes it really hard to shake the impression certain tribes within it are at war with each other.
It's not war, it's indifference. Why should Docs give a damn what Chrome's priorities are? The only reason they would is if there were effective leadership ensuring company-wide alignment, but there is no one filling that function.
Yeah, the classic image still holds true.<p><a href="https://www.globalnerdy.com/2011/07/03/org-charts-of-the-big-tech-companies-plus-an-enhancement/" rel="nofollow">https://www.globalnerdy.com/2011/07/03/org-charts-of-the-big...</a>
Because if they did company wide alignment, you would kill their promotion pipeline. Want harmony? Then in Google you build your own app (see N+1 chat apps) to get that feature, get promoted and dump the project on someone else.
Strangely enough, Google wouldn't index my personal website when I was using webp. Everything in my Search Console showed up as "crawled but not indexed." I had multiple friends with SEO backgrounds check out my site, but everything looked configured correctly.<p>Switching all my images back to jpg solved it
This is actually a good counter argument for 'Google is pushing X'. If they were pushing X, they'd make all their apps fall in line.<p>Contrast this to, say, Apple - which when decides to push something, they go all in. And that's an example of top-down decision making.
Just as with JPEG2000, I'm still not convinced the additional complexity is worth it. There seems to be a lot of immature technologies being pushed in the past few years, when IMHO the Web should've stabilised long ago on the basics. But I guess people need things to do to keep them employed... and Big Tech needs to maintain its monopolies.
The old JPG/PNG choice had a big problem: JPG handles sharp edges, including text, badly. PNG produces huge photo files. Images containing a mix of both don't work well in either format.<p>By contrast, when using a modern format like WEBP or AVIF, a single encoder configuration produces decent looking results across a variety of input images.
WebP is actually two completely different compression formats developed by different teams at different times for different purposes (VP8 video codec + lossless add-on by Google).<p>The WebP encoder just has a switch when quality=100, then use the PNG-like format in .webp, otherwise use the JPEG-like format in .webp. WebP at quality < 100 will destroy text, sometimes worse than JPEG, because VP8 can't store color at full resolution. WebP at q=100 will blow up photo sizes by orders of magnitude, similarly to PNG.<p>AVIF and JPEG XL actually have ability to mix-and-match blurry and sharp compression modes within a single image.
How is it "a single encoder configuration"? WEBP has separate lossy and lossless compression modes and simply gives both the same filename extension.
At what year would you say the web should have stabilized on the basics?
Avif.<p>Especially for animated images. Comparing webp or avif sizes to gif is easily a factor of five to ten when animated.
Author here: I'm also very much looking forward to using AVIF (and also JPEG XL), but it's another tooling question. I'm really hoping that Pixelmator Pro (now owned by Apple) will support them both soon. Photoshop (which I've recently dumped) supports WebP and AVIF, but not through the "Save for Web" or "Export As" flows. Having a nice export flow where you can easily compare compression vs. quality levels is really important to me, and I suspect to many others.
Besides VMAF Netflix also released an image comparing framework back in 2020. Might be worth a look: <a href="https://netflixtechblog.com/avif-for-next-generation-image-coding-b1d75675fe4" rel="nofollow">https://netflixtechblog.com/avif-for-next-generation-image-c...</a>
Google is no longer actively working or supporting JPEG XL.
Are you sure? They just blogged about supporting it in Chrome with their Google developed jxl implmention in Rust.
They're bringing it back. Chrome 155 onwards will support it.<p><a href="https://developer.chrome.com/blog/jpeg-xl-in-chrome" rel="nofollow">https://developer.chrome.com/blog/jpeg-xl-in-chrome</a>
Since all modern browsers support AVIF, I'd skip WEBP and just use AVIF (possibly with a fallback for JPG/PNG).
Everytime I compared AVIF to WEBP there was basically zero size or visual difference and as far as I know AVIF is slower to encode and decode. And I'm not sure yet whether .avif files can be opened natively on Windows, Linux and MacOS on the default image viewers. I think I installed some kind of plugin via the Windows Store at some point to make that work, hard to tell now.
Odd, what are you using to create your avif's? I've done a bunch of work with them and the AVIF's were almost always significantly smaller than webp at equal or better quality.<p>Encoding is a pain, to be sure; I ended up creating a workflow where my source would save things as PNG files (giant, but lossless) then running a avifenc (<a href="https://github.com/AOMediaCodec/libavif" rel="nofollow">https://github.com/AOMediaCodec/libavif</a>) to produce the avif, and trashing the PNG.<p>Decoding though, all browsers have support, it's great.
When it comes to animations, is there much of a reason to use avif over webm? I suppose an avif fits into CSS and <img> without further code changes, but that's about it as far as I can think.
> I suppose an avif fits into CSS and <img> without further code changes<p>Which is HUGE since it allows you to embed them wherever you can embed images. I'm still mad that browser vendors didn't just allow silent looping videos in <img> tags instead of giving us these animated image formats with weirdly gimped non-keyframe compression.
An AVIF and a WebM + AV1 is basically identical file-size wise, but you can zoom in on an AVIF so for actual animated <i>images</i> it wins on that front.
i think alpha channel is a reason, but i agree, just use webm
I just switched to AVIF after several years of using WebP. Main reason for me is HDR support, but the smaller encoding is nice. Just beware of lossless AVIF, that's a trap.
In GIMP, when you try to save as a "lossless" AVIF, it will add a lossy colorspace conversion step (to 8 bit YCbCr) unless you specifically specify otherwise. And lossless AVIF always loses to lossless WEBP.
<a href="https://squoosh.app/editor" rel="nofollow">https://squoosh.app/editor</a> is a great app to compare how well an image compresses with newer formats like AVIF and WebP, compared to JPG/PNG.<p>It feels more practical now to have a fast loading page with large images now without too much effort. It was far too much of a burden before to have to provide fallbacks to older formats, on top of different images for different screen sizes/densities.
There are two different codecs both called "webp". There's the lossy VP8 codec, and the lossless codec that's completely different. Lossless WebP is so good that outside of image format support, there's no reason to use anything older (except for very specific kinds of repetitive images).
Throwback to the spacer gif era where we would slice a photoshop design and make it fit in HTML tables<p>I remember moving on to PNG when that was implemented in most browsers and suddenly you could do gradients that end in transparency...
Love it! So many tables. Big shout out to border, cellspacing, and cellpadding attrs. Memories…
Ah, the old ‘filter for IE’ [1] to support PNG transparency!<p>[1] <a href="https://stackoverflow.com/questions/1852467/alpha-transparency-solution-in-ie" rel="nofollow">https://stackoverflow.com/questions/1852467/alpha-transparen...</a>
Or to make rounded corners, buttons...
For the past two years, I have been exporting my images in WebP instead of JPG. If I share it online or send it by an email, I am pretty sure the other side will be able to see them.<p>I honestly think that all phones and even professional cameras should replace JPG with WEBP, we will have like 30% smaller photos.<p>The DNG format (for raw photos) allows JPEG XL compression (it used to allow only JPEG in the past). I wish some country made it mandatory for cameras to let user take photos in DNG (just like USB-C is mandatory in the EU).<p>I am happy that HEIC from Apple did not take off (as it was proprietary, protected by patents).
> I honestly think that all phones and even professional cameras should replace JPG with WEBP, we will have like 30% smaller photos.<p>> I am happy that HEIC from Apple did not take off (as it was proprietary, protected by patents).<p>Canon, Nikon, Sony, Panasonic, and Fujifilm cameras all shoot HEIF these days.
Does this person know you can just... ship multiple formats? Just add avif
WebP have been in use for many years. It's good for still pictures, but its animation capabilities are very limited, because it's based on a much simplified subset of VP8 video codec.<p>AVIF on the contrary has great animation support. It's essentially a AV1 video without sound, but with all the benefits of <img> browser tag.<p><a href="https://files.catbox.moe/blnad2.avif" rel="nofollow">https://files.catbox.moe/blnad2.avif</a> (334 KB, 35 seconds, 352×352 18 fps)
Why? Just skip webp altogether, an annoying footnote that caused more issues than it solved.<p>Go straight to jpeg xl and/or avif when the they are mature.
Author here: as I wrote in the piece, I've recently dumped Photoshop for Pixelmator Pro. It doesn't currently support AVIF. Photoshop does, but not in a way that makes it easy to optimize an image for web export. JPEG XL is also exciting to me, but it's not generally available across browsers. WebP is the current best image format for my use-case, but I'm hoping others supplant it soon.
>but it's not generally available across browsers.<p>Note that this is changing rapidly. Safari ships JXL, Chrome did a few days ago, and Firefox will in the next few days. Once this flows through to all the chromium based browsers we will see pretty much 100% support on the web.
Ok, but do we _need_ WebP after all in this day and age?<p>Globally seen connections get faster and storage gets cheaper and we have huge amounts of tools for dealing with PNG and JPEG, so what's the deal?<p>Sure, use images wisely, compress them accordingly, deliver images in the right size, that's all important stuff, but you have to do that with WebP, too.<p>So after all those years, I don't think WebP is really solving a problem that needed solving or am I missing something?
One forum I use does not embed webp links. They show up as links, period, and it's a damn waste of my time to convert. Small is beautiful unless your forum is run by two people, not having the time to update code all the time.<p>Many image links that work for search engines don't work for the site and I have to download and then upload to a host to get an embeddable image link.
I love webp. I founded one of the mid 2010's "photo backup and rediscovery" startups. Webp let us offer free unlimited photo backup at the iPhone resolution of the time (iPhone 6: 8MP). We hosted billions of photos for free, and paid for it all with a sub 1% conversion rate to $5 a month for untouched jpegs. It was profitable. We had to have a few dozen auto-scaling image conversion servers for browsers that didn't support webp, but 95% of users used our apps which supported webp, so it was fine.<p>I'd probably go avif/jpegxl today, but webp was ahead of it's time.
Yet, Gmail can’t handle transparent .webp in their email previews
Annoyingly Google voice doesn't support it at all, either.
I've installed a firefox extension[0] that saves any image as .JPG,.PNG, or .WEBP<p>[0] <a href="https://addons.mozilla.org/en-US/firefox/addon/siat/" rel="nofollow">https://addons.mozilla.org/en-US/firefox/addon/siat/</a>
The one annoying thing about WebP is that you can no longer see from the file extension whether some image is lossy or lossless.<p>The other annoying thing is the name, because surprisingly we use images in non-web-related contexts as well. Admittedly, PNG technically has a very similar issue, but it’s less in your face.
I use webp on my blog a lot. The software automatically converts it when I post and so on. Surprisingly small files and I've never had any trouble opening them on any platform. Big fan.
Let not forget you can save a canvas as webP with toBlob.
Don't use webp/avif if users from your app likes to paste long screenshots.<p>I mean really, really long. Hard lessons learned
mozjpeg turbo, nananananana :D works, small, great quality, nobody cares about the rest
Meanwhile, JPEG-LI is literally JPEG, just with different rules for how the image is decoded in order to support higher color resolution. (And different rules during encoding to allocate bits differently, usually boosting the bitrate of luma and cutting the bitrate of chroma)