blog · 5 septembre 2026 · 8 min de lecture

Les bannières cookies nuisent-elles aux Core Web Vitals ? D’où vient vraiment le coût

Oui, une bannière peut ruiner vos scores. Non, ce n’est pas une fatalité. Les dégâts viennent de trois comportements précis, et chacun a sa correction.

Les trois façons dont une bannière vous coûte

Les Core Web Vitals sont trois chiffres : Largest Contentful Paint, le temps avant que le plus gros élément à l’écran soit dessiné ; Cumulative Layout Shift, combien la page bouge pendant le chargement ; Interaction to Next Paint, le temps que met la page à répondre à un clic. Une bannière de consentement peut nuire à chacun, mais par trois mécanismes différents, et la sagesse populaire (« les bannières sont lentes ») cache lequel vous touche.

Les seuils de Google pour un bon score, et le comportement de bannière qui casse le plus souvent chacun d’eux.

LCP : le bundle bloquant

Le premier mécanisme est celui dont les ingénieurs performance parlent le plus. Beaucoup de gestionnaires de consentement livrent un gros script, chargé de façon synchrone dans le head, qui doit être téléchargé et exécuté avant que le navigateur ne continue à analyser la page. L’analyse de DebugBear sur les CMP populaires montre des cas où le script de la bannière fait passer le LCP d’environ 1,4 seconde à 3,6 et injecte des dizaines de milliers de nœuds DOM. Un second problème de LCP, plus discret : si la bannière est le plus grand élément du viewport sur un écran mobile, elle devient l’élément LCP, et son propre temps de rendu est votre score.

La solution au premier est architecturale : le runtime doit être petit et ne pas bloquer l’analyse. La solution au second est une question de design : une bannière en barre ou en carte de coin plutôt qu’une modale plein écran, à la première visite, sur un téléphone.

CLS : la bannière tardive

Le deuxième mécanisme est le décalage de mise en page, et il est presque toujours auto-infligé. Une bannière injectée après le premier rendu qui pousse le contenu vers le bas produit un décalage égal à sa propre hauteur, ce qui, sur un téléphone, représente l’essentiel du budget CLS de 0,1. Les bannières qui glissent par-dessus le contenu ne décalent rien ; celles qui s’insèrent dans le flux, si. La solution est de réserver l’espace avant le rendu, ou de superposer plutôt qu’insérer.

Les trois endroits où une bannière peut nuire : un bundle synchrone qui bloque l’analyse (LCP), une bannière tardive qui déplace le contenu (CLS), et une rafale de scripts libérés au clic (INP).

INP : la rafale au clic

Le troisième mécanisme est le plus récent et le moins discuté. L’INP mesure le délai entre une interaction et l’image suivante. Le clic qui fait le plus mal sur un site à consentement géré est Tout accepter : à cet instant, la bannière libère d’un coup tous les scripts verrouillés, et une douzaine de balises se disputent le thread principal pendant que la page tente de redessiner la fermeture de la bannière. L’article de SpeedCurve sur les gestionnaires de consentement en fait la régression INP la plus courante qu’ils observent. La bannière ne l’a pas causée ; ce sont les balises, mais la bannière les a planifiées.

La solution, c’est l’ordonnancement. Les scripts libérés doivent s’exécuter dans l’ordre du document, en cédant la main entre eux, hors du chemin critique de l’interaction, pour que la bannière se ferme d’abord et que les traceurs suivent.

Comment le runtime CookieCrumbs est construit

  • 21 ko gzippé, un seul fichier. Chargé en asynchrone avec une longue durée de cache, depuis notre propre domaine. Il installe son intercepteur de façon synchrone en quelques centaines d’octets de logique inline et récupère tout le reste ensuite, si bien que rien ne bloque l’analyse et rien ne s’exécute avant que l’intercepteur n’existe.
  • Aucune requête tierce en propre. Pas de webfont, pas de jeu d’icônes, pas de statistiques de la bannière. La typographie vient du système ou de votre page.
  • Espace réservé avant le rendu. Les mises en page barre et ruban ajoutent au document une marge de leur propre hauteur tant qu’elles sont affichées, sur le bord où elles se trouvent, si bien que rien ne bouge. Contribution CLS mesurée : 0,00.
  • Libération dans l’ordre, en cédant la main. Au consentement, les scripts verrouillés sont recréés dans l’ordre du document avec un yield entre eux, si bien que le clic se résout avant que les traceurs ne s’exécutent.
  • Pas l’élément LCP. Les mises en page par défaut sont dimensionnées pour que votre contenu, et non la bannière, soit le plus grand rendu sur un téléphone.

Comment mesurer la vôtre

  1. Lancez PageSpeed Insights sur une page avec la bannière affichée (profil neuf, pas de cookie de consentement). Lisez les données de terrain si vous en avez ; les données de laboratoire suffisent pour commencer.
  2. Dans le diagnostic LCP, vérifiez quel élément est l’élément LCP. Si c’est la bannière, changez la mise en page.
  3. Dans le diagnostic CLS, cherchez un décalage au moment où la bannière apparaît. S’il y en a un, la bannière s’insère dans le flux.
  4. Enregistrez une trace de performance, cliquez sur Tout accepter et lisez les longues tâches qui suivent. C’est votre coût INP, et il appartient aux balises que vous avez libérées.
  5. Comparez dans le panneau réseau la taille transférée du script de la bannière et s’il bloque le rendu. Moins de 30 ko et asynchrone, voilà la cible.

Puis lancez le scan gratuit : il vous dit combien de traceurs seront libérés à ce clic, et c’est le chiffre qui compte pour l’INP.

Sources

  1. DebugBear, « Cookie consent banners, page speed, and Core Web Vitals »
  2. SpeedCurve, « Five ways cookie consent managers hurt web performance (and how to fix them) »
  3. Termly, « How to optimize your cookie banner for Core Web Vitals »
  4. Google, seuils Core Web Vitals sur web.dev (LCP 2,5 s, CLS 0,1, INP 200 ms)
  5. CookieCrumbs, section bannière (21 ko, CLS 0,00)

étape suivante

Voyez ce que votre site charge avant le consentement

Le scan gratuit lit votre page d’accueil et liste les traceurs. Pas de compte, rien n’est stocké.