Zum Hauptinhalt springen
Webentwicklung

Cookie-Consent und Core Web Vitals: So geht beides

06. Mai 2025 · 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 - einen vollständigen Überblick der Core Web Vitals finden Sie in unserem Grundlagenartikel.

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 kosten messbar Ladezeit: Ihr Script blockiert den Main Thread, und häufig wird der Bannertext selbst zum größten sichtbaren Element, das Google als LCP misst. Wird der Banner ohne reservierten Platz eingeblendet, schiebt er den Inhalt und treibt CLS über den 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. Messen Sie die Auswirkungen Ihres Consent-Banners am besten mit Google Lighthouse. Auch Third-Party Scripts wie Analytics und Chat-Widgets verschlechtern Core Web Vitals oft erheblich und sollten zusammen mit dem Cookie-Consent evaluiert werden.

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
09 · Kontakt

Reden wir über
Platz 1 für Ihre Firma.

Wählen Sie kurz aus, was Sie brauchen. Wir melden uns mit einer ehrlichen Einschätzung in 24 Stunden. Kein Verkaufs­gespräch, keine Werbung.

09129 1439894
20+ Jahre Nürnberg Keine Vertragsbindung Mo-Fr 9-18 · kein Call-Center