Cookie-Banner nach TDDDG: wann du einen brauchst, mit Code ohne Consent-Tool
Wann Websites und Apps einen Cookie-Banner brauchen: § 25 TDDDG, localStorage, Umami und cookielose Analyse, Ablehnen-Button und Code ohne Consent-Tool.
Thema: Freelancing & Business · Web-Entwicklung · SaaS & Side Projects
Inhalt (7 Abschnitte)
Kurzantwort: Einen Cookie-Banner brauchst du nur, wenn deine Website oder App etwas auf dem Gerät speichert oder ausliest, das für den gewünschten Dienst nicht unbedingt erforderlich ist (§ 25 TDDDG). Das gilt für Cookies genauso wie für localStorage, sessionStorage und das Auslesen von Geräteeigenschaften per JavaScript. Login, Warenkorb und Sicherheitsfunktionen gehen ohne Einwilligung, Analyse, Werbung und eingebettete Fremdinhalte wie YouTube oder Google Maps nur mit. Cookielose Analyse wie Umami spart oft den Banner, einen Freibrief dafür gibt es von den Aufsichtsbehörden aber nicht.
Stand: 20. Oktober 2026. Grundlage sind § 25 TDDDG auf gesetze-im-internet.de, die Orientierungshilfe der Datenschutzkonferenz (DSK) für Anbieter digitaler Dienste in der Version 1.2 vom November 2024 und die FAQ von Umami, abgerufen an diesem Tag. Randnummern (Rn.) beziehen sich auf die Orientierungshilfe. Keine Rechtsberatung.
Was § 25 TDDDG regelt
§ 25 Abs. 1 TDDDG verlangt eine Einwilligung für jede Speicherung von Informationen auf dem Gerät der Nutzer und für jeden Zugriff auf Informationen, die dort schon gespeichert sind. Die Regel steht nicht in der DSGVO, sie gilt zusätzlich. Drei Punkte überraschen viele Entwickler:
| Frage | Antwort der DSK |
|---|---|
| Nur Cookies? | Nein. Die Vorschrift ist technikneutral, erfasst sind zum Beispiel auch Local- und Session-Storage (Rn. 21). |
| Nur personenbezogene Daten? | Nein. Die Einwilligung ist unabhängig vom Personenbezug nötig (Rn. 26). |
| Und ohne Speichern? | Liest ein Skript aktiv Eigenschaften des Geräts aus und schickt sie für einen Fingerprint an einen Server, wertet die DSK das als Zugriff (Rn. 24). |
In Apps zählen laut DSK besonders der Zugriff auf Gerätekennungen, Werbe-IDs, Kontakte oder Telefonnummern dazu (Rn. 22).
Was ohne Einwilligung geht
Keine Einwilligung brauchst du, wenn die Speicherung oder der Zugriff „unbedingt erforderlich“ ist, damit du einen „vom Nutzer ausdrücklich gewünschten digitalen Dienst“ zur Verfügung stellen kannst (§ 25 Abs. 2 Nr. 2 TDDDG). Maßgeblich ist laut DSK die Sicht der Nutzer: Gewünscht ist der Dienst, den jemand bewusst aufruft. Zusatzfunktionen wie Kontaktformular, Chat oder Kartendienst sind erst gewünscht, wenn jemand sie tatsächlich nutzt (Rn. 76).
| Speicherung | Ohne Einwilligung? | Begründung |
|---|---|---|
| Sitzungs-Cookie nach dem Login | ja | Die Anmeldung ist der gewünschte Dienst. |
| Warenkorb | ja, ab dem ersten Artikel im Korb | Erst dann ist die Funktion gewünscht (Rn. 80). |
| Sicherheits-Cookie gegen wiederholte Fehlanmeldungen | ja | Beispiel der DSK, gilt nicht für Dienste Dritter (Rn. 83). |
| gespeicherte Banner-Entscheidung ohne Kennung | ja | Die DSK hält dafür einen Cookie ohne Nutzerkennung für ausreichend (Rn. 84). |
| Sprache oder dunkles Design, das jemand aktiv wählt | nach unserer Einschätzung ja | Die Einstellung ist ab der Wahl gewünscht (Logik aus Rn. 76). |
| Besucherzählung und Analyse | nicht per se | Laut DSK nicht automatisch Teil des Basisdienstes (Rn. 77). |
| A/B-Tests | nicht per se | ebenso (Rn. 77) |
| Werbung, Retargeting, Social-Media-Pixel | nein | nicht erforderlich für den Dienst, den Nutzer aufrufen |
| eingebettetes YouTube-Video oder Google Maps | erst, wenn jemand es lädt | Zusatzdienst, der nicht mit dem Seitenaufruf gewünscht ist (Rn. 76) |
Cookielose Analyse: reicht Umami ohne Banner?
Umami schreibt in seiner FAQ, es setze keine Cookies und ein Cookie-Hinweis sei nicht nötig. Besucher erkennt Umami über eine anonyme Sitzungskennung ohne Cookies. Das ist eine Aussage des Herstellers, keine der Aufsichtsbehörden.
Die DSK trifft bewusst keine pauschale Aussage, ob Reichweitenmessung ohne Einwilligung zulässig ist (Rn. 87). Sie unterscheidet:
- Reine Zählung: Den Zähler je Seitenaufruf erhöhen, Seitenaufrufe aus Logdateien ohne personenbezogene Daten zählen oder ein einfaches Zählpixel des eigenen Dienstes, das keine weiteren Nutzerdaten erfasst (Rn. 88). Das ist der einfachste Fall.
- Reichweitenanalyse: Geräte, Software, Verweildauer, Einstiegsseiten, Klickwege. Ob das ohne Einwilligung geht, lässt sich laut DSK „allenfalls für eine genau definierte Konfiguration und Zweckbestimmung“ beurteilen (Rn. 89). Selbst die einfache Messung von Besucherzahlen sei nicht per se Teil des Basisdienstes (Rn. 90).
Unsere Einschätzung: Ohne Cookies und ohne Speicherung auf dem Gerät entfällt der klassische Fall von § 25 TDDDG. Offen bleibt, ob das Auslesen von Bildschirmgröße oder Sprache per Skript als Zugriff zählt (Rn. 24). Je weniger dein Analyse-Skript ausliest und je näher es an einer reinen Zählung bleibt, desto besser kannst du den Verzicht auf einen Banner begründen. Die DSGVO gilt unabhängig davon: Rechtsgrundlage und ein Abschnitt in der Datenschutzerklärung sind trotzdem Pflicht. Die Einzelheiten stehen in der DSGVO-Checkliste für Websites.
So muss die Einwilligung aussehen
Die DSK stellt an Banner konkrete Anforderungen:
- Ablehnen gleichwertig: Neben „Einwilligung erteilen“ muss es einen in Größe, Farbe, Kontrast und Schrift vergleichbaren Knopf zum Ablehnen geben (Rn. 135). Ein Ablehnen außerhalb des Banners oder versteckt im Fließtext reicht nicht (Rn. 136).
- Vorher nichts laden: Skripte, Cookies und Fremdinhalte, die eine Einwilligung brauchen, laden erst nach dem Klick.
- Konkrete Zwecke: Der Banner nennt, wofür gespeichert wird, nicht nur „für ein besseres Nutzungserlebnis“.
- Widerruf so leicht wie die Zustimmung: etwa ein Link „Cookie-Einstellungen“ in der Fußzeile, der den Banner wieder öffnet (Art. 7 Abs. 3 DSGVO).
- Entscheidung sparsam speichern: nur die Wahl selbst, ohne Nutzerkennung (Rn. 84).
Code: Einwilligung ohne Consent-Tool
Für ein Indie-Projekt mit einem einzigen einwilligungspflichtigen Dienst reicht oft ein kleines eigenes Skript. Das Beispiel lädt ein Analyse-Skript erst nach Zustimmung und speichert nur die Entscheidung. Der Zugriff auf localStorage steckt in try/catch, weil er im privaten Modus oder bei gesperrtem Speicher scheitern kann.
<div id="einwilligung" role="dialog" aria-labelledby="einwilligung-titel" hidden>
<p id="einwilligung-titel"><strong>Darf ich messen, welche Seiten gelesen werden?</strong></p>
<p>Dafür speichert das Analyse-Tool eine Kennung in deinem Browser. Details in der <a href="/datenschutz">Datenschutzerklärung</a>.</p>
<button type="button" data-wahl="ja">Erlauben</button>
<button type="button" data-wahl="nein">Ablehnen</button>
</div>
<script>
const SCHLUESSEL = 'einwilligung-analyse-v1';
const lies = () => { try { return localStorage.getItem(SCHLUESSEL); } catch { return null; } };
const merke = (wert) => { try { localStorage.setItem(SCHLUESSEL, wert); } catch { /* dann fragt der Banner beim nächsten Mal wieder */ } };
function ladeAnalyse() {
const s = document.createElement('script');
s.src = 'https://analyse.example.com/script.js';
s.defer = true;
document.head.appendChild(s);
}
const box = document.getElementById('einwilligung');
if (lies() === 'ja') ladeAnalyse();
else if (lies() === null) box.hidden = false;
box.addEventListener('click', (e) => {
const wahl = e.target.dataset && e.target.dataset.wahl;
if (!wahl) return;
merke(wahl);
box.hidden = true;
if (wahl === 'ja') ladeAnalyse();
});
// Fußzeilen-Link „Cookie-Einstellungen“: <a href="#" data-einwilligung-aendern>
document.querySelectorAll('[data-einwilligung-aendern]').forEach((a) =>
a.addEventListener('click', (e) => { e.preventDefault(); box.hidden = false; }));
</script>
Zwei Dinge fehlen bewusst: Ein Widerruf entfernt Cookies, die das Analyse-Skript schon gesetzt hat, nicht von selbst; lösche sie beim Wechsel auf „nein“ und lade die Seite neu. Und die Version im Schlüssel (-v1) erhöhst du, wenn sich Zweck oder Anbieter ändern, damit alle neu gefragt werden.
Fremdinhalte erst auf Klick laden
Für YouTube-Videos oder Karten zeigst du einen Platzhalter mit Hinweis und lädst den Inhalt erst, wenn jemand ihn ausdrücklich anfordert:
<div class="extern" data-src="https://www.youtube-nocookie.com/embed/VIDEO_ID">
<p>Beim Abspielen lädt das Video von YouTube, dabei werden Daten an Google übertragen.</p>
<button type="button">Video von YouTube laden</button>
</div>
<script>
document.querySelectorAll('.extern').forEach((box) => {
box.querySelector('button').addEventListener('click', () => {
const f = document.createElement('iframe');
f.src = box.dataset.src;
f.title = 'Video';
f.allow = 'fullscreen; picture-in-picture';
f.width = 560; f.height = 315;
box.replaceChildren(f);
}, { once: true });
});
</script>
So prüfst du deine Seite
- Seite in einem privaten Fenster öffnen und nichts anklicken.
- In den Entwicklerwerkzeugen des Browsers unter „Application“ (Chrome) oder „Web-Speicher“ (Firefox) Cookies, Local Storage und Session Storage ansehen. Alles, was dort vor der Entscheidung steht, muss unbedingt erforderlich sein.
- Im Tab „Network“ prüfen, welche fremden Server vor der Entscheidung angefragt werden. Ein Prüfskript dafür steht in der DSGVO-Checkliste.
- „Ablehnen“ klicken, neu laden und beide Punkte wiederholen.
Neben dem Banner braucht deine Seite ein Impressum; was hineingehört, steht im Ratgeber Impressum für App, SaaS und Side Project.
Häufige Fragen
Brauche ich einen Cookie-Banner, wenn ich nur technisch notwendige Cookies setze?
Nein. Für Speicherungen, die für den vom Nutzer gewünschten Dienst unbedingt erforderlich sind, ist keine Einwilligung nötig (§ 25 Abs. 2 Nr. 2 TDDDG). Informieren musst du in der Datenschutzerklärung trotzdem.
Gilt § 25 TDDDG auch für localStorage?
Ja. Laut DSK ist die Vorschrift technikneutral und erfasst auch Local- und Session-Storage (Rn. 21 der Orientierungshilfe).
Darf ich Umami ohne Cookie-Banner einsetzen?
Umami setzt laut Hersteller keine Cookies. Die DSK trifft keine pauschale Aussage zur Reichweitenmessung ohne Einwilligung, sie verlangt eine Prüfung der konkreten Konfiguration (Rn. 87 bis 89). Je näher die Messung an einer reinen Zählung bleibt, desto besser ist der Verzicht auf den Banner begründbar.
Reicht im Banner ein Knopf „Einstellungen“ statt „Ablehnen“?
Nein. Die DSK verlangt neben der Zustimmung eine gleichwertige Möglichkeit, ohne Einwilligung fortzufahren, vergleichbar in Größe, Farbe, Kontrast und Schrift (Rn. 135).
Muss ich die Einwilligung nachweisen?
Ja, aber dafür brauchst du keine langlebige Nutzerkennung. Laut DSK genügt in der Regel, die eingesetzten Abläufe darzulegen und die Entscheidung in einem Cookie ohne Kennung zu speichern (Rn. 84). Alte Banner-Texte solltest du aufbewahren (Rn. 85).
Gilt das auch für Apps?
Ja. § 25 TDDDG gilt für alle Endgeräte. In Apps sind laut DSK besonders Gerätekennungen, Werbe-IDs, Kontakte und Telefonnummern betroffen (Rn. 22).