Comprendre et mesurer le CLS (Cumulative Layout Shift)
Le CLS mesure la stabilité visuelle de vos pages. Découvrez sa définition, son seuil de 0,1, les causes des décalages et les outils pour le mesurer.
Le CLS (Cumulative Layout Shift) est une métrique Core Web Vitals stable qui mesure la stabilité visuelle d’une page. Il quantifie la fréquence et l’ampleur des décalages de mise en page inattendus, ces moments où un élément déjà visible se déplace brusquement pendant que l’utilisateur consulte la page. Un CLS faible garantit une page agréable et prévisible.
Pour le SEO comme pour l’expérience utilisateur, le CLS est crucial : un contenu qui saute fait perdre le fil de lecture, provoque des clics involontaires et nuit à la confiance. Ces décalages passent souvent inaperçus en développement et n’apparaissent qu’en conditions réelles, d’où l’importance de les mesurer auprès de vrais utilisateurs avant de les corriger.
Le CLS est le signal le plus traître que je connaisse, parce qu’il est presque invisible quand on développe sur une machine puissante avec une bonne connexion. Mon retour de terrain est sans appel : testez systématiquement vos pages en conditions réelles, sur mobile et réseau lent, sinon vous livrez des décalages que vos visiteurs subiront mais que vous ne verrez jamais.
Ce que mesure le CLS et son seuil
Le CLS retient la plus grande rafale de décalages survenue pendant la vie de la page. Une rafale, ou fenêtre de session, regroupe des décalages rapprochés (moins d’une seconde d’écart, cinq secondes au maximum) ; le CLS correspond à la fenêtre dont le score cumulé est le plus élevé. À la différence des autres Core Web Vitals, le CLS est une valeur sans unité.
Pour offrir une bonne expérience, visez un CLS de 0,1 ou moins, mesuré au 75e centile des chargements, mobile et ordinateur séparés.
| Classement | Valeur CLS | Centile |
|---|---|---|
Bon |
0,1 ou moins |
75e |
À améliorer |
Entre 0,1 et 0,25 |
75e |
Médiocre |
Plus de 0,25 |
75e |
Comment se calcule un décalage
Un décalage de mise en page se produit lorsqu’un élément visible change de position de départ d’un frame à l’autre. Le score de chaque décalage est le produit de deux fractions : la fraction d’impact, c’est-à-dire la part de la fenêtre d’affichage concernée par les éléments instables, et la fraction de distance, c’est-à-dire l’ampleur du déplacement rapporté à la dimension de la fenêtre.
Ajouter un nouvel élément au DOM ou redimensionner un élément ne compte pas comme un décalage, tant que cela ne déplace pas la position de départ d’autres éléments visibles.
| Composante | Ce qu'elle mesure |
|---|---|
Fraction d’impact |
Part de la fenêtre d’affichage couverte par les éléments instables sur deux frames |
Fraction de distance |
Plus grande distance parcourue par un élément, rapportée à la dimension de la fenêtre |
Score de décalage |
Produit de la fraction d’impact et de la fraction de distance |
Les causes fréquentes de décalages
Les décalages inattendus surviennent surtout lorsque des ressources se chargent de façon asynchrone ou que des éléments sont ajoutés dynamiquement au-dessus du contenu existant. Les coupables habituels sont les images et vidéos sans dimensions déclarées, les polices qui s’affichent dans une taille différente de la taille par défaut, et les publicités ou widgets tiers qui se redimensionnent en cours de chargement.
Tous les décalages ne sont pas pénalisés. Ceux qui suivent une interaction de l’utilisateur dans un délai de 500 millisecondes sont considérés comme attendus et exclus du calcul. Les animations réalisées avec la propriété CSS transform, elles, ne déclenchent pas de décalage.
Comment mesurer le CLS
Le CLS se mesure sur le terrain, auprès d’utilisateurs réels, et en laboratoire. Attention toutefois : les outils de laboratoire ne capturent en général que les décalages survenant au chargement, si bien que la valeur mesurée peut être inférieure à celle vécue sur le terrain. En JavaScript, le CLS s’appuie sur l’API Layout Instability ; la bibliothèque web-vitals regroupe les décalages en sessions et gère les cas particuliers comme la restauration depuis le cache, au fil de l’évolution de la mesure du CLS.
| Outil | Type |
|---|---|
Rapport sur l’expérience utilisateur Chrome (CrUX) |
Terrain |
PageSpeed Insights |
Terrain et laboratoire |
Search Console (rapport Core Web Vitals) |
Terrain |
Bibliothèque JavaScript web-vitals |
Terrain |
Outils pour les développeurs Chrome |
Laboratoire |
Lighthouse |
Laboratoire |
WebPageTest |
Laboratoire |
Les outils de laboratoire chargent la page dans un environnement synthétique et ne mesurent que les décalages survenant pendant le chargement. Les décalages provoqués plus tard par le défilement, les contenus tiers ou les interactions échappent à cette mesure. La valeur de laboratoire est donc fréquemment plus basse que le CLS réel : appuyez-vous sur les données terrain au 75e centile pour juger la stabilité.
À faire
- viser 0,1 au 75e centile
- réserver l’espace des images et vidéos
- animer avec la propriété transform
- mesurer sur le terrain
À éviter
- laisser des médias sans dimensions
- insérer du contenu au-dessus de l’existant
- se fier au seul CLS de laboratoire
- négliger les widgets tiers
Points clés à retenir
- Visez un CLS de 0,1 ou moins au 75e centile.
- Le score combine fraction d'impact et fraction de distance.
- Réservez l'espace des images, vidéos, polices et contenus tiers.
- Les décalages suivant une interaction sous 500 ms sont exclus.
- Mesurez sur le terrain : le laboratoire sous-estime souvent le CLS.
Le CLS traduit la stabilité visuelle ressentie par l’utilisateur.
Quiz : testez vos connaissances
Quiz : testez vos connaissances
-
Quelle valeur le CLS retient-il sur l'ensemble de la vie de la page ?
- La moyenne des décalages mesurés frame par frame
- La plus grande rafale de décalages, c'est-à-dire la fenêtre de session au score cumulé le plus élevé
- La somme de tous les décalages survenus pendant la visite
Le CLS retient la plus grande rafale, ou fenêtre de session : un groupe de décalages rapprochés. Il correspond à la fenêtre dont le score cumulé est le plus élevé, pas à la somme totale.
-
Pourquoi le CLS n'a-t-il pas d'unité ?
- Parce qu'il s'exprime en pixels déplacés à l'écran
- Parce qu'il résulte du produit de deux fractions, la fraction d'impact et la fraction de distance
- Parce qu'il se mesure en millisecondes mais que l'unité est sous-entendue
Le score d’un décalage est le produit de la fraction d’impact et de la fraction de distance, toutes deux exprimées en proportion de la fenêtre d’affichage : le résultat est donc sans unité.
-
Pourquoi le CLS mesuré en laboratoire est-il souvent inférieur à celui du terrain ?
- Parce que le terrain ignore les décalages dus aux widgets tiers
- Parce que le laboratoire ne capture en général que les décalages survenant au chargement
- Parce que le laboratoire mesure toute la vie de la page, contrairement au terrain
Les outils de laboratoire chargent la page dans un environnement synthétique et ne mesurent souvent que les décalages du chargement, alors que le terrain couvre toute la vie de la page.
Besoin d'un accompagnement SEO ?
Vos pages bougent au chargement et déstabilisent vos visiteurs ?