Halb geöffnete historische Doppeltür des Ratshofs in Halle – Schwelle und Wahl
Technisches SEO 5 Min. Lesezeit

Cookie Consent DSGVO-konform umsetzen

Erfahren Sie, wie Sie einen DSGVO-konformen Cookie-Banner implementieren. Mit Cookie-Kategorien, Opt-In-Mechanismus und praktischen Code-Beispielen.

Arnold Wender

Arnold Wender

SEO-Experte & Geschäftsinhaber

Aktualisiert: 26. Juni 2026
Inhaltsverzeichnis

Ein DSGVO-konformer Cookie-Banner setzt nicht-essentielle Cookies erst nach aktiver Einwilligung (Opt-in) – das verlangen § 25 TDDDG und die DSGVO von praktisch jeder Website mit Analyse-, Marketing- oder Embed-Cookies. Verstöße können nach § 28 TDDDG bis zu 300.000 € Bußgeld kosten. Dieser Guide zeigt Cookie-Kategorien, Opt-in-Mechanismus und praktische Code-Beispiele.

Wie teuer fehlerhafte Implementierungen werden können, zeigt die französische Datenschutzbehörde CNIL: Sie verhängte am 1. September 2025 wegen ohne Einwilligung gesetzter Cookies 150 Millionen Euro Bußgeld gegen SHEIN und im selben Zeitraum 325 Millionen Euro gegen Google.

Die DSGVO und das TDDDG stellen klare Anforderungen:

  1. Informierte Einwilligung: Nutzer müssen verstehen, wozu sie zustimmen
  2. Freiwilligkeit: Echte Wahlmöglichkeit, kein Zwang
  3. Opt-In für nicht-essentielle Cookies: Vorher fragen, nicht nachher
  4. Widerrufbarkeit: Einwilligung muss jederzeit widerrufbar sein
  5. Dokumentation: Einwilligungen müssen nachweisbar sein

1. Essentielle Cookies (Notwendig)

Kein Consent erforderlich

  • Session-Cookies für den Login
  • Warenkorb-Cookies im E-Commerce
  • Cookie-Consent-Speicherung selbst
  • Load-Balancer-Cookies

2. Analyse/Statistik Cookies

Consent erforderlich

  • Google Analytics
  • Matomo (wenn nicht anonymisiert)
  • Hotjar, Clarity
  • Eigene Tracking-Lösungen

3. Marketing/Werbung Cookies

Consent erforderlich

  • Google Ads Remarketing
  • Facebook Pixel
  • LinkedIn Insight Tag
  • Affiliate-Tracking

4. Präferenzen/Funktionen

Consent empfohlen

  • Spracheinstellungen
  • Theme-Präferenzen
  • Chat-Widget-Daten

HTML-Struktur

<div id="cookie-consent" role="dialog" aria-modal="true" aria-labelledby="cookie-title">
  <div class="cookie-content">
    <h2 id="cookie-title">Cookie-Einstellungen</h2>
    <p>
      Wir verwenden Cookies, um Ihnen die beste Erfahrung zu bieten.
      <a href="/datenschutz/">Mehr erfahren</a>
    </p>

    <div class="cookie-options">
      <label>
        <input type="checkbox" id="essential" checked disabled>
        Notwendig (immer aktiv)
      </label>
      <label>
        <input type="checkbox" id="analytics">
        Analyse & Statistik
      </label>
      <label>
        <input type="checkbox" id="marketing">
        Marketing
      </label>
    </div>

    <div class="cookie-buttons">
      <button id="accept-all">Alle akzeptieren</button>
      <button id="accept-selected">Auswahl bestätigen</button>
      <button id="reject-all">Nur notwendige</button>
    </div>
  </div>
</div>

JavaScript-Logik

const CONSENT_KEY = 'cookie-consent';

function getConsent() {
  try {
    return JSON.parse(localStorage.getItem(CONSENT_KEY)) || null;
  } catch {
    return null;
  }
}

function setConsent(consent) {
  localStorage.setItem(CONSENT_KEY, JSON.stringify({
    ...consent,
    timestamp: new Date().toISOString()
  }));

  // Custom Event für andere Scripts
  window.dispatchEvent(new CustomEvent('cookieConsentChanged', {
    detail: consent
  }));
}

function acceptAll() {
  setConsent({ essential: true, analytics: true, marketing: true });
  hideBanner();
  loadConsentedScripts();
}

function acceptSelected() {
  setConsent({
    essential: true,
    analytics: document.getElementById('analytics').checked,
    marketing: document.getElementById('marketing').checked
  });
  hideBanner();
  loadConsentedScripts();
}

function rejectAll() {
  setConsent({ essential: true, analytics: false, marketing: false });
  hideBanner();
}
<!-- FALSCH - lädt sofort -->
<script src="https://www.googletagmanager.com/gtag/js"></script>

<!-- RICHTIG - lädt erst nach Consent -->
<script type="text/plain" data-category="analytics"
        data-src="https://www.googletagmanager.com/gtag/js"></script>
function loadConsentedScripts() {
  const consent = getConsent();

  document.querySelectorAll('script[type="text/plain"]').forEach(script => {
    const category = script.dataset.category;

    if (consent[category]) {
      const newScript = document.createElement('script');
      newScript.src = script.dataset.src;
      document.head.appendChild(newScript);
    }
  });
}

Seit März 2024 erfordert Google Consent Mode v2 für EWR-Traffic:

// Standardmäßig verweigert (vor dem Banner)
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}

gtag('consent', 'default', {
  'ad_storage': 'denied',
  'ad_user_data': 'denied',
  'ad_personalization': 'denied',
  'analytics_storage': 'denied',
  'wait_for_update': 500
});

// Nach Consent-Erteilung aktualisieren
function updateGoogleConsent(consent) {
  gtag('consent', 'update', {
    'ad_storage': consent.marketing ? 'granted' : 'denied',
    'ad_user_data': consent.marketing ? 'granted' : 'denied',
    'ad_personalization': consent.marketing ? 'granted' : 'denied',
    'analytics_storage': consent.analytics ? 'granted' : 'denied'
  });
}

Einwilligung widerrufen

Nutzer müssen ihre Einwilligung jederzeit widerrufen können:

<!-- Link im Footer -->
<button onclick="window.openCookieSettings()">
  Cookie-Einstellungen
</button>
window.openCookieSettings = function() {
  // Aktuellen Consent laden und anzeigen
  const consent = getConsent();
  document.getElementById('analytics').checked = consent?.analytics || false;
  document.getElementById('marketing').checked = consent?.marketing || false;

  // Banner wieder anzeigen
  document.getElementById('cookie-consent').classList.add('visible');
};

Mobile-Optimierung

Probleme vermeiden

/* Cookie-Banner darf nicht die ganze Seite verdecken */
#cookie-consent {
  max-height: 80vh;
  overflow-y: auto;
}

/* Touch-freundliche Buttons */
.cookie-buttons button {
  min-height: 48px;
  padding: 12px 24px;
}

/* Checkboxen groß genug */
.cookie-options input[type="checkbox"] {
  width: 24px;
  height: 24px;
}

Accessibility (Barrierefreiheit)

Auch der Cookie-Banner selbst muss barrierefrei bedienbar sein – seit dem BFSG 2025 ist das keine Kür mehr.

WCAG-Anforderungen

<div
  id="cookie-consent"
  role="dialog"
  aria-modal="true"
  aria-labelledby="cookie-title"
  aria-describedby="cookie-description"
>
  <h2 id="cookie-title">Cookie-Einstellungen</h2>
  <p id="cookie-description">
    Wählen Sie, welche Cookies Sie akzeptieren möchten.
  </p>

  <!-- Focus-Management -->
  <button autofocus id="accept-all">Alle akzeptieren</button>
</div>

Focus-Trap

function trapFocus(element) {
  const focusable = element.querySelectorAll(
    'button, [href], input, select, textarea'
  );
  const first = focusable[0];
  const last = focusable[focusable.length - 1];

  element.addEventListener('keydown', (e) => {
    if (e.key === 'Tab') {
      if (e.shiftKey && document.activeElement === first) {
        e.preventDefault();
        last.focus();
      } else if (!e.shiftKey && document.activeElement === last) {
        e.preventDefault();
        first.focus();
      }
    }
  });

  first.focus();
}

Häufige DSGVO-Verstöße

1. Vorangekreuzte Checkboxen

<!-- FALSCH -->
<input type="checkbox" id="marketing" checked>

<!-- RICHTIG -->
<input type="checkbox" id="marketing">

2. Kein “Ablehnen”-Button

Der Ablehnen-Button muss genauso prominent sein wie “Akzeptieren”.

3. Dark Patterns

  • “Akzeptieren” in grün, “Ablehnen” in grau
  • “Ablehnen” versteckt hinter “Einstellungen”
  • Wiederholte Aufforderungen nach Ablehnung

Genau solche Muster führten 2025 zum CNIL-Bußgeld gegen SHEIN: Werbe-Cookies wurden bereits vor jeder Interaktion gesetzt, und selbst nach einem Klick auf “Alle ablehnen” wurden weiterhin Cookies gespeichert und ausgelesen. “Ablehnen” muss tatsächlich ablehnen - technisch wie visuell.

Scripts werden geladen, bevor der Nutzer zustimmt.

5. Keine Widerrufsmöglichkeit

Nutzer können ihre Einwilligung nicht ändern.

Für Compliance sollten Sie Einwilligungen dokumentieren:

function setConsent(consent) {
  const consentRecord = {
    ...consent,
    timestamp: new Date().toISOString(),
    userAgent: navigator.userAgent,
    url: window.location.href
  };

  // Lokal speichern
  localStorage.setItem(CONSENT_KEY, JSON.stringify(consentRecord));

  // Optional: An Server senden
  fetch('/api/consent', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify(consentRecord)
  });
}

Wann eine CMP nutzen?

  • Bei vielen Third-Party-Scripts
  • Für internationalen Traffic
  • Wenn IAB TCF erforderlich ist - für Google-Werbeprodukte muss die CMP seit Februar 2026 Google-zertifiziert und auf TCF v2.3 aktualisiert sein
  • Für einfachere Compliance

Empfohlene CMPs

CMPKostenlosVorteile
CookiebotBegrenztAutomatisches Scanning
UsercentricsNeinUmfangreiche Features
KlaroJa (Open Source)Selbst gehostet
OsanoBegrenztEinfache Einrichtung
  • Opt-In für alle nicht-essentiellen Cookies
  • Keine vorangekreuzten Checkboxen
  • “Ablehnen”-Button gleichwertig sichtbar
  • Cookie-Kategorien erklärt
  • Link zur Datenschutzerklärung
  • Widerrufsmöglichkeit vorhanden
  • Scripts erst nach Consent laden
  • Google Consent Mode v2 implementiert
  • Mobile-optimiert
  • Barrierefrei (ARIA, Focus-Management)
  • Dokumentation der Einwilligungen

Fazit

Ein DSGVO-konformer Cookie-Banner schützt Sie vor Bußgeldern und zeigt Besuchern, dass Sie Datenschutz ernst nehmen. Mit den richtigen Techniken - Opt-In, gleichwertige Buttons, Consent Mode - können Sie Compliance und Nutzerfreundlichkeit verbinden.

Für eine vollständige technische SEO-Implementierung inklusive Datenschutz beraten wir Sie gerne.


FAQ

Bei ausschließlich technisch notwendigen Cookies ist kein Banner erforderlich. Allerdings sollten Sie in der Datenschutzerklärung darüber informieren.

Die DSGVO gibt keine genaue Frist vor. Empfohlen werden 6-12 Monate, danach sollten Sie erneut fragen.

Gilt die DSGVO auch für Nutzer außerhalb der EU?

Die DSGVO gilt, wenn Sie Ihre Website an EU-Bürger richten oder deren Verhalten beobachten - unabhängig davon, wo die Nutzer gerade sind.

Nein, Kategorien reichen aus. Allerdings müssen Sie in der Datenschutzerklärung detailliert informieren, welche Cookies Sie setzen.

Arnold Wender, SEO-Experte

SEO-Experte & Geschäftsinhaber

Arnold Wender ist Gründer und Geschäftsinhaber der SEO-Agentur Halle (Saale). Mit über 19 Jahren Erfahrung in der Suchmaschinenoptimierung hilft er Unternehmen in Sachsen-Anhalt, ihre Online-Sichtbarkeit nachhaltig zu verbessern und mehr qualifizierte Anfragen zu generieren.

Profil anzeigen

Fragen zu Ihrem Projekt?

Wir setzen genau das um, was Sie hier gelesen haben — persönlich, transparent und seit 2007. Mehr dazu unter Technisches SEO.

Kostenlose SEO-Analyse anfordern