Door Imre Himmelbauer

Redacteur

Google is om: waarom JPEG XL alsnog de standaard voor het web wordt

20-01-2026 • 06:00

124

Tekst

JPEG XL werd in het leven geroepen als de opvolger van JPEG, maar de adoptie bleef achter ten opzichte van WebP en AVIF. Tot eind vorig jaar, toen de PDF Association aankondigde JPEG XL in PDF-bestanden te gaan ondersteunen en Google de wil uitsprak om ondersteuning voor het afbeeldingsformaat in Chrome te integreren, iets wat het bedrijf vorige week ook deed. Tweakers sprak met de Belg Jon Sneyers, een van de grondleggers van JPEG XL: "Dit kan de standaardcodec voor afbeeldingen worden."

Het werk aan het JPEG XL-bestandsformaat begon in januari 2019, nadat het JPEG-comité in 2018 ontwikkelaars opriep om voorstellen in te dienen voor een opvolger van JPEG. Uiteindelijk besloot het comité twee voorstellen te combineren: Googles Pik en het Free Universal Image Format (FUIF) van Sneyers. In maart 2022 werd het formaat officieel gestandaardiseerd door de internationale standaardiseringsorganisatie ISO. De adoptie onder browsers daarna is hobbelig te noemen: Google begon in februari 2022 met de ondersteuning van JPEG XL en zette die in november alweer stop. Ook Mozilla besloot de ontwikkeling van een JPEG XL-implementatie, die al wel aanwezig was in de experimentele Nightly-versie van Firefox, stop te zetten.

Apple kondigde in 2023 plots aan JPEG XL te gaan ondersteunen in Safari.
Apple kondigde in 2023 plots aan
JPEG XL te gaan ondersteunen in Safari.

Met die twee gevoelige klappen leek JPEG XL, in ieder geval als webstandaard, al bijna ten dode opgeschreven. Daarna is de adoptie echter toegenomen. Dat begon in 2023, toen Apple uit het niets aankondigde JPEG XL in Safari te gaan ondersteunen. Mozilla stelde het jaar daarna zijn mening bij en meldde interesse te hebben in een implementatie van JPEG XL op basis van de programmeertaal Rust. Het jaar erna volgden zoals gezegd de aankondigingen van de PDF Association en Google. Laatstgenoemde bedrijf ondersteunt inmiddels de op Rust gebaseerde decoder jxl-rs in het experimentele Chrome Canary, hoewel de functie voorlopig nog standaard uit staat. Daarmee lijkt het bestandsformaat, dat al wordt ondersteund in populaire beeldbewerkingssoftware als GIMP, Krita en Adobe Camera Raw, ook een brede adoptie op het web tegemoet te gaan.

Verrassing van Google

Het nieuws over de wens van Google om JPEG XL in Chrome te integreren eind november kwam voor Sneyers onverwachts, zo geeft hij toe: "Ik ging er wel van uit dat Chrome vroeg of laat van gedachte zou veranderen, maar zo plots had ik niet verwacht. Dat was wel een verrassing, net zoals het stoppen met de ondersteuning eind 2022 een verrassing in negatieve zin was." Sneyers zag wel al de tekenen aan de wand, geeft hij toe: "Apple ondersteunde het al in Safari en daarbuiten ook in zijn besturingssystemen, Microsoft ondersteunt het in Windows, Adobe in Photoshop en Mozilla was ook al van positie veranderd. Chrome was zo'n beetje de enige belangrijke speler die nog niet openlijk had uitgesproken JPEG XL te gaan ondersteunen."

Google noemde bij het stoppen van de ondersteuning van JPEG XL in Chrome een 'gebrek aan interesse van ontwikkelaars' als belangrijkste reden. Sneyers heeft daar zelf zijn twijfels bij: "Ze hebben eigenlijk ook nooit een poging gedaan om de interesse van webontwikkelaars te polsen. Er zijn manieren om dat te doen. Met sommige functies doen ze bijvoorbeeld origin trials. Dat betekent dat op een bepaalde website of app een nieuwe feature automatisch wordt geactiveerd. Zo kan geëxperimenteerd worden met een nieuwe functie zonder dat die onmiddellijk voor iedereen is opengesteld. Met Cloudinary (het bedrijf waar Sneyers werkt, red.) hebben wij een origin trial aangevraagd, zodat wij JPEG XL-beelden konden leveren die dan zouden werken op Chrome, ook al worden deze nog niet wereldwijd ondersteund. Dat soort experimenten heeft eigenlijk nooit plaatsgevonden. Dus ja, het stond wel achter die vlag. Maar er zijn heel weinig mensen die hun instellingen van Chrome gaan aanpassen en op de Android-versie van Chrome kun je zo'n vlag zelfs helemaal niet activeren. Dus er was eigenlijk niet echt een manier om in te schatten hoeveel mensen ervan gebruik zouden willen maken."

"Ik vraag me af op basis waarvan die uitspraak werd gedaan", vervolgt Sneyers. "Het enige wat ik kan bedenken is dat Google zag dat er weinig JPEG XL's binnenkwamen. Maar ja, als het achter een vlag zit die standaard uit staat, is dat logisch. Het aantal gebruikers dat aan die vlaggen sleutelt, is echt beperkt en als webdevelopers of beheerders JPEG XL-bestanden sturen naar een browser die dat niet ondersteunt, dan krijg je een gebrokenafbeeldingssymbooltje. Dat is het laatste wat je wilt hebben."

Ons kent ons

Google heeft zelf ook een afbeeldingscodec, WebP, en is bovendien een van de leden van de Alliance for Open Media, dat de AVIF-codec heeft ontwikkeld. Sneyers kan zich dan ook niet helemaal van de indruk onttrekken dat dat de integratie van JPEG XL in Chrome ook in de weg zat: "Ik heb wel het idee dat een aantal beslissingsmakers in het Chrome-team toevallig ook dezelfde mensen zijn die destijds WebP hebben gemaakt en nu ook actief zijn in AVIF en dat er daardoor een cultuur à la 'not invented here' hangt. Op zich is dat heel ironisch, want JPEG XL heb ik samen met mensen van Google en het JPEG-comité ontwikkeld. Maar dat is een andere tak van Google die niet onder het Chrome-team valt."

JPEG XLGoogle publiceerde zelf kort na het besluit om de ondersteuning van JPEG XL in Chrome stop te zetten een testrapport waaruit moest blijken dat AVIF superieur is aan JPEG XL. Op het rapport is volgens Sneyers flink wat af te dingen, zo schreef hij al eerder in een blog: "Het voornaamste probleem was dat ze geen enkel onderzoek deden naar de kwaliteit van de beelden door mensen ernaar te laten kijken. Ze gebruikten alleen algoritmes. Dat is meestal niet zo'n ideale manier om te vergelijken, omdat het nogal makkelijk is om die algoritmes voor de gek te houden, vooral als je een encoder maakt die specifiek probeert goede punten te halen op een bepaald algoritme." Google gebruikt in de test onder meer de MS-SSIM-test, die vaak in de YCbCr-kleurruimte wordt toegepast. AVIF werkt met deze kleurruimte en kan daardoor specifiek getuned worden om goed te scoren op deze test. JPEG XL maakt gebruik van de XYB-kleurruimte, die meer aansluit op de menselijke perceptie van kleuren.

Bovendien is de kwaliteit van de gebruikte afbeeldingen erg laag. Google brengt de bestandsgrootte van afbeeldingen uit de Kodak-testset in zijn compressievergelijking terug tot 0,1 tot 3 bits per pixel. "Op dat gebied kan AVIF wel winnen, maar het is een compleet irrelevant gebied, omdat niemand zijn afbeeldingen zo hard wil comprimeren, ook niet op het web", zegt Sneyers. "Er is wel een gebied in de hele lage kwaliteit waar AVIF nuttig kan zijn, maar juist in de hogere kwaliteit valt het meeste te winnen. Een afbeelding van 30KB terugbrengen naar 20KB levert een relatieve winst van 33 procent. Dat geldt ook voor een afbeelding van 300KB tot 200KB comprimeren, maar de absolute winst is daar natuurlijk veel groter."

Waarom JPEG XL?

Het feit dat JPEG XL met minder agressieve compressie betere resultaten oplevert, komt onder meer omdat het een écht afbeeldingscodec is. Zowel WebP als AVIF is in feite een afbeeldingscodec dat is afgeleid van een videocodec, respectievelijk VP8 en AV1. Dergelijke codecs hebben een aantal nadelen voor gebruik met afbeeldingen, legt Sneyers uit: "Video is zoveel beelden per seconde dat de kwaliteit ook wat minder uitmaakt, omdat er dan minder compressieartefacten te zien zijn. Dat zorgt ervoor dat er andere beslissingen worden genomen in het ontwerpproces."

"Wat videocodecs bijvoorbeeld vaak hebben, is agressieve filters die blokkerigheid tegengaan door het beeld heel sterk te smoothen", vervolgt hij. "Dat werkt goed op lage kwaliteit als je wilt vermijden dat er zichtbare blokken zijn, maar op hogere kwaliteit leidt dat er gewoon toe dat de details verloren gaan en dat alles er wat plasticachtig begint uit te zien."

Een van de redenen daarvoor is dat die codecs veel gebruikmaken van directional prediction, ofwel richtinggebaseerde voorspelling. "Dat komt erop neer dat als er een lijn in een afbeelding is, dan is de voorspelling dat die lijn verdergaat in dezelfde richting. Alleen als dat niet zo is, moet er iets gedecodeerd worden, maar als dat wel zo is, wordt er gecomprimeerd", legt Sneyers uit. "Dat zorgt er bijvoorbeeld voor dat scherpe lijnen in een afbeelding behouden blijven als scherpe lijnen, zonder dat zij vaag worden. Maar het nadeel is dat die lijnen soms niet helemaal correct kunnen zijn, omdat er maar in een aantal richtingen kan worden voorspeld. Dat geeft soms een beetje vervorming of smudging. Op hogere kwaliteit is het bovendien redelijk overbodig. Het is eigenlijk vooral nuttig om op lagere kwaliteit iets te kunnen produceren wat presentabel is."

Morsecode

Voor afbeeldingen van hogere kwaliteit is volgens Sneyers sterke entropycoding belangrijker. Dat is een vorm van lossless compressie die korte codes toekent aan elementen die vaker voorkomen en langere codes aan zeldzame elementen, net zoals morsecode kortere codes gebruikt voor veel voorkomende letters dan voor letters als Q en X. Door de entropycoding wordt de totale hoeveelheid data kleiner. Dergelijke codering kan zowel in hardware als in software gedaan worden, maar het is in de praktijk lastig om krachtige entropycoding in hardware te implementeren. Sneyers: "Dat is daarom iets waar videocodecs minder goed in zijn, omdat zij de beperking hebben dat elke videocodec moet kunnen werken in allerlei verschillende soorten hardware, ook smartphones en andere apparaten met een accu. Een video kan urenlang duren. Als dat voortdurend de cpu heel erg belast, is dat een probleem."

Jon Sneyers
Jon Sneyers

Daarom gebruiken fabrikanten een speciale ASIC voor het decoderen van video's. Sneyers: "Het gebruik van hardware heeft veel voordelen op het vlak van energie, maar beperkt hoe complex de codec kan zijn. Als er te veel complexe dingen in zitten, dan worden die chips te groot en te duur. Daar zit altijd een afweging in. En een van de dingen waar bij videocodecs op wordt bespaard, is de verfijning van de entropycoding, omdat het voor video niet zo belangrijk is. Veel van het signaal gaat toch al verloren, dus daarop wordt bespaard om die hardware betaalbaar te houden. Bij afbeeldingen is het niet nodig om aparte hardware te hebben, omdat de compressie van een enkele afbeelding ook prima via de cpu kan."

De verfijning van de entropycoding blijkt onder meer uit het feit dat de JPEG XL-codec bestaande JPEG-bestanden compleet lossless 20 procent kleiner kan maken zonder dat daarbij detail verloren gaat. Het enige verschil met het JPEG-bestandsformaat is de manier van dataopslag; de data zelf is bij een dergelijke hercompressie compleet onaangetast.

Asymmetric numeral systems

Om dat te bereiken, heeft JPEG XL meerdere compressieverbeteringen doorgevoerd ten opzichte van JPEG. Laatstgenoemd formaat maakt vooral gebruik van Huffman-codering, een vorm van prefixcoding die een 'boom' van elementen en hun frequentie genereert en op basis van die boom codes toewijst aan de verschillende elementen. Daarbij krijgen veelvoorkomende elementen codes dichter bij de stam dan elementen die zeldzamer zijn. Daardoor zijn uiteindelijk minder bits nodig om dezelfde hoeveelheid data op te slaan. Huffman-coding is een relatief simpele manier van comprimeren, maar is minder efficiënt omdat het met hele bits werkt. Als een symbool een theoretische informatie-inhoud van minder dan een bit heeft, wordt er daarom toch een hele bit aan het symbool toegekend.

JPEG XL maakt gebruik van asymmetric numeral systems (ans), dat de snelheid van prefixcoding combineert met de compressiedichtheid van rekenkundig coderen. De methode is ontwikkeld door Jarek Duda en wordt inmiddels gebruikt in onder meer Facebooks Zstandard- en Apples LZFSE-compressiealgoritmes. Hierbij wordt data tijdens het encoderen opgeslagen in één enkel getal, de state. Elke keer dat er data wordt toegevoegd, groeit deze state. Hoe waarschijnlijker een symbool is, hoe minder de state groeit. Zodra deze state een bepaalde grens overschrijdt, worden bits uit de state overgedragen naar de bitstream, de data die uiteindelijk als bestand wordt opgeslagen. Een van de grote voordelen van deze methode is dat informatie wél in minder dan een bit opgeslagen kan worden. Een symbool met een waarschijnlijkheid van 90 procent neemt bijvoorbeeld maar ongeveer 0,15 bits in beslag.

JPEG XL implementeert range-ans, waarbij de kansverdeling van symbolen verdeeld wordt over een vast bereik, met een state van 32 bits en kansverdelingen met een precisie van 12 bits, wat voorziet in een bereik van 4096 verschillende datapunten. De precisie van die kansen bepaalt hoe nauwkeurig de optimale codering kan benaderd worden. In eenvoudige Huffman-coding kunnen enkel kansen van de vorm 1/2n exact worden uitgedrukt, bijvoorbeeld 50 procent voor een symbool met een 1-bitcode, 25 procent voor een symbool met een 2-bitcode en 12,5 procent voor een symbool met een 3-bitcode. In de variant van ans die JPEG XL gebruikt, kunnen alle kansen van de vorm x/4095 worden uitgedrukt, bijvoorbeeld 99,97 procent (4094/4095) voor een zeer vaak voorkomend symbool of 0,024 procent (1/4095) voor een extreem zeldzaam symbool. Bij histogrammen met een hogere precisie wordt de compressie weliswaar beter, maar de workload voor de cpu wordt al snel erg groot. Bij een kansverdeling van 16 bits telt het histogram bijvoorbeeld 216=65536 waarden, tegenover de 4096 waarden bij een 12-bitshistogram.

Daarnaast maakt JPEG XL gebruik van contextmodellering. Daarbij worden stukken van de afbeelding met vergelijkbare histogrammen geclusterd, zodat er minder histogrammen nodig zijn. Daardoor wordt de overhead van de histogrammen zelf geminimaliseerd. De encoder ziet welke tabel hij moet gebruiken aan de hand van de contextmap. Het maximum aantal tabellen na de clustering is ingesteld op 255. Daardoor passen alle verwijzingen in een contextmap altijd precies in één byte.

JPEG XL ondersteunt kleurdieptes tot 32 bits, wat normaliter theoretisch onmogelijk zou zijn door de 12-bitshistogrammen. Na de kwantisatie (in het geval van lossy compressie) of na voorspelling (in het geval van lossless compressie) zijn de getallen die uiteindelijk moeten gecodeerd worden vaak dicht bij nul, maar er blijft nog steeds een groot aantal symbolen mogelijk. Om de tabellen compact te houden bij het grote aantal symbolen dat kan ontstaan bij het gebruik van hogere kleurdieptes, maakt JPEG XL ook gebruik van hybride integercodering. Hierbij worden lage getallen (die vaker voorkomen) volledig met ans geëncodeerd, terwijl zeldzamere symbolen deels direct (ongecomprimeerd) naar de bitstream worden geschreven. In dat laatste geval wordt het symbool opgesplitst in de token en onbewerkte bits. De token bevat de exponent, ofwel de positie van de meest significante 1-bit, en ook een configureerbaar aantal meest significante bits en minst significante bits. Deze worden met ans gecomprimeerd en naar de bitstream geschreven. De rest van de bits wordt onbewerkt naar de bitstream overgedragen.

Wachten op afbeeldingen

JPEG XL heeft buiten de betere entropycoding nog een aantal andere voordelen. Zo ondersteunt het bestandsformaat, in tegenstelling tot WebP en AVIF, bijvoorbeeld progressief laden. Daardoor is op webpagina's al snel een lagekwaliteitversie van de afbeelding te zien. De afbeelding wordt beter naarmate meer data wordt geladen. AVIF en WebP ondersteunen dit niet, mede omdat zij hun oorsprong kennen in videocodecs. Daardoor laden de codecs hun afbeelding pas als alle data is geladen, waardoor gebruikers mogelijk lang tegen een leeg vlak aankijken.

Daarnaast heeft JPEG XL ook een checksum ingebouwd. Het encodeerproces wordt altijd gestart op de specifieke waarde 0x00130000. Na het decoderen van de afbeelding moet dit ook de eindtoestand zijn. Als dat niet zo is, kan dat het gevolg zijn van corruptie, bijvoorbeeld als gevolg van fouten bij het versturen van de data.

Verder kan JPEG XL parallel worden geëncodeerd en gedecodeerd. Dat betekent dat een cpu de workload over meerdere rekenkernen kan verdelen om de taak sneller uit te voeren. "Dat is niet volledig lineair, maar het scheelt niet veel", zegt Sneyers. "Als je acht cores hebt, gaat het ongeveer zeven keer zo snel. Dat maakt wel een groot verschil. JPEG en WebP hebben dat voordeel niet. Dus als een JPEG of WebP wilt laden in Photoshop, maakt het niet uit of je twee of twintig cores hebt, het gaat niet sneller."

De toekomst

Op het web zijn er verschillende manieren om een fallback in te programmeren voor als de browser geen JPEG XL ondersteunt. Cloudinary gebruikt daarvoor acceptheaders van de HTTP-aanvraag, waaraan hun servers kunnen zien welk bestandsformaat er kan worden doorgestuurd als antwoord. Daarnaast kunnen webdevelopers ook de HTML-tag <picture> gebruiken, waarin meerdere URL's kunnen staan voor afbeeldingen in verschillende bestandsformaten – met als fallback een <img>-tag met daarin een JPEG of PNG. Sneyers: "Ik denk ook dat er in de voorzienbare toekomst nog altijd JPEG-fallbacks nodig zullen zijn op het web, zelfs als Safari, Firefox en Chrome modernere formaten ondersteunen. Er zal altijd wel iemand nog met een oude versie zitten of een niet-standaard browser gebruiken. Denk aan een Kindle, een smartwatch of een e-mailclient. Er is veel software die ook wel iets van webbrowsingfunctionaliteit heeft zonder een volledige browser te zijn."

Cloudinary werkt onder meer aan de referentie-implementatie libjxl en een Rust-versie genaamd jxl-rs. "Voor toepassingen die moeten encoderen, zoals bijvoorbeeld Photoshop, ontwikkelen we libjxl. Voor applicaties die enkel moeten decoderen en gevoelig zijn voor securityproblemen, zoals browsers, is de Rust-versie. Ik denk ook dat de veiligheid een van de weinige geldige redenen was van Google om te stoppen met de ondersteuning in Chrome. Zeker iets relatief complex, zoals een nieuwe codec, verhoogt natuurlijk de hoeveelheid code in een browser. Daar kunnen bugs in zitten en die kunnen een kwetsbaarheid veroorzaken. De Rust-versie moet op dat vlak betere garanties geven. Die is al bijna klaar. Alles werkt al, maar ze zijn nog een beetje de snelheid aan het optimaliseren. Naast Chrome wil ook Firefox een Rust-versie implementeren en het zou ook kunnen dat Safari daarop overstapt. Die gebruiken momenteel gewoon de C++-libjxl."

JPEG XL Chrome
Links de huidige stabiele versie van Chrome, rechts de nieuwste Chrome Canary-build

Daarmee wordt een belangrijke horde genomen, aangezien JPEG XL volgens Sneyers in veel andere software al wel wordt ondersteund. "Het zit nu bijvoorbeeld ook al in DNG als payloadcodec voor camera's." Dat wil zeggen dat camera's DNG-bestanden lossless kunnen opslaan met de moderne compressietechnologie van JPEG XL, waardoor de afbeeldingen kleiner worden zonder aan kwaliteit in te leveren. "Daarnaast wordt het gebruikt voor medische beeldvorming. Dus het is een codec die eigenlijk niet alleen voor de laatste fase van web delivery kan worden gebruikt, maar ook in de productie in toepassingen die niet noodzakelijk web zijn. En ik denk dat dat het wel het potentieel geeft om een echte vervanger voor JPEG te worden. Dat is ook de reden dat bijvoorbeeld WebP een bepaalde reputatie heeft gekregen; het team daarachter heeft er nooit echt veel aandacht aan besteed om daar algemenere support voor te krijgen. Voor JPEG XL is er ook nog werk om alles vlot te laten werken, maar er is denk ik al meer vooruitgang geboekt in het algemene ecosysteem van afbeeldingen dan WebP in dezelfde tijd heeft geboekt."

"Het optimistische en naar ik hoop ook realistische scenario is dat Chrome en Firefox JPEG XL binnen een jaar volledig ondersteunen", vervolgt Sneyers. "Dan hebben we eigenlijk universele browserondersteuning. Dat betekent dat iedereen het kan gaan gebruiken. Ik denk zoals gezegd wel dat er nog altijd een JPEG-fallback nodig gaat zijn, in ieder geval voor professionele websites. Misschien dat iemand zijn persoonlijke blog of zo het wel oké vindt om alleen nog maar JPEG XL te gebruiken vanaf het moment dat elke grote browser het ondersteunt. Dus ik denk dat het op het web wel een standaardcodec kan worden."

Redactie: Imre Himmelbauer, • Eindredactie: Monique van den Boomen

Reacties (124)

124
124
74
10
0
43

Sorteer op:

Weergave:

Mooie stap dat Google JPEG XL nu toch weer oppakt in Chrome. Wat veel mensen niet weten: Apple gebruikt JPEG XL inmiddels al in ProRAW, maar alleen voor de preview binnen het DNG‑bestand. De RAW‑data blijft gewoon identiek.

Sinds de iPhone 16 Pro kun je kiezen voor een JPEG XL‑preview — en dat wil je eigenlijk ook, want het scheelt enorm in bestandsgrootte zonder dat je iets inlevert op RAW‑kwaliteit.

Grootteverschillen in de praktijk:
  • Oude JPEG‑preview: ~20–30 MB extra → totale ProRAW ~70–90 MB
  • JPEG‑XL lossless: ~8–15 MB extra → totale ProRAW ~50–75 MB
  • JPEG‑XL lossy: ~3–8 MB extra → totale ProRAW ~45–65 MB
Kleine kanttekening: diensten zoals OneDrive ondersteunen JPEG XL nog niet. Daardoor zie je bij geüploade ProRAW‑foto’s nu een zwart vlak, omdat de viewer de JPEG XL‑preview niet kan decoderen.

Hopelijk verandert dat zodra JPEG XL breder wordt ondersteund, nu Chrome het opnieuw omarmt. Dan kunnen diensten zoals OneDrive deze previews weer gewoon tonen zegmaar, net zoals bij de oude JPEG‑previews.
Het is inderdaad geweldig dat JPEG-XL nu breder aandacht krijgt, want het is een bijzonder efficiënte manier van beelden comprimeren. Wat je zegt qua Apple's gebruik van JXL op de moderne iPhones Pro, klopt dacht ik niet helemaal: een ProRaw foto heeft geen non-lineaire en non-demosaiced data zoals een .ARW van mijn Sony Alpha dat wél heeft, want de sensordata van de iPhone moet ge-demosaiced worden om door Deep Fusion en HDR geïnterpreteerd te worden. In dit geval lijkt het erop dat de "raw-achtige" kwaliteiten van ProRaw behaald worden door de lossless compressie van JXL wrapped in het DNG bestand (DNG is een container, geen codec). Dit alles is volgens de DNG 1.7 spec. Of zie ik nu wat over het hoofd?

Verder verlang ik van Apple en andere merken nog meer verfijning van het gebruik van JXL, want de Foto's App kan momenteel niets met de metadata van een JXL bestand. Context: voor mijn grote bibliotheek aan ARW (Sony RAW) bestanden en de bewerkingen daarvan, heb ik JXL gekozen als formaat voor opslag op iCloud voor het minimaliseren van bestandsomvang. Met gebruik van ImageMagick (een homebrew package) kan ik 42MP 12bit bestanden lossless encoden in een JXL van 2–8MB (t.o.v. 43MB voor het originele RAW)! De efficientie van opslag is duizelingwekkend en het resulterende bestand is niet te onderscheiden van het 254MB TIFF bestand waarvan ik converteer. Hierbij neem ik significante benodigde tijd voor encoden (2–3 seconden per foto met aan M4 Pro 48GB RAM!) en decoden (2–3x trager dan HEIC op Apple apparaten) voor lief. Echter, zoals ik al zei, kan de Foto's App niets met de metadata en de locatie, sluiter, belichting, et cetera, zijn niet in de app in te zien. Mijn volgende poging is om deze kleine JXLs te verpakken in DNGs, gezien Apple dat wél goed geïmplementeerd heeft, maar dat blijkt nog een hele uitdaging...
Met gebruik van ImageMagick (een homebrew package) kan ik 42MP 12bit bestanden lossless encoden in een JXL van 2–8MB (t.o.v. 43MB voor het originele RAW)! De efficientie van opslag is duizelingwekkend en het resulterende bestand
Nou dat leek me sterk voor n foto, en idd dat bestand lijkt niet lossless te zijn:
$ jxlinfo "Okefenokee Alligator.jxl"
JPEG XL file format container (ISO/IEC 18181-2)
JPEG XL image, 4974x2984, lossy, 16-bit RGB

Je zou je Imagemagick parameters nog ns kunnen nalopen, bijv hier staat daar wat over.
(Kan het zelf niet testen want mn imagemagick heeft geen jxl support).
Nee, de preview in ProRAW/DNG is altijd een lossy JPEG, maar de raw data zelf kan sinds de iPhone 16 Pro met JPEG XL opgeslagen worden. Daarvoor kon dat enkel met lossless JPEG (een weinig gekende variant van JPEG). Versie 1.7 van de DNG spec laat toe om JXL te gebruiken voor de raw data. Dat kan zowel lossless als lossy, wat een beetje een contradictie is (lossy raw?) maar het gaat om superhoge kwaliteit lossy, dus er is ruim voldoende kwaliteit voor postproductie zonder artifacten.
Je hebt helemaal gelijk. Ik zit totaal verkeerd met mijn helaas niet kloppend onderzoek uit interesse hoe AppleRAW werkt.

Laat ik voorzichtig zijn maar ik heb 3 foto's gemaakt van hetzelfde onderwerp;

======== RAW-JPEG-LOSSLESS.dng
File Name : RAW-JPEG-LOSSLESS.dng
File Size : 74 MB
Preview Image Length : 9614306 -> Grootte thumbnail in DNG
Compression : JPEG
DNG Version : 1.6.0.0
Compression : JPEG
Bits Per Sample : 10 10 10
======== RAW-JPEGXL-LOSLESS.dng
File Name : RAW-JPEGXL-LOSLESS.dng
File Size : 48 MB
Preview Image Length : 10084045
Compression : JPEG
DNG Version : 1.7.0.0
Compression : JPEG XL
Bits Per Sample : 10 10 10
======== RAW-JPEGXL-LOSSY.dng
File Name : RAW-JPEGXL-LOSSY.dng
File Size : 22 MB
Preview Image Length : 9295726
Compression : JPEG
DNG Version : 1.7.0.0
Compression : JPEG XL
Bits Per Sample : 10 10 10

Als ik de embedded previews extract dan zijn het inderdaad allemaal JPG bestanden van ~10MB.
Verder toont inderdaad exiftool aan dat de RAW payload is weggeschreven als JPEG-Lossless of JPEG-XL al dan niet lossless of lossy (dit aan de grootte te zien).

Waarom geen thumbnail te zien voor JPEG-XL DNG's?
Aangetoond is dat alle RAW DNG's dezelfde JPEG thumbnail bevat dus Windows zou deze thumbnail moeten kunnen uitlezen. Maar vermoedelijk omdat Windows nog niet om kan gaan met DNG v1.7 zal Windows dit bestand niet proberen te openen en dus ook niet deze thumbnail tonen ook al is deze wel te lezen. Het enige DNG raw bestand die geen DNG v1.7 als versie heeft is de JPEG-LOSSLESS encoded RAW file en is dan ook als thumbnail zichtbaar.

Maar voordat ik weer conclusies trek: De vraag is of bovenstaand klopt en inderdaad door gebrek aan ondersteuning van DNG v1.7 binnen Windows kan de container niet geopend worden en ook niet de JPEG thumbnail worden uitgelezen.

Nogmaals testen met een DNG export via Lightroom van een CR3 bestand. Hiervan lukt het wel om een DNG v1.7 te zien in 'Explorer'... hmmm nouja hierbij laat ik het maar :) .. nog meer uit te zoeken dus.

Naam DNGVersie DNGbackwardscompatibilityversie
5Z1A3113v16b.dng 1.7.0.0 1.1.0.0 JPEG -> Leesbaar in Explorer
RAW-JPEG-LOSSLESS.dng 1.6.0.0 1.3.0.0 JPEG -> Leesbaar in Explorer
RAW-JPEGXL-LOSLESS.dng 1.7.0.0 1.7.0.0 JPEG XL
RAW-JPEGXL-LOSSY.dng 1.7.0.0 1.7.0.0 JPEG XL

Als laatste poging denk ik dat ook al is de base DNG v1.7 voor de CR2 export de compatibility terug gaat naar DNG v1.1 waardoor alsnog Windows deze kan openen.
De Apple v1.7 DNG's zijn niet backwards compatible en puur v1.7.

[Reactie gewijzigd door grimson op 21 januari 2026 14:41]

Kun je wellicht pull-request of feature requests maken voor diensten waarvan je merkt dat ze het bestandsformaat nog niet in hun mime-type lijst hebben staan?

De mime-type voor JPEG XL is image/jxl.
De bestandsextensie voor JPEG XL is .jxl.
De waarde van Content-Type header die een server moet meegeven als een JPEG XL wordt geserveerd is image/jxl.

[Reactie gewijzigd door djwice op 20 januari 2026 10:19]

Overigens is de praktijk dat de browser een plaatje gewoon aan de decoder geeft en er dan maar het beste van hoopt. De browser zelf hoeft alleen maar te weten dat 't een plaatje is. Detecteren welk bestandstype het is gaat vaak simpel genoeg aan de eerste paar bytes van de stream. Als je een GIF plaatje een mime type van image/jpeg meegeeft dan wordt hij doorgaans toch gewoon prima weergegeven.
Daarvoor heb je op de server de optie om
X-Content-Type-Options: nosniff
https://developer.mozilla...rs/X-Content-Type-Options

[Reactie gewijzigd door djwice op 21 januari 2026 17:31]

Dat moet nosniff zijn, niet nsniff. Maar die header betreft toch alleen stylesheets en scripts, geen afbeeldingen?
Ik had het niet goed en vermoedelijk is het anders. Zie mijn andere reactie maar wat ik nu denk (voorzichtig) is dat Windows de DNG v1.7 container niet kan openen. De embedded preview is gewoon JPEG gebleven.
Windows skipt denk ik dan de DNG v1.7 container en wil niet eens proberen de embedded JPG preview uit te lezen.
Leuk dat er weer een nieuwe beeldcompressie is, maar ik snap de ophef niet zo, al helemaal niet in verband met een browser.

Om een plaatje te tonen gooit de browser de binaire zooi die hij van de webserver heeft gekregen naar de image decoder library. Die kijkt even wat 't is en levert dan een hapklaar bakje met pixels. En of dan nou PNG, JPEG, TIFF, DICOM of wat dan ook is, maakt niet zo heel veel uit, zolang je maar een of andere library hebt die er kaas van kan maken. De impact van een nieuw formaat is echt miniem. Ik verwacht zelfs dat je bestaande browsers met een plugin ofzo wel het nieuwe formaat kan leren. Sterker nog, misschien hoef je alleen maar je libjpeg shared lib te upgraden en je bent klaar...

Als je naar een website als tweakers gaat, dan krijg je een enorme bak aan CSS en Javascript over je heen gestort. En nog wat plaatjes ja, maar die zijn echt maar een fractie van de bandbreedte. Of die plaatjes nou een paar procent beter gecomprimeerd gaan zijn, daar maakt echt niemand zich druk om. Die 100 MB die dat tweakers tabblad opsnoept in je browser is ook niet vanwege de plaatjes...

Voor lokaal gebruik heb je er misschien nog wel wat aan, minder opslag nodig om dezelfde kwaliteit te halen. En parallel (de)coderen helpt wel als je een plaatje van 32000x32000 pixels opent in GIMP. Maar voorlopig zul je altijd alles naar JPEG moeten omzetten als je het wil delen of tonen op iets anders dan je PC.

Voorlopig zullen we nog wel gewoon JPEG overal blijven zien. Want die wordt uitgebreid in hardware ondersteund. Als je camera accu tien keer sneller leeg is als hij XL plaatjes maakt, dan ga je waarschijnlijk toch wel terug naar JPEG en een grotere SD kaart...
Ik denk dat je onderschat hoeveel browsers er zijn, hoeveel daarvan niet desktopbrowsers zijn, en hoeveel daarvan niet upgraden of niet kunnen upgraden, zelfs. De ondersteuning inbouwen is de moeilijkheid niet, zorgen dat het breed genoeg ondersteund wordt is een tweede.

En die paar procent betere compressie, als het niet gepaard gaat met kwaliteitsverlies, is gewoon gratis winst (volgens het artikel wel meer dan een paar procent, trouwens). Daar ga jij als eindgebruiker niet rijk van worden, maar Google en andere bedrijven die content een miljoenmiljard keer hosten wel. De hoeveelheid JPEG data die over het web geblazen wordt zal ontzagwekkend groot zijn.
Gezien de ontwikkelingen op het web kan efficiëntie niemand iets schelen. Google al helemaal niet. Dan wil je een zuiniger protocol dan het kwistige HTTP, content in iets anders dan HTML, en al helemaal geen javascript en CSS.
HTTP/2 en /3 gemist, toevallig?

Hoe je HTML, JavaScript en CSS wil afschaffen zonder het web af te schaffen weet ik niet, maar qua overdracht is dat gewoon tekst en comprimeert het als de neten.
Het comprimeert zo goed omdat het zo weinig entropie bevat.
"Ik denk dat je onderschat hoeveel browsers er zijn"

Precies dit. Praktisch elke app (mobiel) en app (pc) is tegenwoordig een browser vermomd als applicatie. :+
Om JPEG XL te ondersteunen op je website zonder problemen bij je bezoekers met oudere browsers en zonder extra laadtijd of scripts kun je in plaats van de <img>-tag gebruik maken van de <picture>-tag:
https://developer.mozilla.org/.../html/reference/.../picture

De mime-type voor JPEG XL is image/jxl.
De bestandsextensie voor JPEG XL is .jxl.

Een voorbeeld:
<picture>
<source srcset="photo.jxl" type="image/jxl" />
<source srcset="photo.webp" type="image/webp" />
<img src="photo.jpg" alt="beschrijving van wat je op de foto ziet" />
</picture>
Dit werkt op alle servers, CMS-en en zelfs op je CDN (content delivery network).

De waarde van de Content-Type header die een server moet meegeven als een JPEG XL wordt geserveerd is image/jxl, dit zorgt voor een nog snellere laadtijd in nieuwe browsers.
Als dat gebeurt heb je onderstaande goed geconfigureerd.

NGINX
Voor nginx moet in deze lijst https://github.com/nginx/nginx/blob/master/conf/mime.type
image/jxl jxl;
worden toegevoegd.

Apache
Gebruik je Apache dan is het dit bestand https://github.com/apache...runk/docs/conf/mime.types waar geen # voor image/jxl moet staan.

AWS S3
Als je een .jxl bestand hebt geüpload naar S3 kijk dan of de Content-Type header een waarde heeft en of die waarde image/jxl is. Is dat niet zo, pas dit dan aan.
Upload je via script? Kijk dan hier https://stackoverflow.com...oading-to-s3-with-aws-cli

[Reactie gewijzigd door djwice op 20 januari 2026 10:30]

En uiterraard voor CSS heb je ook een image-set dat op dezelfde manier werkt (image/jxl wordt genegeerd als het niet ondersteund is).
.jxl? Junkie XL zal blij zijn met deze onverwachte promotiekans. :*)

YouTube: Intro 3 PM
Of, zoals een aantal CDNs doen, gewoon een .jpg in je html/css, en afhankelijk van de browser de beste afbeelding (jpg/webp/jxl) serveren met de juiste content-type.

Dat is in veel gevallen ook veel eenvoudiger voor de content editors.
Nee joh, dit kan het cms prima oplossen in hun template,content editor upload raw foto en cms zet het om naar optimale resoluties en compressie.

Meeste sites hebben plaatjes in verschillende formaten op basis van resolutie en oriëntatie van het scherm.

Hoef je echt niet op de server te regelen, kan gewoon zoals boven uit je cms komen.

Probeer maar wat plaatjes van je site door https://tinyjpg.com/ te halen, en het resultaat dan nog een paar keer.

[Reactie gewijzigd door djwice op 20 januari 2026 21:12]

Interessant deze codec! Net een beetje mee geexperimenteerd (GIMP). Ik vroeg me af: zou het ook alpha channel ondersteunen. Het antwoord is JA: ik heb een random png met alpha channel genomen (foto).

- png (+alpha): 1,2mb
- jpg (100%): 760kb
- jxl (lossless+alpha): 709kb
- jpg (92%): 200kb
- jxl (compression/maxerror 1.0+alpha): 100kb(!)

Met als kanttekening dat het lastig is om de kwaliteit te vergelijken. Maar ik vind de .jxl van 100kb er beter uitzien dan de .jxl van 200kb.
Zolang Microsoft Photos, WhatsApp en Signal het maar standaard ondersteunen. Niks zo vervelend als een plaatje van een onderdeel of een specifiek product willen sturen naar iemand en eindeloos bezig zijn met een versie te vinden die niet als WebP is geserveerd.
Niks zo vervelend als een plaatje van een onderdeel of een specifiek product willen sturen naar iemand en eindeloos bezig zijn met een versie te vinden die niet als WebP is geserveerd.
Een.webp-bestand kun je hernoemen naar. jpg en dan werkt 't alsnog. Dat klinkt zot maar werkt vaak wél zo.

Dit lijkt natuurlijk zot en het is normaal gesproken ook slecht advies. Maar ik moet zeggen dat het in het geval van .webp ik nog geen een keer tegengekomen dat ik vervolgens bestand niet kon gebruiken. Het is dus minstens iets dat je zou kunnen proberen in geval hier weer tegenaan loopt, tot de ondersteuning for het formaat uitbreidt.

Hoe dit voor JPEG XL gaat zijn weet ik niet.

Edit
Als reactie op de reactie van kdekker
Dat hernoemen werkt alleen als de associatie met de extensie (wat een Windows ding is, die koppelt programma's aan een extensie) naar een programma gaat die ook webp ondersteunt.

Iig jpeg begint met een vaste reeks bytes, waardoor de extensie van een bestand er eigenlijk niet toe doet. Het programma wat geassocieerd is met een extensie moet hoe dan ook de aangeboden bytes aankunnen. Dus hernoemen is meer Windows foppen. Als je zelf een associatie naar een extensie maakt (rechter muistoets in Windows Explorer, 'openen met' kiest, en 'altijd openen' aanvinkt) dan werkt het ook zonder hernoemen. Het is geen magie verder.
Dat spreekt allemaal voor zich en is uiteraard geen magie. Mijn punt is dat ik in het geval van .webp nog nooit een applicatie ben tegengekomen, die na het hernoemen vervolgens niet met het bestand om kan gaan. Dit terwijl de applicatie zelf an sich .webp niet als beschikbaar bestandsformaat ondersteunt.

Vanzelfsprekend kan dat een achterhaald component zijn van de interface, die de .webp-extensie simpelweg nog niet heeft opgenomen máár in tegenstelling tot het hernoemen van willekeurige extensies (.pdf naar .doc bijvoorbeeld) is het bij mij bij .webp dus nog nooit voorgekomen dat het niet werkt. Zowel bij desktop als webapplicaties.

Dat doet mij vermoeden dat er ofwel toch wel een compatabiliylaag in het formaat zit, of dat veel meer programma's .webp ondersteunen zonder dat ze dit adverteren.

De methode van Openen met is hier niet van toepassing, want als ik een bestand wil uploaden in een webapplicatie of als ik een afbeelding wil invoegen als bijlage in een document dan heb ik niets aan de associatie waarmee het bestand wordt geopend.

[Reactie gewijzigd door Eagle Creek op 20 januari 2026 18:14]

Dat hernoemen werkt alleen als de associatie met de extensie (wat een Windows ding is, die koppelt programma's aan een extensie) naar een programma gaat die ook webp ondersteunt.

Iig jpeg begint met een vaste reeks bytes, waardoor de extensie van een bestand er eigenlijk niet toe doet. Het programma wat geassocieerd is met een extensie moet hoe dan ook de aangeboden bytes aankunnen. Dus hernoemen is meer Windows foppen. Als je zelf een associatie naar een extensie maakt (rechter muistoets in Windows Explorer, 'openen met' kiest, en 'altijd openen' aanvinkt) dan werkt het ook zonder hernoemen. Het is geen magie verder.
De vaste reeks bytes die gebruikt worden om bestanden te herkennen worden magic numbers genoemd, dus je zou kunnen zeggen dat het wel magie is ;)
Die truc werkt alleen als het programma allerlei afbeeldingsformaten ondersteunt maar de UI wat (onnodige) tests uitvoert. Bestanden die blind convert/ffmpeg ingegooid worden, doen het prima op die manier.

Een tip die wellicht makkelijker is dan hernoemen: als Verkenner je geen bestand laat kiezen van een bepaald formaat, typ dan "*.webp" of "*.dll" of whatever in het bestandsnaamveld en druk op enter. Dat past de lijkt van geaccepteerde bestandsnamen aan in het selectieveld. Als een WebP hernoemen werkt, verwacht ik dat die truc net zo goed werkt :)
Inderdaad. Mijn camera van 10 jaar oud gaat dit niet meer ondersteunen, maar camera's op mobieltjes moeten toch geüpgrade kunnen worden? Gezien de kleinere bestandsgrootte wel een goot voordeel lijkt me.

Net als Google Photos bijvoorbeeld.
Moderne camera's gebruiken dus al JPEG-XL (of iets wat er sterk op lijkt) in de lossless en lossy compressie van hun RAW formats.

Adobe gebruikt het voor de nieuwe compressie opties in DNG files (waardoor er lossless DNGs gemaakt kunnen worden van raws die echt heel vele kleiner zijn.. maar ja, nog steeds een DNG).

Apple heeft zoiets al gedaan om 'heic' (h265 in een image container) gewoon de standaard te maken. Maar ik denk dat de meeste mensen het nu nog irritant vinden als er opeens standard jpeg-xl gebruikt gaat worden.

maar gooi het als optie er in in camera apps zou ik zeggen.. en maak een viral video van 'top tip voor camera gebruikers, maak deze setting nu!' en kijken wat er dan gaat gebeuren :wink:
Het is dus voor de preview weergave van RAW/DNG in je camera. Het slaat bestanden NIET op als JPEG XL.

Je kan in geen van de camera's van grote fabrikanten (Canon, Sony, Nikon, Fujifilm) kiezen om ipv JPEG, standaard op te slaan als JPEG XL. Je zal dus als RAW/DNG moeten opslaan, en dan op je PC het moeten overzetten.

Wat me ook tegenvalt dat je niet in je Android ook kan kiezen voor "standaard opslaan als JPEG XL". Laten we eerlijk zijn, dat is toch waarmee standaard meeste mensen foto's maken.
nee, dat weet ik, dat zei ik ook niet :). Wel dat de techniek al in de camera's zit.

(En dat if anything het dus juist wel mogelijk moet zijn om ook de plaatjes / previews er in op te slaan).

En ik vond dat ook al jammer dus in het JPEG-XR tijdperk. Ik zag het helemaal zitten. Camera's 'gewoon' JPEG-XR files op laten slaan, in 16bit, met compressie van 98% of zo (wat ze nu ook doen voor JPEG).

Voor de meeste mensen gewoon kant en klaar bruikbare plaatjes straight out of the camera, met 'de look' van je camera maker netjes ingebakken. Maar wel 16 bit, _EN_ met de ongebruikte values na tone-mapping nog steeds < 0% and > 100% beschikbaar in het bestand. Dus daadwerkelijk meer de mogelijkheid voor een goede highlight-pull or shadow-boost. Vanwege het 16-bit ook nog veel ruimte voor witbalans changes.

Wil ik niet mee zeggen dat RAW niet meer nodig is, verre van, ruwe sensor data output is altijd fijn om te hebben als optie. Maar de noodzaak van 'ik pak de raw om edits op te doen' vervalt dan opeens voor een hoop mensen. Helemaal bruiloft-fotografie en andere zaken met een snelle turnaround is het idee van 'out of the box plaatjes' maar met de edit-ruimte van RAW files iets geweldigs.

JPEG-XR maakte ook gebruik van de zelfde soort algoritmes als JPEG. Alleen alles net iets groter of net even met andere defaults en zo. Maar als een apparaat de kracht van voor JPEG was de kans groot dat het JPEG-XR kon (fixed-function hardware even uitgesloten, niet geheel onbelangrijk).
Het is ook niet alsof dit morgen door alles ondersteund moet gaan worden. Geef het een paar jaar, dan ondersteunt alle software het, en dan kan je het bijna overal zonder problemen gebruiken.
Ik dacht, ah, ik moet mijn website nu gaan aanpassen en alle WEBP afbeeldingen vervangen voor JPG XL, maar, toen las ik nog:
"Het optimistische en naar ik hoop ook realistische scenario is dat Chrome en Firefox JPEG XL binnen een jaar volledig ondersteunen", vervolgt Sneyers.
Dus, het duurt nog minstens een jaar.
Want WEBP ondersteuning verdwijnt dan ineens? Overgaan naar JPG XL lijkt mij een keuze die je zelf afweegt.
Je probeert je website altijd de optimaliseren, zodat de afbeeldingen beter worden of sneller kan laden. Ik neem aan dat je zelf ook niet meer flash zou gebruiken?
Bijzonder kromme vergelijking. WEBP wordt gewoon goed ondersteund en blijft voorlopig ook nog wel even goed ondersteund. Flash is oud, onveilig en is zelfs volledig verwijderd uit chrome.

Natuurlijk wil je je website zo goed mogelijk maken. Maar de afweging of de moeite die je erin stopt opweegt tegen het resultaat is mijns inziens ook belangrijk.

[Reactie gewijzigd door Archcry op 20 januari 2026 09:05]

Als de kwaliteit veel beter is bij gelijke grootte, dan is het wel de moeite waard, zeker bij fotografie portfolio’s etc. Je wilt dan zo snel mogelijk overstappen, maar moet dan wel ondersteund worden. Ik las dat AVIF oog goed is, maar niet door alle browsers wordt ondersteund, dus is WEBP op dit moment nog de beste keuze. WEBP zijn wel kleine bestanden, maar ik zie wel compressie-artefacten (zelfs bij zogenaamd lossless), dus elke verbetering zou mooi zijn.
Als je compressie-artefacten ziet in lossless compressed bestanden zijn ze dus niet lossless compressed. Of heb jij soms ook schade als je een zip file uitpakt, want dan is je cpu of ram gewoon stuk.

Welke compressietechniek je wilt gebruiken hangt af van de content. Lossy kan heel goed werken op grafische of audio zaken. Lossless is juist nuttiger voor zaken die inhoudelijk niet mogen veranderen (text, programma's). Voor afbeeldingen geldt: hoge entropy (fotos) => webp, jpeg of dus jxl, lage entropy en of transparancy (illustraties, diagrammen) => png / webp. Daarbij kent webp zowel lossy als lossless opties, en transparantie, iets dat jpeg niet kent (maar jxl weer wel)
Ik gebruik Imagify wordpress plugin, en zie bij lossless compression nog steeds banding-artefacten. Maar, zal ook eens kijken naar een andere plug-in om het te optimaliseren. Ik dacht niet dat er iets mis is met mijn CPU. Kan dat ook wel eens testen.
Als je originele foto's meer dan 8 bit per kanaal gebruiken dan krijg je banding want WebP ondersteunt maar maximaal 8 bit per kanaal.

Of er is conversie van het kleuren profiel. WebP ondersteunt wel ICC-profielen maar wellicht dat het standaard naar sRGB wordt geconverteerd en hebben je originele foto's een ander kleuren profiel.

Bovenstaande zijn beide een conversie voor de lossless compression al zou de plug-in je daar wel voor moeten waarschuwen.

Of die plug-in werkt niet goed.
Flash is dan ook om goede redenen volledig afgeschreven, WebP niet.
Niks mis met overgaan naar JPG XL, maar denk dat @bapemania wilt zeggen dat je dat echt niet binnen dat jaar hoeft te doen.
Het zou juist beter zijn om het later te doen, zodat je oudere browsers ook nog ondersteund zeker met hoe het allemaal is verlopen. Laat het zich eerst maar bewijzen.
Zeker geen Flash meer want dat wordt ook niet ondersteund. Maar ik zou me pas bezig houden met het ombatterijen van een website wanneer bekend wordt dat ondersteuning van bepaalde zaken, in dit geval WEBP, gaat verdwijnen. Dan wordt het "moeten", nu is het gewoon een keuze om met de tijd mee te gaan of omdat je enorme voordelen ziet in JPG XL, zo enorm dat je ervoor aan het werk wil.
eerlijk gezegd ken ik het niet anders dan dat er iets tussen zit wat kijkt naar de accept headers om het beste formaat te sturen. Dus niet alles in zomaar 'webp', alles is 'original source' en wordt naar verschillende versies / resoluties omgezet en per device aangeboden wat werkt.
Het progressief kunnen laden lijkt me wel een beduidend voordeel om te switchen
Alleen bij hele specifieke toepassingen. Misschien handig bij een feed zoals op Facebook, maar de gemiddelde website staat in 1 tot 2 seconden klaar en dan heeft een tijdelijk plaatje laten zien vrij weinig zin.

In Nederland hebben we in ieder geval zelden dusdanig langzaam internet dat dit noodzaak is, hooguit in hele achtergestelde landen. Maar gek genoeg is het internet daar soms nog best wel snel.
hier op het Franse platteland waar ik zit zou dat in ieder geval welkom zijn max 750 KB per seconde (en nee dat is geen tikfout)
Deze pagina is 1.5MB inclusief media, dus dan ben je nog steeds in 2 seconden klaar ;)

Maar ik snap je punt, niet elke site is zo absurd geoptimaliseerd als Tweakers natuurlijk.
exact hopelijk met 2 maanden glavezel hier dus dan maakt het allemaal ook niet zoveel meer uit maar ga dit altijd nog wel prettig vinden denk ik mocht ik oot ergens zitten waar de verbinding ook slecht is
Je kan ook gewoon JPEG XL met fallback naar WebP en oud JPEG/PNG doen, net als met WebP nu.
Ja, deze optie zou er zijn. Ik zal eens kijken hoe dat werkt. Ik gebruik een Bridge Theme, daar zal het misschien ook mee moeten kunnen.
Als je op je website een <picture> element gebruikt, kun je de afbeeldingen naar allerlei formaten converteren (jpeg-xl, avif, webp, gewone jpeg) en de browser kiest automatisch de eerste die ondersteund wordt. Je kunt zelfs nog mediaqueries toevoegen (width >= 600px) zodat je mobiele telefoons een gecomprimeerdere versie van dezelfde afbeelding kunt serveren dan desktops met 4K-schermen.

Sommige websites doen dit ook al met JPEG-XL. Als je nu een JPEG-XL-capabele browser opstart, krijg je automatisch het voordeel.

Allemaal zonder een regel Javascript. Het enige wat je hoeft te doen is de bestanden converteren naar de formaten die je specifiek wilt ondersteunen en je HTML ernaar laten verwijzen.
En de ondersteuning in Safari is beperkt: geen animatie, geen progressief laden.
Kan iemand mij even helpen die titel te begrijpen?

"Google is om: waarom JPEG XL alsnog de standaard voor het web wordt"

"Google is om" ... waar slaat dit op?
"Om zijn" (zonder voorwerp) in de betekenis "van mening veranderd zijn, overstag gaan".
Via deze een officieuze +1 :).

Simpele ik heeft weer bijgeleerd. thx!
Letterlijk wellicht een afkorting van omgepraat en/of omgeluld.
geen idee waarom je een 0 krijgt, Ik had dezelfde vraag nl.
lijkt me een typisch Nederlandse uitdrukking te zijn die we in België niet kennen
Gaaf artikel! Dank je wel!
Dankjewel voor het compliment! :)
Graag gedaan, merci om er iets leuks van te maken!

Anekdote: Jon was postdoc aan de KU Leuven toen hij zich op beeldcompressie wierp. Zijn postdocbeurs ging echter over iets helemaal anders in het domein van declaratieve programmeertalen. Geld duidelijk slecht besteed door de overheid! ;)
Een afbeelding van 30KB terugbrengen naar 20KB levert een relatieve winst van 50 procent. Dat geldt ook voor een afbeelding van 300KB tot 200KB comprimeren, maar de absolute winst is daar natuurlijk veel groter."
Misschien is het te vroeg maar zou dit reëel gezien niet 33% moeten zijn? 50% klinkt mooier en is niet fout door het woord 'relatief' maar het gaat hier over reductie 30->20 (33%) niet over groei 20->30 (50%)
Da’s inderdaad waarschijnlijk fout vertaald. De 50% heeft waarschijnlijk betrekking op een andere verhouding als de grootte, bij 1/30 naar 1/20 is er wel een 50% verbetering.
Daar hebben we allemaal overheen gelezen. :o Ik pas het aan, dank voor de oplettendheid!
Is het gewoon een extra formaat dat er ondersteund gaat worden of zijn er ook nog eens substantiële performance winsten mee gemoeid?
Niet lullig bedoeld, maar: heb je het artikel ook gelezen? Er staat letterlijk in wat het beter kan dan andere formaten. Inclusief performancewinst omdat het parallel decodable is.

Sowieso is er bijna nooit sprake van "gewoon een extra formaat". Het stikt weliswaar van de bestandsfomaten, maar juist omdat er voor zoiets als het web brede ondersteuning nodig is komen er niet zo vaak nieuwe formaten voor plaatjes bij tenzij ze een specifiek gat vullen -- veel betere compressie, features als transparantie of progressieve decoding, animatie. PNG adoptie duurde ook een hele tijd, maar het was zoveel beter voor lossless dan de alternatieven (GIF en BMP) dat het nu gemeengoed is.
Gezellige reactie gezien je zelf ook een belangrijk stuk gemist lijkt te hebben. Er wordt ook in het artikel geschreven dat JPEG-XL een zware codec is die moeilijk in hardware versnelt kan worden. Dus ik vind het een hele realistische vraag dan of een wat efficientere encoding het echt waard is dat het zwaarder is voor een apparaat om te verwerken. Dat ligt aan de verhouding tussen die twee natuurlijk.

Het parallel decoderen lijkt mij een beetje een non-issue zelf: Als dit nodig is om één afbeelding op je scherm te tonen, dan is belangrijke natuurlijk niet dat je het op 8-cores kan decoderen, maar dat je 8-cores nodig hebt om het in een beetje fatsoenlijke snelheid te kunnen decoderen. Als je een hele reeks afbeeldingen hebt die getoond moeten worden terwijl je volle snelheid erdoorheen scrollt, dan kan je ook met JPEG of WEBP het parallel doen, gewoon meerdere afbeeldingen tegelijk afhandelen op verschillende cores.
Dus ik vind het een hele realistische vraag dan of een wat efficientere encoding het echt waard is dat het zwaarder is voor een apparaat om te verwerken
En als die vraag gesteld was, met enige indicatie dat het artikel bekeken was, was mijn reactie ook wel anders geweest. :P

Parallel decoden lijkt me inderdaad minder relevant voor het web en handiger voor het bewerken van grote afbeeldingen, maar dat is niettemin winst. Daarnaast kun je bij "parallel" ook denken aan zeg 2 cores in plaats van gelijk alles, en kan het parallel decoderen van een enkele afbeelding een stuk makkelijker gaan in termen van synchronisatie dan parallel verschillende plaatjes decoderen die op verschillende punten in het document staan.

[Reactie gewijzigd door MneoreJ op 20 januari 2026 08:35]

Dat wordt toch goed uitgelegd in het artikel? Ja, er is veel winst te boeken:

"Verder kan JPEG XL parallel worden geëncodeerd en gedecodeerd. Dat betekent dat een cpu de workload over meerdere rekenkernen kan verdelen om de taak sneller uit te voeren. "Dat is niet volledig lineair, maar het scheelt niet veel", zegt Sneyers. "Als je acht cores hebt, gaat het ongeveer zeven keer zo snel. Dat maakt wel een groot verschil. JPEG en WebP hebben dat voordeel niet."
~20-50% kleinere afbeeldingen bij dezelfde kwaliteit, dus snellere laadtijden voor websites met veel foto's.
Heb je het artikel wel gelezen?

Om te kunnen reageren moet je ingelogd zijn