Banner offers accept-all, reject-all, and per-category granular controls
Why it matters
GDPR Recital 43 states that consent is not freely given when the data subject cannot refuse without detriment, and GDPR Art. 7 requires withdrawal to be as easy as giving consent. A banner with only an 'Accept All' button — no per-category controls, no reject path — is an unlawful consent mechanism regardless of its visual polish. Regulators treat accept-only banners as no consent at all, meaning every cookie set under them lacks lawful basis under both GDPR Art. 6(1)(a) and ePrivacy Art. 5(3).
Severity rationale
High because a banner lacking a reject path or per-category controls is treated by EU regulators as an unlawful consent mechanism, invalidating all non-essential cookies collected under it.
Remediation
Implement a three-path banner: Accept All, Reject All, and a per-category preference panel. All three must be reachable from the initial banner without extra navigational steps beyond opening the preferences panel.
export function CookieBanner({ onSave }: { onSave: (state: ConsentState) => void }) {
const [showDetails, setShowDetails] = useState(false)
const [analytics, setAnalytics] = useState(false)
const [marketing, setMarketing] = useState(false)
return (
<div role="dialog" aria-label="Cookie consent">
{showDetails && (
<fieldset>
<legend>Manage preferences</legend>
<label>
<input type="checkbox" checked={analytics}
onChange={e => setAnalytics(e.target.checked)} />
Analytics
</label>
<label>
<input type="checkbox" checked={marketing}
onChange={e => setMarketing(e.target.checked)} />
Marketing
</label>
</fieldset>
)}
<button onClick={() => onSave({ analytics: true, marketing: true })}>Accept all</button>
<button onClick={() => onSave({ analytics: false, marketing: false })}>Reject all</button>
<button onClick={() => showDetails ? onSave({ analytics, marketing }) : setShowDetails(true)}>
{showDetails ? 'Save preferences' : 'Manage preferences'}
</button>
</div>
)
}
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the Cookie & Consent Compliance Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- gdpr · Art. 7 — GDPR — conditions for consent; right to withdraw
- gdpr · Recital 43 — GDPR — consent not freely given when no granular choice is provided
- eprivacy · Art. 5(3) — ePrivacy Directive — granular consent per cookie purpose
- gdpr · Art. 6(1)(a) — Lawfulness of processing — Consent
Taxons
History
- 2026-04-18·v1.0.0·Initial import from cookie-consent-compliance·automated