Choisir la bonne taille d’image avec srcset
Servez à chaque écran la plus petite image possible avec srcset et sizes. Pages plus rapides, moins de données gaspillées, meilleur SEO.
Une page web mobile typique pèse plus de 2,6 Mo, dont les deux tiers sont des images. Le potentiel d’optimisation est donc énorme. La règle de base est simple : ne jamais enregistrer une image plus grande que sa taille d’affichage. Deux visuels visuellement identiques peuvent avoir un poids de fichier dix fois différent selon leurs dimensions d’enregistrement.
Le problème, c’est que dans un monde multi-appareils, une image n’est pas toujours affichée à taille fixe. Largeurs en pourcentage, mises en page responsives, écrans à forte densité de pixels : la même image peut s’afficher à des tailles très variées. L’attribut srcset répond à ce défi et améliore directement la vitesse, donc l’expérience et le SEO ; il s’inscrit dans une démarche plus large pour optimiser ses images.
La règle que je martèle est d’une simplicité désarmante : n’enregistrez jamais une image plus grande que sa taille d’affichage. Deux visuels identiques à l’oeil peuvent peser dix fois plus selon leurs dimensions, et dans un monde multi-écrans une seule taille ne suffit jamais. Bien renseigner sizes et générer les variantes adaptées, c’est laisser le navigateur faire le bon choix au bon moment.
Pourquoi une seule taille ne suffit pas
Idéalement, on voudrait fournir chaque image en plusieurs tailles et laisser le navigateur choisir la mieux adaptée. Mais il existe un paradoxe : le navigateur devrait prendre la plus petite image possible, sans pouvoir connaître la largeur d’un fichier sans le télécharger d’abord.
C’est précisément le rôle de srcset. Vous enregistrez l’image en plusieurs tailles, puis vous indiquez au navigateur la largeur de chaque version avec un descripteur w. Le navigateur peut alors choisir le plus petit fichier suffisant selon l’écran et la fenêtre, sans téléchargement de vérification, ce qui contribue à réduire le poids des images.
<img src="small.jpg"
srcset="small.jpg 500w,
medium.jpg 1000w,
large.jpg 1500w"
alt="…">
Préciser la largeur d'affichage avec sizes
Sans information complémentaire, le navigateur suppose que l’image occupe toute la largeur de la fenêtre quand il choisit dans le srcset. L’attribut sizes corrige cela en décrivant la largeur d’affichage réelle de l’image. Le navigateur peut ainsi sélectionner le plus petit fichier adapté avant même de calculer la mise en page.
Dans l’exemple ci-dessous, sizes= »50vw » indique que l’image s’affichera à 50 % de la largeur de la fenêtre. Point important à retenir : ni srcset ni sizes ne définissent la taille d’affichage à l’écran. Ils informent le navigateur, mais c’est toujours le CSS qui contrôle le rendu final.
<img src="small.jpg"
srcset="small.jpg 500w, medium.jpg 1000w, large.jpg 1500w"
sizes="50vw"
alt="…">
Générer et servir les bonnes variantes
Utiliser srcset suppose de disposer de plusieurs tailles par image. Pour quelques visuels ponctuels comme une image héros, vous pouvez les enregistrer à la main. Pour de gros volumes (catalogues, photos produits), il faut automatiser, par exemple en pensant à précharger les images responsives critiques. Le tableau ci-dessous résume les approches et les cas où chacune est pertinente.
| Approche | Principe | Cas d'usage |
|---|---|---|
Enregistrement manuel |
Exporter chaque taille à la main |
Peu d’images, visuels ponctuels |
Étape de build |
Générer les tailles à la compilation |
Projet avec processus de build |
Service d’images |
Tailles et formats générés via l’URL |
Gros volumes, recadrage automatique |
CDN d’images |
Optimisation et format servis dynamiquement |
Sites à fort trafic et nombreux visuels |
srcset fournit au navigateur la largeur enregistrée de chaque fichier, et sizes la largeur d’affichage prévue. Ni l’un ni l’autre ne fixe la taille à laquelle l’image apparaît : c’est le rôle du CSS. Oublier cette distinction conduit à des images mal dimensionnées à l’écran malgré une configuration srcset correcte.
À faire
- enregistrer plusieurs tailles par image
- renseigner les descripteurs w
- ajouter sizes pour la largeur d’affichage
- automatiser la génération sur les gros volumes
À éviter
- enregistrer une image plus grande que son affichage
- confondre srcset et taille CSS
- négliger le repli sur src
- multiplier les variantes au-delà du nécessaire
Points clés à retenir
- N'enregistrez jamais une image plus grande que sa taille d'affichage.
- Décrivez la largeur de chaque version avec un descripteur w.
- Ajoutez sizes pour indiquer la largeur d'affichage réelle.
- Laissez le CSS gérer le rendu : srcset et sizes ne le remplacent pas.
- Automatisez la génération des variantes sur les gros catalogues.
srcset et sizes servent à chaque écran la plus petite image suffisante.
Quiz : testez vos connaissances
Quiz : testez vos connaissances
-
Que signifie le descripteur w dans un attribut srcset, par exemple « small.jpg 500w » ?
- Le poids du fichier en kilo-octets
- La largeur d'affichage souhaitée de l'image à l'écran
- La largeur intrinsèque du fichier en pixels, ici 500 pixels de large
Le descripteur
windique la largeur intrinsèque du fichier en pixels.small.jpg 500wsignale au navigateur que ce fichier fait 500 pixels de large. -
À quoi sert l'attribut sizes en complément de srcset ?
- À décrire la largeur d'affichage réelle de l'image pour que le navigateur choisisse le plus petit fichier suffisant
- À indiquer le poids maximal autorisé pour chaque variante
- À fixer la taille en pixels à laquelle l'image sera affichée à l'écran
Sans
sizes, le navigateur suppose que l’image occupe toute la largeur de la fenêtre.sizesdécrit la largeur d’affichage réelle pour sélectionner le plus petit fichier adapté. -
Comment servir un recadrage différent d'une image selon l'écran (direction artistique) ?
- Avec srcset seul, en ajoutant des descripteurs w supplémentaires
- Avec l'élément picture et plusieurs sources, car srcset gère la taille mais pas le cadrage
- En enregistrant une seule image très grande recadrée par le CSS
srcsetgère la taille, pas le cadrage. Pour servir un recadrage différent selon l’écran (direction artistique), on utilise l’élémentpictureavec plusieurs sources.
Besoin d'un accompagnement SEO ?
Servir la bonne taille d'image à chaque appareil peut alléger fortement vos pages et booster vos Core Web Vitals.