Kostenloses DSGVO-Tool · 2026

Cookie Banner Generator — kostenlos erstellen, DSGVO-konform, ohne Plugin

Erstelle deinen Cookie-Banner kostenlos in 60 Sekunden: Position, Farben, Texte und Kategorien mit Live-Vorschau anpassen, fertigen Code für HTML, WordPress, Nuxt, Vue, React, Next.js, Angular, Astro oder SvelteKit exportieren. DSGVO- und TTDSG-konform, ohne externe Bibliothek, ohne Tracker, ohne Abhängigkeiten — als ein einziges Script-Tag einfügen und fertig.

Desktop-Tool

Bitte am Desktop öffnen

Der Cookie-Banner-Konfigurator braucht zum Vorschauen und Anpassen viel Platz. Damit alle Slider, Farbwähler und die Live-Vorschau nebeneinander passen, ist er ausschließlich auf Bildschirmen ab 1100 px Breite nutzbar.

Öffne diese Seite einfach auf deinem Laptop oder Desktop — die Adresse merken oder dir per Mail an dich selbst schicken.

Schritt 1 — Banner gestalten

Cookie-Banner kostenlos konfigurieren: Position, Farben und Kategorien

Position

Farben

Eckrundung14 px

Größe

Titel-Schriftgröße15 px
Beschreibungs-Schriftgröße14 px
Maximale Breite560 px
Innenabstand22 px

Max. Breite wirkt vor allem bei Modal-Positionen. Innenabstand steuert die effektive Banner-Höhe (oben/unten).

Texte

Cookie-Kategorien

Verlinkungen

Verhalten

Live-Vorschau

fastglobeit.de

Cookies und Datenschutz

Wir nutzen Cookies, um unsere Website zu verbessern, Inhalte zu personalisieren und den Datenverkehr zu analysieren. Du entscheidest, welche Kategorien wir nutzen dürfen. Datenschutz · Impressum

Einstellungen
Notwendig (immer aktiv)Technisch erforderliche Cookies, ohne die die Website nicht funktioniert (Session, CSRF-Schutz).
StatistikHilft uns zu verstehen, wie Besucher die Website nutzen (z.B. Google Analytics, Matomo).
MarketingWird verwendet, um Werbung relevanter für dich zu gestalten (z.B. Meta-Pixel, Google Ads).
KomfortSpeichert Einstellungen wie Sprache oder Region für eine bessere Nutzererfahrung.

So sieht der Banner auf einer Beispielseite aus. Buttons sind hier nur Vorschau-Elemente, das funktionierende Verhalten steckt im generierten Code.

Schritt 2 — Code für deine Technologie

Cookie-Banner Code für dein Framework kopieren — sofort einsatzbereit

cookie-banner.html
<!--
  FastglobeIT Cookie-Banner — HTML / Vanilla
  Diesen einen Script-Tag einfach vor </body> einfügen. Fertig.
  Eingewilligte Kategorien sind via window.fgConsent.has('analytics') etc. abfragbar.
-->
<script>
(function(){
  var CFG = {"positionCss":"bottom:0;left:0;right:0;max-width:560px;margin:0 auto;","needsOverlay":false,"radius":14,"btnRadius":10,"fontSize":15,"descSize":14,"padding":22,"paddingX":24,"bg":"#0f0f0f","text":"#f5f1e8","primary":"#d7b37a","titleText":"Cookies und Datenschutz","descText":"Wir nutzen Cookies, um unsere Website zu verbessern, Inhalte zu personalisieren und den Datenverkehr zu analysieren. Du entscheidest, welche Kategorien wir nutzen dürfen.","acceptText":"Alle akzeptieren","rejectText":"Alle ablehnen","settingsText":"Einstellungen","saveText":"Auswahl speichern","privacyUrl":"/datenschutz","imprintUrl":"/impressum","showReject":true,"showSettings":true,"categories":[{"id":"necessary","label":"Notwendig","description":"Technisch erforderliche Cookies, ohne die die Website nicht funktioniert (Session, CSRF-Schutz).","required":true,"enabled":true},{"id":"analytics","label":"Statistik","description":"Hilft uns zu verstehen, wie Besucher die Website nutzen (z.B. Google Analytics, Matomo).","required":false,"enabled":false},{"id":"marketing","label":"Marketing","description":"Wird verwendet, um Werbung relevanter für dich zu gestalten (z.B. Meta-Pixel, Google Ads).","required":false,"enabled":false},{"id":"preferences","label":"Komfort","description":"Speichert Einstellungen wie Sprache oder Region für eine bessere Nutzererfahrung.","required":false,"enabled":false}]};
  var KEY = 'fg-cookie-consent';
  var VERSION = '1';

  function esc(str){ return String(str).replace(/[&<>"']/g, function(c){
    return ({ '&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;',"'":'&#39;' })[c];
  }); }

  // === CSS injizieren ===
  var css = ''
    + '#fgc-root,#fgc-overlay{font-family:system-ui,-apple-system,sans-serif;box-sizing:border-box}'
    + '#fgc-root,#fgc-root *{box-sizing:border-box}'
    + '#fgc-root[hidden]{display:none}'
    + '#fgc-root{position:fixed;' + CFG.positionCss
      + 'background:' + CFG.bg + ';color:' + CFG.text + ';'
      + 'border:1px solid rgba(255,255,255,0.08);'
      + 'border-radius:' + CFG.radius + 'px;'
      + 'box-shadow:0 22px 50px rgba(0,0,0,0.4);'
      + 'padding:' + CFG.padding + 'px ' + CFG.paddingX + 'px;'
      + 'z-index:99999;font-size:' + CFG.fontSize + 'px;line-height:1.55}'
    + '#fgc-root h2{margin:0 0 8px;font-size:17px;font-weight:700;color:' + CFG.text + '}'
    + '#fgc-root p{margin:0 0 14px;color:' + CFG.text + ';opacity:.85;font-size:' + CFG.descSize + 'px}'
    + '#fgc-root a{color:' + CFG.primary + ';text-decoration:underline}'
    + '#fgc-root .fgc-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}'
    + '#fgc-root button{border:none;border-radius:' + CFG.btnRadius + 'px;padding:10px 18px;font-size:14px;font-weight:700;cursor:pointer;transition:opacity .15s}'
    + '#fgc-root button:hover{opacity:.88}'
    + '#fgc-root .fgc-btn-primary{background:' + CFG.primary + ';color:#111}'
    + '#fgc-root .fgc-btn-ghost{background:transparent;color:' + CFG.text + ';border:1px solid rgba(255,255,255,0.18)}'
    + '#fgc-root details{margin:10px 0 14px}'
    + '#fgc-root details summary{cursor:pointer;padding:8px 0;font-size:13px;color:' + CFG.primary + ';font-weight:600;list-style:none}'
    + '#fgc-root details summary::-webkit-details-marker{display:none}'
    + '#fgc-root details summary::before{content:"+";margin-right:6px;font-weight:800}'
    + '#fgc-root details[open] summary::before{content:"−"}'
    + '#fgc-root .fgc-cat{display:flex;gap:10px;padding:10px 0;border-top:1px solid rgba(255,255,255,0.06)}'
    + '#fgc-root .fgc-cat input{margin-top:4px;accent-color:' + CFG.primary + '}'
    + '#fgc-root .fgc-cat-text strong{display:block;font-size:13px;font-weight:700}'
    + '#fgc-root .fgc-cat-text small{display:block;font-size:12px;opacity:.7;margin-top:2px}'
    + (CFG.needsOverlay ? '#fgc-overlay{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:99998;backdrop-filter:blur(4px)}' : '');
  var styleEl = document.createElement('style');
  styleEl.setAttribute('data-fgc','1');
  styleEl.appendChild(document.createTextNode(css));
  document.head.appendChild(styleEl);

  // === DOM bauen ===
  var catHtml = CFG.categories.map(function(c){
    var checked = c.required || c.enabled ? 'checked' : '';
    var disabled = c.required ? 'disabled' : '';
    var required = c.required ? ' (immer aktiv)' : '';
    return '<label class="fgc-cat">'
      + '<input type="checkbox" name="cat" value="' + esc(c.id) + '" ' + checked + ' ' + disabled + '>'
      + '<span class="fgc-cat-text">'
      + '<strong>' + esc(c.label) + esc(required) + '</strong>'
      + '<small>' + esc(c.description) + '</small>'
      + '</span></label>';
  }).join('');

  var linksHtml = '<a href="' + esc(CFG.privacyUrl) + '">Datenschutz</a>'
    + (CFG.imprintUrl ? ' &middot; <a href="' + esc(CFG.imprintUrl) + '">Impressum</a>' : '');

  var settingsHtml = CFG.showSettings ? (
    '<details><summary>' + esc(CFG.settingsText) + '</summary>' + catHtml
    + '<div class="fgc-actions" style="margin-top:12px">'
    + '<button type="button" class="fgc-btn-ghost" data-fgc-action="save">' + esc(CFG.saveText) + '</button>'
    + '</div></details>'
  ) : '';

  var rejectBtn = CFG.showReject ? '<button type="button" class="fgc-btn-ghost" data-fgc-action="reject">' + esc(CFG.rejectText) + '</button>' : '';

  if (CFG.needsOverlay){
    var ov = document.createElement('div');
    ov.id = 'fgc-overlay';
    document.body.appendChild(ov);
  }

  var root = document.createElement('div');
  root.id = 'fgc-root';
  root.setAttribute('role','dialog');
  root.setAttribute('aria-labelledby','fgc-title');
  root.setAttribute('aria-describedby','fgc-desc');
  root.hidden = true;
  root.innerHTML = ''
    + '<h2 id="fgc-title">' + esc(CFG.titleText) + '</h2>'
    + '<p id="fgc-desc">' + esc(CFG.descText) + ' ' + linksHtml + '</p>'
    + settingsHtml
    + '<div class="fgc-actions">'
    + rejectBtn
    + '<button type="button" class="fgc-btn-primary" data-fgc-action="accept-all" style="margin-left:auto">' + esc(CFG.acceptText) + '</button>'
    + '</div>';
  document.body.appendChild(root);

  var overlay = document.getElementById('fgc-overlay');

  // === Logik ===
  function load(){
    try { var v = JSON.parse(localStorage.getItem(KEY) || 'null'); if (v && v.v === VERSION) return v; } catch(e) {}
    return null;
  }
  function persist(map){
    var entry = { v: VERSION, ts: Date.now() };
    CFG.categories.forEach(function(c){ entry[c.id] = c.required ? true : !!map[c.id]; });
    localStorage.setItem(KEY, JSON.stringify(entry));
    hide();
    window.dispatchEvent(new CustomEvent('fg:consent', { detail: entry }));
  }
  function hide(){ root.hidden = true; if(overlay){ overlay.style.display = 'none'; } }
  function show(){ root.hidden = false; if(overlay){ overlay.style.display = ''; } }
  function readChecked(){
    var m = {};
    root.querySelectorAll('input[name="cat"]').forEach(function(el){ m[el.value] = el.checked; });
    return m;
  }
  function acceptAll(){ var m = {}; CFG.categories.forEach(function(c){ m[c.id] = true; }); persist(m); }
  function rejectAll(){ var m = {}; CFG.categories.forEach(function(c){ m[c.id] = c.required; }); persist(m); }

  root.addEventListener('click', function(e){
    var t = e.target;
    if (!(t instanceof Element)) return;
    var a = t.getAttribute('data-fgc-action');
    if (a === 'accept-all') acceptAll();
    else if (a === 'reject') rejectAll();
    else if (a === 'save') persist(readChecked());
  });

  window.fgConsent = {
    get: load,
    has: function(cat){ var v = load(); return v ? !!v[cat] : false; },
    show: show,
    reset: function(){ localStorage.removeItem(KEY); show(); }
  };

  if (!load()) show();
})();
</script>

Welche Variante für welches Projekt?

Cookie-Banner für 9 Frameworks im Vergleich

Cookie-Banner HTML / Vanilla

Ein einziger Script-Tag, direkt vor dem schließenden body-Tag einfügen — fertig. Drop-in für jede Website: statische HTML-Seite, Jekyll, Hugo, Webflow, Shopify oder klassisches Theme. Keine npm-Pakete, keine Build-Pipeline, keine externen CDN-Aufrufe.

Cookie-Banner Nuxt 3 / Vue 3

Single-File-Component mit Composition API. Als CookieBanner.vue speichern und in App.vue oder layouts/default.vue einbinden. Nuxt-Auto-Imports werden automatisch genutzt, in reinem Vue greift der explizite ref/computed/onMounted-Import.

Cookie-Banner React / Next.js

TypeScript-Komponente mit useState und useEffect. In Next.js (App Router) als Client Component mit „use client" markiert. Inline-Styles statt CSS-Modul oder Tailwind — passt in jedes bestehende React-Setup ohne zusätzliche Abhängigkeiten.

Cookie-Banner Angular 17+

Standalone-Component mit eingebauten Imports von CommonModule und FormsModule. Direkt im App-Template oder Layout einbinden, kein Service-Provider nötig. Funktioniert sowohl in klassischen NgModule- als auch in modernen Standalone-Apps.

Cookie-Banner WordPress ohne Plugin

PHP-Datei, die sich als Plugin oder als Theme-Snippet (functions.php) nutzen lässt. Hängt sich automatisch in wp_footer ein. Keine Backend-Einstellungen, keine Plugin-Updates — die komplette Konfiguration steckt im Code. Ideal für KMU-Websites ohne Cookie-CMP.

Cookie-Banner Astro / SvelteKit

Native Component-Files für die jeweilige Framework-Syntax: .astro mit Frontmatter, .svelte mit reaktivem Markup. Identische Funktionalität, framework-typisches Format. Server-side gerendert für SEO und Performance — der Banner wird beim Hydraten clientseitig aktiv.

Schritt 3 — Einbau und Nutzung

Cookie-Banner einbauen und auf Einwilligungen reagieren

Cookie-Banner einbauen in 30 Sekunden

Generierten Code aus dem Konfigurator kopieren, in dein Projekt einfügen (Component importieren oder HTML-Snippet vor dem schließenden body-Tag) und Seite neu laden. Beim ersten Besuch erscheint der Cookie-Banner automatisch, danach wird die Einwilligung in localStorage gemerkt.

JavaScript Consent-API nutzen

window.fgConsent.has('analytics') liefert true oder false. Damit lädst du Google Analytics, Meta-Pixel oder andere Tracker nur, wenn die Kategorie aktiv ist. Beispiel: if (window.fgConsent.has('analytics')) loadAnalytics();

Reaktiv auf Cookie-Einwilligung reagieren

Nach jeder Auswahl feuert das Custom-Event window.addEventListener('fg:consent', e => ...). Damit initialisierst du Google Tag Manager, Hotjar oder Werbe-Pixel dynamisch, sobald die jeweilige Cookie-Kategorie bestätigt wurde — ohne kompletten Seiten-Reload.

Cookie-Banner erneut anzeigen

Wenn Nutzer ihre Einwilligung ändern wollen, ruf window.fgConsent.show() oder window.fgConsent.reset() auf — typisch über einen „Cookie-Einstellungen"-Link im Footer. Das ist auch nach DSGVO Pflicht: Einwilligung muss jederzeit widerrufbar sein.

Du brauchst Unterstützung?

Cookie-Banner DSGVO-konform in deine Website einbauen lassen

Der Konfigurator liefert dir den fertigen Code. Wenn du den Einbau lieber abgeben willst oder unsicher bist, ob deine Website insgesamt DSGVO-konform ist, übernehmen wir das komplett: von der Cookie-Banner-Integration über die Tracker-Anpassung bis zur Aktualisierung deiner Datenschutzerklärung. Eine Komplettlösung für KMU, Selbstständige und Agenturen.

DSGVO-konforme Cookie-Banner Einrichtung

Wir installieren den Cookie-Banner DSGVO- und TTDSG-konform in deiner Website — egal ob WordPress, Shopify, Webflow, TYPO3 oder Custom-Stack. Wir passen Farben und Texte an dein Branding an und sorgen dafür, dass Google Analytics, Meta-Pixel und andere Tracker erst nach Einwilligung laden.

Datenschutzerklärung rechtssicher aktualisieren

Wir prüfen deine bestehende Datenschutzerklärung auf alle Pflichtangaben nach DSGVO Art. 13 und 14 und ergänzen sie um die konkreten Tools, die deine Website tatsächlich nutzt: Hosting, Analytics, Schriftarten, Embeds, CRM, Newsletter-Provider und Zahlungsdienstleister.

Tracking-Scripts DSGVO-konform umbauen

Wir analysieren mit unserem DSGVO-Checker, welche Scripts vor der Einwilligung feuern, und bauen sie so um, dass sie erst nach Consent laden. Inklusive Google-Fonts-Lokalisierung, YouTube-NoCookie-Umstellung und IP-Anonymisierung bei Matomo oder Plausible.

Laufende Datenschutz-Betreuung

Datenschutz ist kein Einmalprojekt. Bei jedem neuen Tool oder Tracker auf deiner Website müssen Cookie-Banner und Datenschutzerklärung mitwachsen. Im Rahmen unserer SEO- und Pflegepakete übernehmen wir die Pflege automatisch — du musst dich um nichts kümmern.

Anwaltlich abgesicherte Datenschutz-Texte

Auf Wunsch arbeiten wir mit deinem Datenschutzanwalt zusammen oder vermitteln einen geeigneten Partner aus unserem Netzwerk. So tragen nicht nur die technische Banner-Lösung, sondern auch die rechtlichen Texte zur Datenverarbeitung wirklich.

Abmahnsicherheit vor dem Website-Launch

Vor jedem Website-Launch oder Relaunch testen wir die komplette DSGVO-Konformität: Cookie-Banner-Verhalten, Tracker-Reihenfolge, Drittland-Übermittlungen (USA-Transfer), Impressum-Pflichten nach §5 TMG. Du gehst online ohne Risiko, abgemahnt zu werden.

FAQ

Häufige Fragen zum Cookie-Banner Generator (FAQ)

Technische, rechtliche und praktische Antworten zum kostenlosen Cookie-Banner-Tool, zur DSGVO-Konformität und zur Einbindung in WordPress, React, Vue und mehr.

Ist der Cookie-Banner-Generator wirklich kostenlos?

Ja, vollständig kostenlos und ohne Registrierung. Du kannst den Cookie-Banner unbegrenzt oft generieren, anpassen und auf beliebig vielen Websites einsetzen — privat oder gewerblich. Es gibt keine versteckten Limits, keine „Premium"-Features hinter einer Paywall und keine Wasserzeichen im generierten Code.

Welche Frameworks unterstützt der Cookie-Banner Generator?

Der Generator erzeugt fertigen Cookie-Banner-Code für 9 Technologien: HTML/Vanilla, Nuxt 3, Vue 3, React 18+, Next.js (App Router), Angular 17+, WordPress (als Plugin oder als functions.php-Snippet), Astro und SvelteKit. Alle Versionen sind funktional identisch — sie unterscheiden sich nur im Verpackungsformat.

Brauche ich externe Abhängigkeiten, npm-Pakete oder ein Plugin?

Nein. Der generierte Cookie-Banner ist komplett standalone — ohne externe Libraries, ohne CDN-Aufrufe, ohne jQuery, ohne zentrales Cookie-CMP-Backend. Alles läuft direkt im Browser über die native LocalStorage-API. Auch die WordPress-Variante kommt ohne Plugin-Backend aus.

Wie speichert der Cookie-Banner die Einwilligung der Nutzer?

Die Auswahl wird in localStorage unter dem Key "fg-cookie-consent" als JSON-Objekt mit Versionsnummer und Zeitstempel gespeichert. Es werden keine zusätzlichen Cookies vom Banner selbst gesetzt — der Banner ist damit „technisch notwendig" im Sinne von TTDSG §25(2) und braucht selbst keine Einwilligung.

Wie frage ich im JavaScript-Code ab, ob Analytics erlaubt ist?

Nach dem Laden des Banners steht global window.fgConsent zur Verfügung. Beispiel: if (window.fgConsent.has("analytics")) { /* Google-Analytics-Code laden */ }. Zusätzlich feuert der Banner beim Speichern ein Custom-Event window.dispatchEvent(new CustomEvent("fg:consent", { detail: {...} })) — darüber kannst du reaktiv Tracker nachladen, sobald die Kategorie aktiviert wird.

Ist der Cookie-Banner DSGVO- und TTDSG-konform?

Der Banner stellt die rechtlich geforderten Funktionen bereit: granularer Consent je Kategorie, gleichberechtigte „Alle ablehnen"-Option, dauerhafte Speicherung der Auswahl und jederzeitiger Widerruf. Die DSGVO-Konformität deiner Gesamt-Website hängt aber von weiteren Faktoren ab: nicht-essentielle Tracker dürfen erst NACH Consent geladen werden, die Datenschutzerklärung muss alle Tools nennen, und die Einwilligung muss freiwillig sein. Für rechtssichere Texte empfehlen wir die Prüfung durch einen Datenschutzanwalt.

Was bedeutet TTDSG §25 und warum ist das wichtig für Cookies?

Das Telekommunikation-Telemedien-Datenschutz-Gesetz §25 (seit Dezember 2021 in Kraft, ab 2024 als TDDDG fortgeführt) verlangt eine explizite Einwilligung für jedes Speichern oder Auslesen von Informationen auf dem Endgerät des Nutzers, das nicht „unbedingt erforderlich" ist. In der Praxis: alle Tracking-, Marketing- und Komfort-Cookies brauchen ein Opt-in. Session-Cookies, CSRF-Tokens und Warenkorb-Cookies sind technisch notwendig und brauchen keine Einwilligung.

Wie ändere ich den Cookie-Banner nach der Einrichtung?

Du kannst den generierten Code jederzeit direkt anpassen — es ist normaler HTML/JS/Vue/React/PHP-Code, keine Black Box. Wenn du die rechtlich relevanten Texte änderst (z. B. neue Tracker ergänzst), solltest du die VERSION-Konstante im Code hochzählen, damit Besucher den Banner erneut bestätigen müssen. So bleibst du DSGVO-konform.

Kann ich den Cookie-Banner auf mehreren Subdomains teilen?

LocalStorage ist pro Origin (Protokoll + Domain + Port) isoliert — eine Einwilligung auf shop.beispiel.de gilt nicht automatisch auf www.beispiel.de. Wenn du das brauchst, müsstest du auf Cookies mit Domain-Attribut umstellen und CORS oder einen zentralen Consent-Service einplanen. Für die meisten KMU-Setups reicht eine separate Einwilligung je Subdomain völlig aus.

Wann muss ich Nutzer erneut um Cookie-Zustimmung bitten?

Empfehlung: nach 12 Monaten (in Anlehnung an die übliche Cookie-Lebensdauer), oder sofort wenn du neue Tracker einsetzt, die in der bisherigen Einwilligung nicht enthalten waren. Das erreichst du, indem du die VERSION-Konstante im Banner-Code erhöhst — gespeicherte Einwilligungen mit alter Version werden ignoriert und der Banner erscheint erneut.

Wie passe ich die Banner-Farben an mein Website-Design an?

Im Konfigurator findest du drei Farbfelder: Hintergrund, Text und Primärfarbe (Akzent für Buttons und Links). Wähle Werte, die zu deinem Branding passen. Faustregel: ausreichend Kontrast zwischen Hintergrund und Text (WCAG AA: mindestens 4,5:1), und der „Akzeptieren"-Button sollte gut sichtbar sein — aber nicht so dominant, dass „Ablehnen" optisch untergeht (das wäre Dark-Pattern und nach DSGVO unzulässig).

Funktioniert der Cookie-Banner auch auf mobilen Geräten?

Ja. Der generierte Banner ist vollständig responsive: bei schmalen Bildschirmen werden die Buttons untereinander gestapelt, die maximale Breite wird automatisch reduziert, und der Innenabstand passt sich an. Modal-Varianten (Mitte oder Ecke) zeigen sich auf Smartphones als angepasste Card mit „width: calc(100% - 32px)".