BFSG 2025: Was das Barrierefreiheitsstärkungsgesetz für Websites bedeutet
Das BFSG verpflichtet Unternehmen zur digitalen Barrierefreiheit. So funktionieren die Anforderungen, Fristen, WCAG-Kriterien und konkrete Umsetzungsschritte.
Rechtliches & Info
Cookie-Consent DSGVO-konform umsetzen: Rechtsgrundlagen, technische Anforderungen, Consent-Management und häufige Fehler.
Ein DSGVO-konformer Cookie-Banner ist Pflicht für fast jede Website. Doch viele Implementierungen sind fehlerhaft und riskieren Bußgelder bis zu 150 Millionen Euro - wie das Beispiel SHEIN in Frankreich zeigt. Dieser Guide zeigt, wie Sie es richtig machen.
Wichtige Deadline: 28. Februar 2026
TCF v2.3 wird ab dem 28. Februar 2026 für alle Websites mit Google-Werbeprodukten (AdSense, Ad Manager, AdMob) im EWR verpflichtend. Consent-Strings ohne das neue Disclosed-Vendors-Segment werden dann ungültig.
Die DSGVO und das TTDSG stellen klare Anforderungen:
Rechtliche Hinweise
Dies ist keine Rechtsberatung. Konsultieren Sie bei Unsicherheiten einen Datenschutzexperten.
Kein Consent erforderlich
Consent erforderlich
Consent erforderlich
Consent empfohlen
<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>
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'
});
}
Consent Mode
Mit Consent Mode v2 kann Google auch ohne volle Einwilligung Conversion-Modelling durchführen.
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');
};
/* 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;
}
<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>
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();
}
<!-- FALSCH -->
<input type="checkbox" id="marketing" checked>
<!-- RICHTIG -->
<input type="checkbox" id="marketing">
Der Ablehnen-Button muss genauso prominent sein wie “Akzeptieren”.
Scripts werden geladen, bevor der Nutzer zustimmt.
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)
});
}
| CMP | Kostenlos | Vorteile |
|---|---|---|
| Cookiebot | Begrenzt | Automatisches Scanning |
| Usercentrics | Nein | Umfangreiche Features |
| Klaro | Ja (Open Source) | Selbst gehostet |
| Osano | Begrenzt | Einfache Einrichtung |
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.
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.
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.
Wender Media unterstützt Sie bei der praktischen Umsetzung — von der technischen Konzeption bis zum Launch. Schreiben Sie uns, wir antworten innerhalb von 24 Stunden.
Jetzt Beratung anfragenKostenlos & unverbindlich — info@wendermedia.info
Das BFSG verpflichtet Unternehmen zur digitalen Barrierefreiheit. So funktionieren die Anforderungen, Fristen, WCAG-Kriterien und konkrete Umsetzungsschritte.
Wie ARIA Landmarks Screenreader-Nutzern helfen, eine Website zu navigieren. Praktische Anleitung für banner, main, navigation und weitere Rollen.
Schritt-für-Schritt-Anleitung zur technischen BFSG-Umsetzung in Astro-Projekten: Semantische HTML-Struktur, ARIA-Rollen, Fokus-Management und reduced-motion.