Développement web
Optimisation des images web : protocole vérifiable, formats, LCP et qualité perceptive
Optimiser une image ne consiste pas à viser le fichier le plus petit. La méthode relie la ressource réellement sélectionnée à sa fonction, sa boîte CSS, sa densité d’affichage, sa qualité perceptive, sa preuve réseau et son accessibilité.
- 12 domaines De la source au suivi terrain.
- 36 contrôles Identifiants IMGxx et preuves attendues.
- 4 statuts Non testé n’est jamais conforme.
- 1 cas réel Défaut Edikka figé, mesuré et corrigé.
Réponse courte
Une image web est optimisée lorsque le navigateur reçoit le plus petit fichier suffisant, sans perdre le sens, la netteté ni la stabilité.
Le poids seul ne suffit pas. Une image de 5 Ko peut être une réussite sur une vignette et un échec sur un écran haute densité. À l’inverse, un fichier plus lourd peut être le bon choix s’il est l’élément LCP, s’affiche en grand et conserve des détails essentiels. La décision relie donc six variables : rôle, dimensions rendues, densité de pixels, format, qualité perceptive et moment de chargement.
Le Web Almanac 2025 observe que les images constituent l’élément LCP sur 85,3 % des pages desktop et 76 % des pages mobile de son échantillon. Son chapitre sur le poids des pages relève environ 1 059 Ko d’images au desktop et 911 Ko au mobile pour la page médiane. Ce sont des repères de contexte, pas des budgets à copier.
Cas réel · Edikka
Cette page ne respectait pas sa propre recommandation : nous avons figé le défaut avant de le corriger.
Le 22 août 2026, l’image principale publique de cet article sélectionnait un AVIF de 600×400 px et 4 794 octets. L’élément HTML ne proposait ni srcset ni sizes, alors que l’image occupait jusqu’à environ 445 px CSS dans la mise en page desktop. Sur un écran à densité 2, la définition utile approchait donc 890 px. Le chargement était correctement priorisé — loading="eager", fetchpriority="high" — mais la ressource sélectionnée pouvait manquer de définition.
Nous avons comparé cet AVIF à son propre master JPEG conservé en 1000×667, redimensionné en 600×400 avec Lanczos pour isoler l’encodage. Le score SSIMULACRA2 obtenu est 62,4404. La nouvelle édition change aussi de direction visuelle : ses dérivés sont donc comparés à un nouveau master PNG 1536×1024, jamais directement à l’ancien visuel. Ces deux séries établissent la fidélité de chaque encodage à sa propre référence ; elles ne constituent pas un test A/B artistique.
| État | Candidat AVIF | Poids | SSIMULACRA2 | Décision |
|---|---|---|---|---|
| Avant | 600×400 | 4 794 octets | 62,4404 | Non conforme à la politique premium publiée. |
| Après · compact | 600×400 | 22 502 octets | 83,4109 | Dérivé fidèle à son nouveau master, pour les petites boîtes. |
| Après · DPR 2 | 900×600 | 41 533 octets | 81,4102 | Candidat ciblé pour une boîte de 445 px à densité 2. |
| Après · plafond | 1000×667 | 48 660 octets | 80,6031 | Définition maximale servie sans exposer le master PNG. |
Les scores avant/après ne sont pas soustraits, car les masters et la création visuelle diffèrent. Le rejeu de production ci-dessous établit la sélection responsive, l’absence de débordement et des mesures de laboratoire datées ; il ne remplace ni les données terrain au 75e percentile, ni une revue humaine sur l’ensemble des écrans. Edikka est l’auteur de la méthode et le site audité : ce n’est pas un benchmark indépendant.
Consulter l’auto-audit JSON, les hashes et le protocole de mesure.
Preuve de production · 23 août 2026
Huit couples viewport × DPR confirment le choix des candidats responsives, sans débordement horizontal.
Le protocole a été rejoué sur la page publique avec Playwright, de 390 à 1440 px et de DPR 1 à DPR 2. Chaque scénario conserve l’URL finale, le statut HTTP, la boîte CSS, currentSrc, les dimensions naturelles, les octets transférés, le nombre de contrôles visibles et les erreurs de console. Les candidats réellement observés sont les AVIF de 600×400 et 900×600 : le navigateur ne télécharge donc pas systématiquement le plus grand fichier disponible.
Le même état public a été mesuré avec Lighthouse. En laboratoire, le profil mobile obtient 99/100 en performance, 100/100 en accessibilité et un LCP à 1,9 s ; le profil desktop obtient 100/100 en performance et un LCP à 0,4 s. Ces valeurs décrivent un passage daté, sans cache utilisateur ni distribution terrain.
| Contexte | Viewport | DPR | Boîte CSS | Candidat choisi | Octets |
|---|---|---|---|---|---|
| Mobile | 390×844 | 1 | 354×236 | 600×400 AVIF | 22 502 |
| Mobile haute densité | 390×844 | 2 | 354×236 | 900×600 AVIF | 41 533 |
| Tablette | 800×900 | 1 | 764×509 | 900×600 AVIF | 41 533 |
| Desktop haute densité | 1440×1000 | 2 | 445×297 | 900×600 AVIF | 41 533 |
Le rejeu a aussi détecté un jeton expérimental tools=(self) dans l’en-tête Permissions-Policy. Il n’affectait pas la sélection des images ; son retrait est inclus dans la livraison du 23 août. La preuve conserve ce constat au lieu de l’effacer.
Télécharger le rejeu JSON, ses assertions, ses métriques et les commandes de reproduction.
Niveaux de preuve
Un rapport réseau, une mesure terrain et un jugement visuel ne prouvent pas la même chose.
| Niveau | Établit | Ne suffit pas à établir | Exemples |
|---|---|---|---|
| HTML public | Attributs, candidats, dimensions, alternative textuelle et découvrabilité initiale. | Le fichier réellement choisi dans chaque contexte. | srcset, sizes, alt, width, height. |
| Navigateur | Ressource sélectionnée, octets, priorité, rendu, DPR et chronologie réseau. | L’expérience de l’ensemble des utilisateurs. | currentSrc, Resource Timing, waterfall. |
| Terrain | LCP et CLS au 75e percentile lorsque les données sont disponibles. | La cause exacte d’une régression. | CrUX, Search Console, RUM. |
| Pipeline | Dimensions, formats, métadonnées, poids, provenance et non-régression. | Le sens éditorial et la qualité artistique. | CI, hashes, encodeur, SSIMULACRA2. |
| Revue humaine | Lisibilité, cadrage, artefacts gênants et adéquation à la marque. | La performance terrain sans instrumentation. | Comparaison 1 :1, mobile, écran haute densité. |
Méthode Edikka · version 1.1
La grille couvre 12 domaines et 36 contrôles sans produire de score agrégé trompeur.
Chaque contrôle possède un identifiant stable IMGxx, une méthode, une preuve attendue, un accès requis, une sévérité et un niveau d’automatisation. Les statuts sont limités à Non testé, Conforme, Non conforme et Non applicable. Une image décorative sans alternative textuelle pertinente n’est pas « moins bonne » qu’une image informative : elle répond à une autre décision.
Le protocole n’additionne pas les lignes. Un alt vide sur une image fonctionnelle, une image LCP lazy loadée ou un traceur tiers déclenché avant consentement peuvent bloquer une publication même si tous les autres contrôles réussissent.
| ID | Domaine | Question | Méthode | Preuve attendue | Sévérité | Automatisation |
|---|---|---|---|---|---|---|
IMG01 | Inventaire et rôle | Chaque image visible est-elle inventoriée avec son URL finale, son gabarit et son rôle ? | Extraire les éléments img, picture, SVG et images CSS des gabarits prioritaires ; dédupliquer par URL finale. | Inventaire daté avec URL de page, currentSrc, rôle et propriétaire. | Majeur | Partiel |
IMG02 | Inventaire et rôle | Le rôle de chaque image est-il qualifié : LCP, contenu, décor, interface, social ou donnée ? | Comparer position, contexte et fonction ; ne pas déduire le rôle du seul nom de fichier. | Rôle contrôlé et justification courte pour chaque image prioritaire. | Majeur | Non |
IMG03 | Inventaire et rôle | Les images critiques possèdent-elles un propriétaire et une date de revue ? | Relier chaque famille à un responsable éditorial, design ou technique. | Propriétaire, dernière revue et prochaine échéance. | Mineur | Partiel |
IMG04 | Master, cadrage et art direction | Un master suffisamment défini et non réencodé en chaîne est-il conservé hors production ? | Comparer dimensions et hash du master avec les dérivés ; relever les générations successives. | Master identifié, hashé et versionné. | Majeur | Partiel |
IMG05 | Master, cadrage et art direction | Le point focal et le cadrage restent-ils lisibles dans chaque gabarit ? | Rejouer desktop, tablette et mobile ; contrôler le sujet, le texte intégré et les zones de respiration. | Captures aux largeurs de référence et validation humaine. | Majeur | Non |
IMG06 | Master, cadrage et art direction | Une variante d’art direction existe-t-elle lorsque le simple redimensionnement détruit la composition ? | Comparer le même cadrage réduit avec une variante dédiée via picture/media. | Décision documentée : même cadrage ou variante dédiée. | Mineur | Non |
IMG07 | Dimensions responsives | Les candidats srcset couvrent-ils les largeurs réellement rendues et les écrans haute densité sans surdimensionnement majeur ? | À cache froid, relever la largeur CSS rendue et le DPR, identifier currentSrc, puis mesurer directement la largeur en pixels du fichier sélectionné sans utiliser naturalWidth comme largeur encodée. Calculer couverture = largeur du fichier / (largeur CSS × DPR) et comparer ce résultat au seuil versionné du rôle. | currentSrc, largeur CSS, DPR, dimensions réelles du fichier sélectionné, méthode de mesure, taux de couverture et seuil applicable. | Majeur | Partiel |
IMG08 | Dimensions responsives | L’attribut sizes décrit-il la mise en page réelle ? | Comparer sizes avec les largeurs calculées du conteneur sur les breakpoints documentés. | Valeurs sizes, boîte rendue et ressource choisie. | Majeur | Partiel |
IMG09 | Dimensions responsives | Le navigateur sélectionne-t-il le plus petit candidat suffisant dans les scénarios testés ? | Rejouer viewport, DPR et cache froid ; relever currentSrc et octets transférés. | Matrice viewport × DPR × currentSrc × octets. | Majeur | Oui |
IMG10 | Formats et replis | Le format correspond-il au type de contenu : photo, transparence, capture, illustration, vectoriel ou animation ? | Qualifier le contenu puis comparer au format livré et aux contraintes de fidélité. | Type visuel, format principal et justification. | Mineur | Partiel |
IMG11 | Formats et replis | Chaque source moderne possède-t-elle un repli cohérent lorsque le périmètre de compatibilité l’exige ? | Inspecter picture/source/img et tester l’ordre de sélection. | Arbre picture et politique de compatibilité versionnée. | Majeur | Oui |
IMG12 | Formats et replis | Le type MIME, l’extension et les octets servis sont-ils cohérents ? | Comparer Content-Type, URL et signature du fichier. | En-tête HTTP et identification binaire. | Majeur | Oui |
IMG13 | Compression et qualité perceptive | Le poids est-il mesuré par candidat et non par nom de fichier ou estimation ? | Relever encodedBodySize et transferSize sur cache froid. | Octets encodés et transférés par ressource. | Majeur | Oui |
IMG14 | Compression et qualité perceptive | La qualité perceptive est-elle contrôlée contre un master explicite ? | Comparer à taille identique avec SSIMULACRA2 ou métrique documentée, puis revue humaine des zones sensibles. | Master, encodeur, version, paramètres, score et captures 1 :1. | Majeur | Partiel |
IMG15 | Compression et qualité perceptive | La politique interdit-elle les réencodages successifs à partir d’un dérivé ? | Tracer la provenance des fichiers et imposer la génération depuis le master. | Graphe de provenance ou règle de pipeline. | Majeur | Partiel |
IMG16 | Découverte et priorité LCP | L’image LCP est-elle découvrable dans le HTML initial sans dépendre d’un script tardif ? | Inspecter la réponse HTML avant exécution et la requête initiatrice. | HTML initial et initiator de la requête. | Bloquant | Oui |
IMG17 | Découverte et priorité LCP | L’image LCP évite-t-elle loading=lazy et reçoit-elle une priorité adaptée ? | Inspecter loading, fetchpriority, preload et ordre réseau. | Attributs et waterfall daté. | Bloquant | Oui |
IMG18 | Découverte et priorité LCP | Le preload responsive, s’il existe, correspond-il au srcset et au sizes rendus ? | Comparer imagesrcset/imagesizes du preload aux candidats de l’image. | Lien preload et élément image cohérents, sans double téléchargement. | Majeur | Oui |
IMG19 | Chargement et décodage | Les images hors écran utilisent-elles le lazy loading sans créer de trou visuel ? | Contrôler loading, distance au viewport et instant de requête lors du défilement. | Attribut, position et chronologie réseau. | Mineur | Partiel |
IMG20 | Chargement et décodage | Le mode de décodage est-il cohérent avec la criticité et testé sur le rendu réel ? | Relever decoding et vérifier l’impact visuel ; ne pas présenter async ou sync comme une règle universelle. | Attribut et observation du rendu. | Information | Partiel |
IMG21 | Chargement et décodage | Les carrousels, galeries et images injectées réservent-ils leur espace avant le chargement ? | Rejouer cache froid et interactions ; observer les changements de mise en page. | Trace CLS et capture du composant. | Majeur | Partiel |
IMG22 | Dimensions et stabilité | Width et height décrivent-ils le ratio intrinsèque du candidat ou du fallback de référence ? | Comparer attributs, dimensions décodées et ratio rendu. | Dimensions HTML, naturelles et ratio calculé. | Majeur | Oui |
IMG23 | Dimensions et stabilité | L’espace est-il réservé avant le téléchargement sur tous les breakpoints ? | Désactiver le cache, ralentir le réseau et observer la boîte avant décodage. | Capture avant chargement et CLS de laboratoire. | Majeur | Partiel |
IMG24 | Dimensions et stabilité | Le recadrage CSS conserve-t-il un ratio et un point focal explicites ? | Inspecter aspect-ratio, object-fit, object-position et dimensions du conteneur. | Styles calculés et captures par breakpoint. | Mineur | Partiel |
IMG25 | Accessibilité et sens | Chaque image informative possède-t-elle une alternative textuelle qui transmet sa fonction dans le contexte ? | Appliquer l’arbre de décision W3C ; comparer alt, texte adjacent et fonction. | Décision informative, fonctionnelle, complexe ou décorative. | Bloquant | Non |
IMG26 | Accessibilité et sens | Les images décoratives sont-elles ignorées par les technologies d’assistance ? | Contrôler alt vide ou technique équivalente sans dupliquer le contexte. | DOM accessible et lecture au lecteur d’écran. | Majeur | Partiel |
IMG27 | Accessibilité et sens | Les graphiques, schémas et captures complexes disposent-ils d’une description ou de données équivalentes ? | Vérifier figcaption, description longue, tableau de données ou texte adjacent. | Alternative complète accessible depuis le même contexte. | Majeur | Non |
IMG28 | SEO image et découvrabilité | Les images importantes sont-elles présentes dans un élément img src, éventuellement à l’intérieur de picture ? | Comparer images visibles, HTML et ressources CSS. | URL découvrable dans le HTML et contexte éditorial. | Majeur | Oui |
IMG29 | SEO image et découvrabilité | Nom, alt, légende et texte adjacent décrivent-ils le même sujet sans bourrage de mots-clés ? | Revue sémantique croisée du fichier, de l’alternative et du paragraphe. | Concordance documentée et absence de répétition artificielle. | Mineur | Non |
IMG30 | SEO image et découvrabilité | Le CDN, le sitemap image et les données structurées utilisent-ils des URL accessibles et cohérentes ? | Vérifier statut, canonique d’image, propriété Search Console si domaine distinct, sitemap et primaryImageOfPage. | URL finale, statut, propriété vérifiée et nœud ImageObject cohérent. | Majeur | Partiel |
IMG31 | HTTP, cache et confidentialité | Les images publiques utilisent-elles une politique de cache compatible avec leur versionnement ? | Inspecter Cache-Control, ETag, Age et nommage immuable. | En-têtes HTTP et règle d’invalidation. | Majeur | Oui |
IMG32 | HTTP, cache et confidentialité | Les métadonnées sensibles ou inutiles sont-elles retirées des dérivés ? | Inspecter EXIF, XMP, profils et coordonnées ; conserver seulement ce qui est nécessaire. | Rapport de métadonnées avant/après. | Majeur | Oui |
IMG33 | HTTP, cache et confidentialité | Les images tierces respectent-elles consentement, CSP, CORS et politique de referrer attendus ? | Rejouer avant/après consentement et inspecter origine, cookies, CSP et referrer. | Waterfall, en-têtes et décision juridique/technique. | Bloquant | Partiel |
IMG34 | Mesure, CI et gouvernance | Les budgets de dimensions, poids et qualité sont-ils versionnés par type d’image ? | Définir des plafonds par gabarit et des planchers de qualité perceptive comme garde-fous, non comme vérité universelle. | Fichier de configuration versionné et exception justifiée. | Majeur | Oui |
IMG35 | Mesure, CI et gouvernance | La CI échoue-t-elle sur les régressions bloquantes et publie-t-elle les preuves ? | Rejouer dimensions, formats, métadonnées, poids, candidats et liens ; archiver le rapport. | Commande, code de sortie, rapport horodaté et propriétaire. | Majeur | Oui |
IMG36 | Mesure, CI et gouvernance | Les données terrain, laboratoire et perceptives restent-elles séparées dans la décision ? | Reporter LCP/CLS terrain, diagnostic lab et revue visuelle dans trois colonnes distinctes. | Tableau de décision sans score agrégé trompeur. | Majeur | Partiel |
IMG07–IMG09
La bonne largeur dépend de la boîte CSS et du DPR, pas de la largeur du téléphone.
Une première approximation utile est : largeur du fichier nécessaire ≈ largeur rendue × DPR. Une image affichée à 445 px sur un écran 2× appelle environ 890 px. Ce calcul ne constitue pas un ordre absolu : la texture, le niveau de zoom, le format et la qualité modifient la perception. Il évite néanmoins deux erreurs opposées : servir 2000 px à une vignette de 240 px, ou 600 px à une héroïne de 445 px sur écran Retina.
Dans un descripteur en largeur, chaque valeur de srcset doit décrire la largeur réelle du fichier. sizes décrit ensuite l’espace que l’image occupe dans la mise en page. Le navigateur combine viewport, DPR et candidats pour choisir une ressource ; il peut conserver un candidat déjà en cache.
<picture>
<source
type="image/avif"
srcset="visuel-600.avif 600w, visuel-900.avif 900w, visuel-1000.avif 1000w"
sizes="(max-width: 767px) calc(100vw - 48px), 445px">
<source
type="image/webp"
srcset="visuel-600.webp 600w, visuel-900.webp 900w, visuel-1000.webp 1000w"
sizes="(max-width: 767px) calc(100vw - 48px), 445px">
<img
src="visuel-1000.jpg"
srcset="visuel-600.jpg 600w, visuel-1000.jpg 1000w"
sizes="(max-width: 767px) calc(100vw - 48px), 445px"
width="1000" height="667"
alt="Description utile dans ce contexte"
loading="eager" fetchpriority="high" decoding="sync">
</picture>La version 1.0 comparait naturalWidth à la boîte CSS multipliée par le DPR. Or HTML définit naturalWidth comme une dimension corrigée par la densité : elle ne révèle pas nécessairement les pixels encodés du fichier sélectionné. IMG07 mesure désormais le fichier pointé par currentSrc indépendamment, calcule largeur_fichier / (largeur_CSS × DPR) et conserve le seuil dans une politique versionnée par rôle. L’automatisation passe de « Oui » à « Partiel » : la mesure est automatique, la décision dépend du seuil déclaré.
Pour chaque breakpoint critique, relever innerWidth, DPR, largeur CSS, currentSrc, pixels réels du fichier sélectionné, méthode de mesure, taux de couverture et octets encodés. Une capture seule ne prouve pas la ressource choisie.
IMG10–IMG12
AVIF, WebP, JPEG, PNG et SVG répondent à des contenus et à des chaînes de production différents.
| Format | Bon candidat | Vigilance | Repli |
|---|---|---|---|
| AVIF | Photos, compositions riches, besoin de poids réduit. | Temps d’encodage, réglages, artefacts sur détails et texte intégré. | WebP ou JPEG selon le support visé. |
| WebP | Photos, captures et transparence avec chaîne largement maîtrisée. | Ne pas déduire la qualité du seul suffixe. | JPEG ou PNG lorsque nécessaire. |
| JPEG | Photo de repli, pipeline historique, compatibilité large. | Pas de transparence ; pertes cumulées lors des réencodages. | Il est souvent lui-même le repli. |
| PNG | Transparence, pixels nets, captures lorsque la perte est inacceptable. | Poids élevé pour la photographie. | WebP lossless ou AVIF selon validation. |
| SVG | Logos, icônes, diagrammes vectoriels et formes simples. | Scripts, références externes, texte non converti, complexité du DOM. | Raster seulement si le contexte l’exige. |
Le bon protocole énonce sa politique de compatibilité. Un AVIF nu peut être acceptable sur un périmètre maîtrisé ; un guide destiné à des navigateurs hétérogènes peut exiger picture et repli. L’incohérence consiste à changer de politique d’une image à l’autre sans décision documentée.
IMG13–IMG15
Un seuil de poids sans référence perceptive pousse mécaniquement à surcompresser.
PSNR, SSIM, SSIMULACRA2 ou Butteraugli peuvent aider à comparer des variantes, mais aucune métrique ne remplace le cadrage, le sens ni la validation de zones sensibles. Un protocole publiable indique au minimum le master, la mise à l’échelle, l’encodeur et sa version, les paramètres, le score, le poids et les limites de lecture.
Le score de cette page a été calculé à taille identique. Comparer directement un dérivé à un master d’une autre taille aurait mélangé l’effet du redimensionnement et celui de l’encodage. Chaque variante est donc comparée à une référence PNG issue de son propre master, redimensionnée avec Lanczos aux mêmes dimensions. Le changement de création entre l’ancienne et la nouvelle édition interdit toute comparaison directe des deux scores.
# 1. Décoder le master et la variante à la même taille.
ffmpeg -i master.jpg -vf scale=600:400:flags=lanczos reference.png
ffmpeg -i candidat.avif candidat.png
# 2. Mesurer, puis conserver version, paramètres, poids et hash.
ssimulacra2 reference.png candidat.png
wc -c candidat.avif
shasum -a 256 master.jpg candidat.avifOn ne valide pas « AVIF qualité 65 » pour tout un site. On valide une recette par famille — photo, capture, texture, illustration — puis on impose une revue humaine aux exceptions à forte valeur de marque.
IMG16–IMG18
L’image LCP doit être découverte tôt, priorisée sans ambiguïté et préchargée seulement lorsque le cas le justifie.
Google et web.dev insistent sur trois leviers : rendre la ressource découvrable depuis le HTML initial, éviter le lazy loading pour l’élément LCP et augmenter sa priorité avec discernement. Un preload peut aider lorsque l’image est découverte tardivement — image CSS, composant ou rendu particulier — mais un preload redondant peut consommer de la bande passante et provoquer un double téléchargement si ses candidats ne correspondent pas.
Une image de premier écran n’est pas automatiquement le LCP de tous les utilisateurs. Le LCP peut varier selon viewport, consentement, contenu et cache. Le contrôle terrain observe la distribution ; le laboratoire sert à identifier la chaîne de découverte et la ressource réellement choisie.
<link rel="preload" as="image"
href="visuel-1000.jpg"
imagesrcset="visuel-600.avif 600w, visuel-900.avif 900w, visuel-1000.avif 1000w"
imagesizes="(max-width: 767px) calc(100vw - 48px), 445px"
type="image/avif"
fetchpriority="high">Tester le résultat dans les navigateurs réellement supportés : le comportement de preload responsive et la sélection des sources dépendent du support. L’absence de double requête fait partie de la preuve.
IMG19–IMG24
Lazy loading, décodage et dimensions explicites répondent à trois problèmes différents.
| Mécanisme | But | Preuve | Erreur fréquente |
|---|---|---|---|
loading="lazy" | Différer une image hors écran. | Instant de requête et position par rapport au viewport. | L’appliquer à l’image LCP. |
decoding | Donner une préférence de décodage. | Rendu observé et absence d’effet indésirable. | Présenter async comme une règle universelle. |
width + height | Fournir un ratio intrinsèque et réserver l’espace. | Boîte avant chargement et CLS. | Utiliser un ratio qui ne correspond pas aux candidats. |
aspect-ratio | Stabiliser un conteneur ou un cadrage CSS. | Styles calculés par breakpoint. | Masquer une divergence de ratio non décidée. |
IMG25–IMG27
Le texte alternatif dépend de la fonction de l’image dans cette page, pas du fichier.
L’arbre de décision du W3C distingue notamment images informatives, fonctionnelles, complexes, textuelles et décoratives. Une même photo peut nécessiter une alternative sur une page produit et un alt="" dans une composition purement décorative. Répéter la légende ou le paragraphe voisin dans alt alourdit l’expérience sans ajouter d’information.
Une capture d’écran ou un graphique complexe ne devient pas accessible grâce à une phrase vague. Il faut transmettre l’information utile dans le texte adjacent, une légende, une description longue ou un tableau de données. L’automatisation peut repérer un attribut manquant ; elle ne peut pas décider seule si l’alternative est pertinente.
| Fonction | Traitement | Contrôle humain |
|---|---|---|
| Informative | Décrire l’information nécessaire dans le contexte. | La même information est-elle disponible sans voir l’image ? |
| Fonctionnelle | Nommer l’action ou la destination, pas l’apparence. | Le contrôle garde-t-il un nom accessible exact ? |
| Complexe | Résumé court + description ou données équivalentes. | Les conclusions et valeurs sont-elles accessibles ? |
| Décorative | alt="" ou image CSS selon le cas. | La suppression de l’image ne retire-t-elle aucun sens ? |
IMG28–IMG30
Google doit pouvoir découvrir l’image, comprendre son contexte et accéder à l’URL réellement servie.
La documentation Google recommande des images de qualité placées près d’un texte pertinent, des noms et alternatives descriptifs, ainsi que des URL accessibles. Google découvre les images référencées par <img src>, y compris à l’intérieur de <picture>, mais pas les images uniquement déclarées en arrière-plan CSS pour Google Images.
Un sitemap image peut révéler des URL difficiles à découvrir. Si les images sont servies depuis un CDN ou un autre domaine, Google recommande de vérifier ce domaine dans Search Console. Les données structurées peuvent relier primaryImageOfPage, ImageObject, licence et créateur lorsque ces informations existent réellement ; elles ne compensent ni un fichier bloqué ni un contexte éditorial faible.
IMG31–IMG36
Le pipeline doit produire les variantes, retirer les métadonnées sensibles et refuser les régressions.
Une ressource nommée par contenu — hash ou version immuable — peut recevoir une durée de cache longue. Une URL stable remplacée en place exige une stratégie d’invalidation différente. Le contrôle relève Cache-Control, ETag, Age, négociation éventuelle et comportement du CDN au lieu de supposer qu’un cache « actif » est correct.
Les dérivés publics ne devraient pas conserver par défaut coordonnées GPS, informations d’appareil ou métadonnées éditoriales inutiles. Le pipeline documente ce qui est retiré et ce qui est conservé — profil colorimétrique compris — puis génère toutes les variantes depuis un master, jamais depuis un WebP ou AVIF déjà dégradé.
# Le script doit échouer si une règle bloquante échoue :
# - candidat absent ou largeur déclarée fausse ;
# - format / MIME incohérent ;
# - image LCP lazy loadée ;
# - métadonnée sensible conservée ;
# - poids ou qualité hors budget sans exception versionnée ;
# - alternative obligatoire absente ;
# - URL d’image critique en erreur.
./bin/audit-images --config image-policy.json --report report.jsonLe collecteur Edikka v1.1 distribué avec cette édition parcourt le document pour déclencher le chargement différé natif, puis produit les preuves publiques et navigateur : currentSrc, pixels décodés du fichier sélectionné, boîte CSS, DPR, couverture, temps de transfert, en-têtes et incidents de console. Il ne signe volontairement ni le cadrage humain, ni Search Console, ni les journaux serveur, ni la qualité perceptive. La grille reste la source de décision ; le collecteur ne fabrique pas un score avec des preuves incomplètes.
État de l’art · août 2026
Compatibilité, cache et fidélité doivent être décidés à partir d’un état daté, pas d’un classement permanent des formats.
| Sujet | État vérifiable | Décision de production | Preuve attendue |
|---|---|---|---|
sizes="auto" | La spécification HTML l’autorise pour les images chargées paresseusement et permet une liste de tailles de repli. | L’utiliser seulement si la taille intrinsèque du lazy loading est maîtrisée ; conserver des tailles explicites pour une image LCP chargée immédiatement. | currentSrc et largeur rendue sur les viewports cibles. |
| JPEG XL | Chrome 145 documente un décodeur Blink accessible dans un cadre expérimental, derrière essai d’origine ou drapeaux. | Ne pas en faire le socle universel de cette édition. Tester sur un périmètre borné avec un repli réellement servi. | Matrice de compatibilité datée, négociation et waterfall. |
| Client Hints | Les propositions Sec-CH-Width et Sec-CH-DPR restent un mécanisme d’incubation soumis à HTTPS, opt-in, cache et confidentialité. | Les traiter comme une optimisation progressive : aucune image essentielle ne doit dépendre de leur présence. | Accept-CH, requêtes reçues, clé de cache et repli sans hints. |
Vary: Accept | Une même URL négociant plusieurs formats doit empêcher le partage d’une mauvaise variante entre clients. | Vérifier la clé de cache du CDN. Préférer des URL de variantes explicites lorsque la négociation ne peut pas être auditée de bout en bout. | En-têtes origine/edge, HIT/MISS et réponses pour plusieurs valeurs d’Accept. |
| Réglages d’encodage | Un nombre de « qualité » n’a pas la même signification entre codecs, encodeurs et versions. | Versionner codec, encodeur, version, effort, sous-échantillonnage et paramètres ; comparer les fichiers produits, pas les curseurs. | Commande ou configuration, hash, octets, métrique choisie et revue 1 :1. |
| Gestion colorimétrique | CSS Color 4 décrit des espaces étendus, mais le rendu dépend aussi du fichier, de son profil, du navigateur et de l’écran. | Conserver un profil nécessaire à la fidélité, documenter sRGB ou P3 et tester les dérivés ; ne pas supprimer les profils par réflexe. | Profil du master et des dérivés, captures sur écrans maîtrisés et delta observé. |
| RGESN | Les critères 5.1, 5.2 et 6.4 couvrent notamment formats adaptés, compression et adaptation aux tailles d’affichage. | Raccorder ces critères aux contrôles IMGxx sans présenter l’article ou une page isolée comme une conformité RGESN globale. | Correspondance critère → contrôle → résultat → justificatif. |
Chaque décision dépendante d’un navigateur, d’un CDN ou d’un encodeur porte une date de revue. Une nouveauté n’entre dans le socle qu’après preuve de disponibilité, de repli et de comportement en production.
Instrument ouvert · citation · historique
La méthode devient réutilisable lorsqu’un tiers peut collecter les mêmes faits, valider leur structure et citer une édition stable.
npm install playwright
npx playwright install chromium
node collect-image-evidence-edikka-v1-1.mjs \
https://exemple.fr/page rapport-images.jsonLe rapport produit respecte un schéma JSON public. Son statut initial reste Non testé : collecter une valeur ne suffit pas à conclure. L’auditeur relie ensuite chaque observation à un identifiant IMGxx, ajoute les accès non publics nécessaires et signe la décision.
Référence recommandée : Morel, Bertrand (2026). « Optimisation des images web : protocole vérifiable, grille de 36 contrôles et collecteur de preuves ». Edikka, version 1.1, 23 août 2026, CC BY 4.0. Le fichier CITATION.cff fournit les champs structurés. Aucun DOI n’est attribué à cette édition : l’URL canonique, la version et la date sont les clés de citation publiées.
| Édition | Ajouts | Compatibilité |
|---|---|---|
| v1.0 · 22 août 2026 | 12 domaines, 36 contrôles, grille XLSX/JSON et auto-audit avant/après. | Édition fondatrice. |
| v1.1 · 23 août 2026 | Correction d’IMG07, mesure indépendante des pixels du fichier sélectionné, collecteur et schéma v1.1, parité anglaise et huit contextes de production historiques. | Identifiants IMG01–IMG36 et vocabulaire de décision inchangés ; le rejeu du 23 août reste une preuve historique v1.0 et n’est pas présenté comme une validation d’IMG07 v1.1. |
Workflow de production
La recette la plus robuste part du rôle de l’image et se termine par une preuve en production.
- Qualifier le rôle. LCP, contenu, décor, interface, social ou donnée.
- Conserver le master. Fichier source, droits, provenance, point focal et hash.
- Définir les boîtes réelles. Largeur CSS, breakpoints et DPR utiles.
- Décider l’art direction. Même cadrage ou variante mobile dédiée.
- Encoder plusieurs candidats. Formats, largeurs et replis documentés.
- Mesurer. Octets, SSIMULACRA2 ou métrique choisie, revue 1 :1.
- Intégrer.
picture,srcset,sizes, dimensions, priorité, alt et légende. - Rejouer en production.
currentSrc, waterfall, LCP/CLS, accessibilité, cache et Search Console.
Décisions sans faux absolus
Le format moderne, le score parfait et le poids minimal ne remplacent pas une décision contextualisée.
| Affirmation | Pourquoi elle échoue | Formulation contrôlable |
|---|---|---|
| « Toutes les images sous 100 Ko » | Ignore rôle, dimensions, contenu et qualité. | Budget par famille et gabarit, avec exception documentée. |
| « AVIF est toujours meilleur » | Le résultat dépend de l’encodeur, des réglages et du visuel. | Comparer des variantes réelles à taille et qualité validées. |
| « Lazy loader toutes les images » | Retarde l’image LCP et parfois le premier écran. | Lazy uniquement hors écran ; LCP découvrable et priorisée. |
| « Un alt contient le mot-clé » | Confond accessibilité, contexte et optimisation artificielle. | Décrire la fonction ou l’information utile dans ce contexte. |
| « Lighthouse 100 prouve la performance » | Un test lab ne décrit pas toute la distribution terrain. | Lab pour diagnostiquer, terrain pour observer, pipeline pour prévenir. |
| « Le score perceptif prouve la qualité » | Il ne juge ni composition, sens, marque ni accessibilité. | Métrique documentée + revue humaine ciblée. |
Ressources ouvertes
Télécharger la grille, vérifier les données et réutiliser la méthode.
La grille, les datasets, le Markdown, le collecteur, son schéma et les métadonnées de citation sont publiés sous CC BY 4.0. Réutilisation autorisée avec attribution à Edikka et lien vers cet article.
Sources primaires et référentiels
Sources revérifiées le 23 août 2026.
- Google Search Central — Bonnes pratiques concernant Google Images.
- web.dev — Optimize Largest Contentful Paint.
- web.dev — Preload responsive images.
- WHATWG HTML — Responsive images.
- W3C WAI — Arbre de décision pour les textes alternatifs.
- HTTP Archive Web Almanac 2025 — Performance.
- HTTP Archive Web Almanac 2025 — Page Weight.
- web.dev — Web Vitals.
- Cloudinary — SSIMULACRA2.
- RFC 9111 — HTTP Caching.
- RGESN — Référentiel général d’écoconception des services numériques.
- Chrome Developers — Chrome 145 release notes.
- WICG — Responsive Image Client Hints.
- W3C — CSS Color Module Level 4.
Une image premium n’est ni la plus légère ni la plus définie. C’est la plus juste pour son rôle et son contexte.
La performance doit réduire les octets inutiles sans dégrader le sens, le cadrage, la netteté, l’accessibilité ni la stabilité. Chaque compromis doit rester visible et rejouable.
Observer le candidat réel
Le nom du fichier ne suffit pas. currentSrc, les pixels décodés du fichier sélectionné, la boîte CSS, le DPR, les octets et la chronologie réseau décrivent ce que le navigateur a réellement utilisé.
Comparer au master
Une métrique perceptive documente l’encodage. Une revue humaine protège les visages, textures, textes, cadrages et détails qui portent la marque.
Refuser le score unique
Poids, LCP, CLS, accessibilité et qualité perceptive restent des dimensions distinctes. Un bon chiffre ne compense pas une rupture bloquante.
Pour aller plus loin sur ce sujet
Des réponses complémentaires pour clarifier les points essentiels abordés dans cet article.