SEOFX – SEO Agentur Nürnberg
Webentwicklung

Cookie-Consent und Core Web Vitals: So geht beides

4 Min. Lesezeit

Cookie-Banner sind DSGVO-Pflicht – aber viele Implementierungen zerstören Core Web Vitals. Ein spät ladender Cookie-Banner der die gesamte Seite nach unten schiebt verursacht massiven CLS. Ein blockierender Consent-Manager verzögert LCP. Mit der richtigen Implementierung ist DSGVO-Konformität und gute Performance kein Widerspruch.

CLS durch nachträgliches Einblenden: Der häufigste Fehler: Cookie-Banner werden nach dem Laden der Seite in das DOM eingefügt und drücken den sichtbaren Content nach unten. Jede Pixel-Verschiebung erhöht den CLS-Score.

LCP durch blockierende Scripts: Manche Consent-Manager laden ihre eigene JavaScript-Bibliothek synchron im <head>. Die Seite rendert nicht bevor diese Library geladen ist – LCP verschlechtert sich.

INP durch schwere JavaScript-Ausführung: Consent-Plattformen wie OneTrust oder Cookiebot können 200–500KB JavaScript laden. Die Ausführung blockiert den Main Thread und erhöht INP.

Cookie-Banner von Drittanbietern sind laut WebPageTest-Analysen für durchschnittlich 0,3–0,8 Sekunden extra LCP verantwortlich und verursachen in 60 % der Implementierungen messbare CLS-Scores über dem Grenzwert von 0,1.

Lösung 1: Platz für Banner reservieren

Der einfachste CLS-Fix: Dem Cookie-Banner-Container von Anfang an Platz reservieren.

/* Fixen Platz am unteren Rand reservieren */
body {
  padding-bottom: 80px; /* Höhe des Banners */
}

#cookie-banner {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  height: 80px; /* Feste Höhe */
  /* Kein Layout-Shift weil position: fixed */
}

position: fixed Elemente verursachen keinen CLS weil sie nicht im normalen Dokumentenfluss sind – kein Content wird verschoben.

<!-- Nicht blockierend laden: -->
<script async src="https://consent-manager.example.com/script.js"></script>

<!-- Oder nach DOM-Load: -->
<script>
  window.addEventListener('DOMContentLoaded', function() {
    var script = document.createElement('script');
    script.src = 'https://consent-manager.example.com/script.js';
    document.body.appendChild(script);
  });
</script>

Asynchrones Laden verhindert Render-Blocking, der Banner erscheint etwas später – aber der LCP-Wert wird nicht beeinträchtigt.

Wenn Sie die Wahl zwischen verschiedenen Consent-Management-Plattformen haben, testen Sie die Script-Größe mit Chrome DevTools Network-Tab. Einige CMPs (Consent Management Platforms) laden 500KB JavaScript, andere kommen mit 30KB aus. Die Wahl der Plattform hat erheblichen Einfluss auf Performance.

Für einfache Anforderungen (Analytics + ein Marketing-Tool) reicht eine selbst implementierte Lösung die deutlich leichter ist als Drittanbieter-CMPs:

// Minimal-Cookie-Consent
const CookieConsent = {
  hasConsent: function() {
    return localStorage.getItem('cookie-consent') === 'accepted';
  },
  accept: function() {
    localStorage.setItem('cookie-consent', 'accepted');
    this.loadAnalytics();
    document.getElementById('cookie-banner').remove();
  },
  loadAnalytics: function() {
    // Google Analytics 4 laden
    var script = document.createElement('script');
    script.src = 'https://www.googletagmanager.com/gtm.js?id=GTM-XXXXX';
    script.async = true;
    document.head.appendChild(script);
  }
};

// Banner nur anzeigen wenn kein Consent vorhanden
if (!CookieConsent.hasConsent()) {
  document.getElementById('cookie-banner').style.display = 'block';
}

Wichtig: Eine selbst implementierte Lösung muss die DSGVO-Anforderungen erfüllen: Granulare Zustimmung, Ablehnen-Option, Widerruf-Möglichkeit, Dokumentation.

Für GA4 und Google Ads ist Consent Mode v2 seit März 2024 Pflicht:

<!-- Consent Mode vor GTM laden: -->
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  // Standardmäßig alles ablehnen
  gtag('consent', 'default', {
    'analytics_storage': 'denied',
    'ad_storage': 'denied',
    'ad_user_data': 'denied',
    'ad_personalization': 'denied'
  });
</script>
<!-- Dann GTM laden (asynchron): -->
<script async src="https://www.googletagmanager.com/gtm.js?id=GTM-XXXXX"></script>

Nach Nutzer-Zustimmung:

gtag('consent', 'update', {
  'analytics_storage': 'granted',
  'ad_storage': 'granted'
});

CMP-Vergleich: Performance-Impact

PlattformScript-GrößeCLS-RisikoEmpfehlung
Cookiebot~150KBMittelOK für Mittelstand
OneTrust~400KBHochNur Enterprise
Klaro~25KBGeringFür kleinere Sites
Eigene Lösung~5–10KBMinimalTech-affine Teams

Websites die Cookie-Consent per position: fixed und asynchronem Script-Loading implementieren, erzielen trotz vollständigem DSGVO-Consent-Banner durchschnittlich 0,05 CLS – deutlich unter dem Grenzwert von 0,1 für die „Gut”-Bewertung.

Mehr zu DSGVO und SEO finden Sie in unserem Artikel über WordPress DSGVO und SEO.

DSGVO-konform und performant – kein Kompromiss.

Wir implementieren Cookie-Consent-Lösungen die DSGVO-Anforderungen erfüllen ohne Core Web Vitals zu beschädigen – für rechtssichere und schnelle Websites.

Performance-Optimierung anfragen

Weitere Artikel zu Webentwicklung