Patu

AVIF vs WebP vs JPEG : des chiffres réels à qualité égale

La plupart des affirmations du type « AVIF est 50 % plus léger que JPEG » comparent un JPEG en qualité 75 à un AVIF réglé autrement. Ce n’est pas une comparaison : un -q 75 chez un encodeur ne donne pas la même image qu’un -q 75 chez un autre. La seule question honnête est : à qualité perceptuelle fixe, combien d’octets chaque format demande-t-il ?

Nous l’avons mesuré. Pas sur une poignée d’images vitrines, mais sur 1,900+ photographies réelles, avec les encodeurs réels, notées par une métrique perceptuelle plutôt que par un chiffre de qualité deviné.

Comment nous l’avons mesuré

Ce dernier point compte : comparer cwebp -q 80 à avifenc -q 80 n’a pas de sens. Comparer « le WebP qui a l’air aussi bon que l’AVIF », c’est tout l’enjeu.

Les chiffres

À ssimulacra2 85 (qualité élevée, difficile à distinguer de l’original), sur les 548 photos où les quatre formats l’atteignent :

Format Médiane par photo vs JPEG
JPEG (libjpeg-turbo) 833 KB —
WebP 708 KB −16%
AVIF 605 KB −28%
JPEG XL 553 KB −33%

À qualité égale, AVIF est 16 % plus léger que WebP, et les deux devancent nettement JPEG.

À ssimulacra2 80 (bonne qualité, une cible web courante), sur 1,884 photos :

Format Médiane par photo vs JPEG
JPEG 510 KB —
WebP 471 KB −11%
AVIF 368 KB −29%
JPEG XL 351 KB −32%

L’avance d’AVIF se creuse à 80 (−29% vs JPEG, −21% vs WebP) : il conserve le détail à des débits plus faibles, là où JPEG et WebP commencent à craquer.

Ces chiffres concordent avec la littérature indépendante : un AVIF environ 25–30% sous JPEG à qualité équivalente est un résultat largement reproduit. Ce que cette mesure apporte, c’est qu’elle est perceptuelle, à qualité égale, sur un grand jeu de photos non trié pour l’occasion.

Les réserves, sans détour

Ce que ça change en pratique

Servez de l’AVIF avec un repli WebP puis JPEG, et visez un score perceptuel, pas un chiffre de qualité. Un -q fixe produit une qualité incohérente d’une image à l’autre : certaines sur-compressées et visiblement dégradées, d’autres inutilement lourdes. Chercher la qualité d’encodage de chaque image pour atteindre un score ssimulacra2 cible, c’est ce qui donne à la fois les octets les plus faibles et une qualité que vous pouvez réellement garantir.

C’est ce que fait Patu : il cherche la qualité d’encodage propre à chaque image pour atteindre une cible perceptuelle, et renvoie de l’AVIF et du WebP avec un repli JPEG, derrière un CDN. Les chiffres ci-dessus expliquent pourquoi le défaut est AVIF en premier.

curl -X POST "https://patu.dev/v1/compress?formats=avif,webp,fallback&target=85" \
  -H "X-Api-Key: $PATU_KEY" \
  --data-binary @photo.jpg -o photo.avif

Vous lui donnez une qualité cible ; il vous rend le fichier le plus léger à cette qualité, dans les formats qu’un navigateur sait effectivement utiliser.


Méthode et données : le harnais de benchmark Patu sur la catégorie photo ; ssimulacra2 via l’implémentation rust-av ; encodeurs libjpeg-turbo, libwebp, libaom, libjxl dans leurs versions publiées. Les tailles sont la médiane sur les photos où chaque format atteint le score cible.