A Cookie Banner Does Not Make Your Website GDPR-Compliant

A closed consent gate stands in front of a website machine while hidden pipes already connect it to external systems.

A website can display a polished cookie banner and still contact Google, Meta, a video platform, or another third party before the visitor makes a choice. The banner is only the interface. The real test is the site’s behaviour underneath it.

For a German audience, the starting point is not whether a particular cookie exists. Section 25 TDDDG addresses storing information on, or accessing information from, a user’s device. Consent is generally required unless the operation is used solely to transmit a communication or is strictly necessary to provide a service explicitly requested by the user.

This article explains what a developer can verify. It is technical guidance, not a legal opinion on a specific website.

Executive Summary

The banner and the website are two different systems

Compliance depends on whether the implementation respects the choice, not whether the page contains a modal. The German data protection authorities’ cookie-banner guidance says consent-dependent scripts should be blocked while the banner is shown and should run only after an active consent action.

That creates a simple engineering requirement: the consent state must control script and resource loading. Hiding a banner, recording a button click, and loading every integration regardless is not consent management.

What to test before any click

Open a clean browser context and record every external request before interacting with the banner. This catches the most common implementation failure: scripts that start before the consent manager is ready.

Check:

External fonts deserve attention even when they set no marketing cookie. Loading a font from a third party still makes a network request and discloses connection data such as the visitor’s IP address to that provider. Self-hosting a licensed font is often the simpler engineering choice.

Reject must produce a different result

A working Reject action changes the site’s observable behaviour. Repeat the same capture after rejecting optional purposes and compare the request log and storage state.

Test stateExpected technical result
Fresh visitConsent-dependent services remain blocked
Reject all optionalOptional services remain blocked and the preference persists
Accept analytics onlyAnalytics may load, advertising and other unselected services do not
Accept allApproved optional services may load
Withdraw laterNew optional processing stops and the stored choice changes

The comparison should be provider-specific. A single green badge saying “passed” hides too much. The audit should show which domain was contacted, at what stage, by which page component, and under which consent state.

Cookies are not the full scope

A scanner that checks only document.cookie will miss important activity. Section 25 TDDDG refers more broadly to storing information in, or accessing information from, terminal equipment. The DSK guidance also notes that consent-dependent processing can include pixels and fingerprinting methods, not just cookies.

For developers, this means inventorying technologies by behaviour:

The word “cookie” survives because users recognise it. The technical audit must look past the label.

Strictly necessary is a narrow technical claim

A service is not strictly necessary merely because the business finds it useful. The German statute provides an exception when access or storage is strictly necessary to provide a digital service expressly requested by the user.

A practical inventory should record for every technology:

FieldExample of useful evidence
ServiceContact-form session protection
PurposePrevent duplicate or forged submissions
Device access or storageFirst-party session token
TriggerUser opens and submits the form
Claimed basisStrictly necessary for the requested form function
RetentionSession only
ProviderFirst party or named processor

This does not settle the legal analysis, but it forces the implementation claim to become specific and reviewable.

The privacy policy must match runtime behaviour

A technically correct banner can still coexist with incomplete documentation. Compare the live request inventory with the privacy notice and consent interface.

Look for mismatches:

For multilingual sites, treat every language version as part of the same system. Translating an outdated privacy notice reproduces the mismatch instead of solving it.

A repeatable developer audit

The result should be a test record another person can reproduce. A useful workflow is:

  1. Start with a new browser profile and disabled extensions.
  2. Preserve the network log and capture the first load without clicking.
  3. Export requests, response headers, cookies, and browser storage.
  4. Repeat after Reject, selective consent, Accept all, and withdrawal.
  5. Map each external request to its initiating script or component.
  6. Compare runtime behaviour with the banner and privacy policy.
  7. Record the exact page, timestamp, region, browser, consent state, and test version.
  8. Retest after remediation and retain both evidence sets.

Do not call the result a legal certification. A browser test can find technical evidence and documentation mismatches. It cannot determine every lawful basis, organisational measure, contractual term, or fact about offline processing.

What an automated scanner can and cannot tell you

Automation is excellent at observing repeatable browser behaviour, but weak at legal conclusions without context.

Scanner can detectScanner cannot prove by itself
Requests before consentThat every processing purpose is lawful
Cookies and browser storageThat a contract or DPA is adequate
Differences between Reject and AcceptThat consent wording is valid in every context
Undisclosed or unexpected domainsThe organisation’s complete data lifecycle
Missing withdrawal controlsThat the whole company is GDPR-compliant

The honest output is an evidence report: observed facts, likely issue, source, severity rationale, and a manual-review note where context is required.

Frequently asked questions

No. If the site does not perform consent-dependent storage or access and has no other consent-dependent processing requiring that interface, adding a banner can be unnecessary. The implementation should follow the actual technology inventory.

Can Google Analytics load before the visitor clicks Accept?

Do not assume that it can. Determine which storage, access, and personal-data processing occurs, which configuration is used, and whether a valid non-consent basis genuinely applies. The safer implementation default is to block optional analytics until the required consent exists.

Is a Reject button required on the first layer?

Consent must be freely given and refusing it should not be made misleadingly difficult. Interface details should be reviewed against current regulator guidance and the site’s exact processing. From an engineering perspective, provide an immediate, testable way to continue without optional services.

It may involve no cookie, but the browser still contacts an external server. Audit it as an external data flow. In many projects, self-hosting removes that request and simplifies both performance and privacy review.

Can a scanner certify GDPR compliance?

No. It can document observable technical behaviour and flag discrepancies. A credible service clearly separates automated findings from legal and organisational review.

Official sources

If you want to know what your banner actually controls, start with evidence from a clean browser session. Run the free website check: it opens your homepage with no choice made and after Reject, and lists every request and cookie it sees. For all pages and consent states, ask ILF Studio for a full technical audit.