Retour au blog Performance Web - 7 min

Optimiser ses images avec les formats WebP et AVIF

WebP et AVIF allègent les photos s’il existe un fichier de repli. La balise picture et les dimensions évitent une image cassée ou décalée.

WebP et AVIF sont des formats d’image compressés, prévus pour remplacer un JPEG ou un PNG trop lourd dans la page. AVIF, à qualité visuelle proche, produit en général un fichier plus petit que WebP, qui lui-même est plus petit que le JPEG d’origine. Le gain ne compte que si le navigateur sait décoder le fichier, si la balise HTML propose un repli, et si vous n’avez pas oublié les dimensions. Sinon vous échangez des kilo-octets contre une image cassée ou un décalage de mise en page.

Proposer trois fichiers, pas un seul

Ne remplacez pas le JPEG par un AVIF unique dans le src. Écrivez un élément picture qui annonce les types dans l’ordre de préférence, et terminez par un img :

``html <picture> <source type="image/avif" srcset="photo.avif"> <source type="image/webp" srcset="photo.webp"> <img src="photo.jpg" alt="Atelier" width="800" height="450"> </picture> ``

Le navigateur prend la première source qu’il sait lire. Les autres ne sont pas téléchargées. L’img reste obligatoire : c’est lui qui porte le texte alternatif, la largeur, la hauteur, et le fichier de repli.

Gardez les mêmes pixels d’affichage d’une version à l’autre. Un AVIF recadré autrement que le JPEG décale la page selon le navigateur. Pour les écrans denses, ajoutez un srcset avec une variante plus large, plutôt que d’envoyer la photo de 4000 pixels à tout le monde. La largeur réelle dans la mise en page se déclare avec sizes, sinon le navigateur choisit souvent la plus grande variante.

Les réglages d’encodeur se choisissent à l’œil sur quelques photos représentatives, pas avec un pourcentage magique. Un palier courant est de partir d’une qualité AVIF autour de 50 et d’une qualité WebP autour de 75, puis de monter si les aplats ou les visages cassent. Ce sont des points de départ d’outil, pas des scores de page.

Dimensions, priorité, cache

Indiquez width et height sur l’img, ou réservez le ratio en CSS. Sans ça, le navigateur ne connaît la place de l’image qu’une fois le fichier lu, et le texte se déplace. Ce décalage est le CLS, l’un des signaux de terrain décrits dans l’article RUM et laboratoire.

L’image qui constitue le plus grand affichage au chargement (souvent le visuel d’en-tête) ne doit pas porter loading="lazy". Les images plus bas dans la page, si. Le lazy-loading sur l’image principale retarde justement l’élément que le navigateur devrait afficher en premier. Un fetchpriority="high" sur cette image-là est cohérent. Le poser sur toutes les images annule le tri.

Côté serveur, envoyez le bon Content-Type (image/avif, image/webp) et un cache long sur l’URL du fichier, avec un nom qui change quand le fichier change. Si vous négociez le format avec l’en-tête Accept au lieu d’un picture, le cache doit varier sur Accept. Sinon un premier visiteur en WebP fait mettre en cache un fichier qu’un visiteur suivant reçoit à tort. L’élément picture évite cette classe de bugs : chaque URL est un seul format.

Ce qu’on ne convertit pas

  • Les SVG d’interface, déjà adaptés.
  • Les images qui doivent rester au pixel près (capture annotée, schéma technique) : testez, ou gardez un PNG.
  • Une animation : un GIF converti en une seule image fixe n’est pas une optimisation, c’est une régression. AVIF et WebP animés existent, mais il faut vérifier le lecteur.
  • La même photo répétée en vingt variantes d’URL sans cache : le format ne corrige pas une génération à la volée trop lente. Le temps jusqu’au premier octet de l’image se mesure à part. Si ce délai est le sujet, l’article sur les causes d’une page lente commence par là, avant le choix du codec.

SiteGarde ne choisit pas le format de vos images. Il peut seulement signaler qu’une URL d’image commence à répondre autre chose qu’un succès. Le poids et le format se jugent dans le navigateur et dans un essai de laboratoire, pas dans un code HTTP 200.

Questions fréquentes

Faut-il choisir AVIF ou WebP ?

Les deux, dans cet ordre de préférence : AVIF d’abord, WebP ensuite, JPEG ou PNG en dernier recours. AVIF est en général plus léger. WebP couvre les navigateurs qui n’affichent pas AVIF.

Une image AVIF sans repli est-elle suffisante ?

Non. Un navigateur qui ne décode pas AVIF n’affiche rien si vous ne proposez que ce fichier. L’élément img final doit pointer vers un format plus largement compris.

Faut-il convertir les logos et les icônes ?

Non quand ils sont déjà en SVG. SVG reste net à toute taille et souvent plus léger qu’une photo recadrée. AVIF et WebP visent les photos et les illustrations bitmap.

Surveiller mes URL