Onderzoek
80% of Cookie Reject Buttons Don't Actually Work — Here's the Proof
GDPR Privacy Monitor Research · 2026-04-11 · 6 min leestijd
Elke cookiebanner doet dezelfde impliciete belofte: klik op "Weigeren" en de tracking stopt. De banner verdwijnt en u browst in vrede. Dat is de afspraak waarop het toestemmingsmodel is gebouwd -- het idee dat gebruikers een zinvolle, afdwingbare keuze hebben.
We hebben die belofte getest op 28.891 EU-websites. Op 80,4% ervan is de belofte verbroken. Tracking gaat door nadat de gebruiker expliciet op weigeren klikt. Cookies blijven bestaan. Advertentiepixels blijven afgaan. En op 1.642 sites komen cookies die de weigeractie aanvankelijk verwijdert, terug bij het volgende paginalaadmoment -- een patroon dat we toestemmingsrespawn noemen.
Dit is geen marginale bevinding over een paar verkeerd geconfigureerde sites. Het wijst op een systemisch probleem in het mechanisme waarop honderden miljoenen EU-inwoners vertrouwen voor hun privacyrechten.
Wat "Weigeren" Hoort Te Doen -- Juridisch
Het wettelijk kader is duidelijk. Onder artikel 5(3) van de ePrivacy-richtlijn vereist het opslaan of opvragen van informatie op het eindapparaat van een gebruiker voorafgaande toestemming, met een beperkte uitzondering voor cookies die strikt noodzakelijk zijn voor een dienst die de gebruiker expliciet heeft gevraagd. GDPR artikel 7(3) voegt toe dat het intrekken van toestemming net zo eenvoudig moet zijn als het geven ervan, en de verwerkingsverantwoordelijke moet handelen naar die intrekking.
De EDPB-richtlijnen 05/2020 over toestemming onder GDPR specificeren wat dit betekent voor weigerknoppen: als een website een "Alles accepteren"-optie biedt, moet het ook een even prominente en even toegankelijke optie bieden om te weigeren. En die weigering moet effectief zijn -- het moet daadwerkelijk de verwerking voorkomen die toestemming zou hebben geautoriseerd.
Het HvJ-EU bekrachtigde dit in Planet49 (C-673/17): toestemming vereist een duidelijke bevestigende handeling, en vooraf aangevinkte selectievakjes vormen geen geldige toestemming. Het logische gevolg is dat een weigering -- een expliciete negatieve handeling -- net zo definitief moet worden gerespecteerd als een acceptatie. Als klikken op "Accepteren" tracking inschakelt, moet klikken op "Weigeren" het uitschakelen. Niet gedeeltelijk. Niet tijdelijk. Volledig en blijvend.
Dat is wat de wet zegt. Onze gegevens tonen wat er werkelijk gebeurt.
Hoe We de Weigerstroom Testen
Onze weigerstroom-test is ontworpen om zo dicht mogelijk bij de ervaring van een echte menselijke gebruiker te komen die op weigeren klikt, met de toevoeging van uitgebreide instrumentatie. Hier is het proces stap voor stap:
Stap 1: Schone browsersessie. De scanner start een schone Chromium-instantie -- geen cookies, geen localStorage, geen gecachte bronnen, geen browsegeschiedenis. Dit is een echte nieuwe bezoeker zonder eerdere toestemmingsstatus. Stap 2: Navigeer en registreer status voor toestemming. De scanner laadt de doel-URL en wacht tot de pagina stabiliseert. Voor enige interactie registreert het elke cookie in de browser, elk netwerkverzoek dat is gedaan, en elk domein van derden dat is gecontacteerd. Dit is de baseline voor toestemming -- wat de site doet voordat de gebruiker enige mogelijkheid heeft om een keuze te maken. Stap 3: Detecteer de toestemmingsbanner. Met onze detectiebibliotheek die 45 bekende CMP's en generieke heuristieken dekt, identificeert de scanner het toestemmingsmechanisme en lokaliseert de weigerknop. Deze stap gebruikt een gelaagde aanpak: eerst controle op bekende CMP-scriptsignaturen en hun bijbehorende DOM-structuren, dan terugval naar generieke detectie van elementen met vaste positie met toestemmingsgerelateerde tekst en knoplabels zoals "Alles weigeren", "Decline", "Refuse" of equivalente vertalingen. Stap 4: Klik op weigeren. De scanner klikt op de weigerknop en wacht tot de pagina stabiliseert. "Stabiliseren" betekent wachten tot lopende netwerkverzoeken zijn voltooid, DOM-mutaties zijn gestopt en eventuele animaties of overgangen zijn afgerond. We gebruiken ruime timeouts om valspositieven van trage CMP-implementaties te vermijden. Stap 5: Snapshot na weigering. De scanner registreert opnieuw de volledige status: alle cookies, alle netwerkactiviteit, alle domeinen van derden. Dit snapshot wordt vergeleken met de baseline voor toestemming om te bepalen wat er is veranderd. Stap 6: Herladen en controleren op respawn. De scanner herlaadt de pagina en wacht opnieuw op stabilisatie. Vervolgens maakt het een laatste snapshot. Deze stap is cruciaal: het onthult of de weigeractie persistent is (gerespecteerd over paginaladingen) of dat cookies en tracking opnieuw activeren wanneer de pagina opnieuw laadt. Als cookies die in Stap 5 zijn verwijderd, terugkeren in Stap 6, is dat toestemmingsrespawn.Elke stap produceert bewijs met tijdstempels en archivering: volledige cookie-inventarissen met namen, waarden, domeinen, vervaldatums en flags; volledige netwerkverzoeklogboeken met URL's, methoden, responscodes en timing; schermvullende screenshots. Deze bewijsketen maakt het mogelijk om elke individuele bevinding te verifiëren en aan te vechten.
De Resultaten: 80,4% Falen
Van de 28.891 websites waar we de volledige weigerstroom-test succesvol voltooiden:
- 5.650 (19,6%) slaagden. Na klikken op weigeren werden niet-essentiële cookies verwijderd, stopten trackingverzoeken en bleef de weigering gehandhaafd over paginaladingen.
- 23.241 (80,4%) faalden. Tracking ging in enige vorm door nadat de gebruiker expliciet op weigeren klikte.
De mislukkingen zijn niet uniform. Ze vallen in afzonderlijke categorieën die overlappen -- een enkele site kan tegelijkertijd meerdere faalwijzen vertonen.
Persistente cookies: 10.848 sites
Op 10.848 sites (37,5% van de geteste) bleven niet-essentiële cookies in de browser na het voltooien van de weigerstroom. Dit zijn cookies geclassificeerd als analytics, marketing of tracking-gerelateerd die verwijderd of voorkomen hadden moeten worden na een weigeractie.
De meest voorkomende persistente cookies behoren tot Google Analytics (`_ga`, `_gid`, `_gat`), Meta/Facebook (`_fbp`, `fr`) en diverse advertentieplatforms. In veel gevallen verwijdert de CMP succesvol sommige cookies maar mist andere -- wat onvolledige integratie suggereert tussen het toestemmingsbeheerplatform en het volledige assortiment scripts van derden op de site.
De aanwezigheid van deze cookies na weigering is niet louter een cosmetisch probleem. Elk is een persistent identificatiemiddel dat de huidige sessie van de gebruiker koppelt aan eerdere en toekomstige bezoeken. De `_ga`-cookie is bijvoorbeeld een unieke client-ID die Google Analytics gebruikt om een longitudinaal profiel van het gedrag van de gebruiker over sessies heen op te bouwen. Als deze na weigering blijft bestaan, wordt het browsen van de gebruiker ondanks de uitdrukkelijke weigering nog steeds gevolgd en geaggregeerd.
Persistente trackers: 14.547 sites
Op 14.547 sites (50,3% van de geteste) bleven trackingdiensten actief na weigering -- wat betekent dat de browser verzoeken bleef doen aan bekende trackingdomeinen zelfs nadat de gebruiker op de weigerknop klikte.
Dit is een andere faalwijze dan cookiepersistentie. Een tracker kan actief zijn zonder een cookie in te stellen: pixelverzoeken, beaconoproepen en scriptlaadacties verzenden allemaal informatie (minimaal het IP-adres van de gebruiker, de verwijzende pagina en timinggegevens) naar servers van derden ongeacht of een cookie wordt opgeslagen. Dit wordt soms "cookieless tracking" genoemd en wordt steeds gebruikelijker naarmate browsers beperkingen op cookies van derden verscherpen.
Het verschil tussen het cookiecijfer (10.848) en het trackercijfer (14.547) is significant. Het betekent dat op ongeveer 3.700 sites de weigeractie succesvol cookies verwijderde maar niet voorkwam dat trackingverzoeken doorgingen. De CMP verzorgde het opruimen van cookies maar blokkeerde niet de scripts die het trackingverkeer genereren. Dit wijst op een veelvoorkomend architectuurprobleem: de CMP is geconfigureerd om cookies te beheren (verwijderen bij weigering, voorkomen bij laden) maar niet om scriptuitvoering te beheren.
Toestemmingsrespawn: 1.642 sites, 4.932 cookies
Toestemmingsrespawn is het meest verontrustende patroon dat we identificeerden. Op 1.642 websites verschenen cookies die succesvol waren verwijderd door de weigeractie opnieuw na het herladen van de pagina. Over die sites vertoonden 4.932 individuele cookies dit respawngedrag.
Toestemmingsrespawn is geen bug in één CMP of één configuratie. Het is een structureel probleem in hoe toestemming wordt geïmplementeerd over de volledige webstack.
Hoe een cookie terugkomt na verwijdering. Wanneer een gebruiker op weigeren klikt, doet een correct geconfigureerde CMP twee dingen: het verwijdert bestaande niet-essentiële cookies (door hun vervaldatum op een datum in het verleden te zetten), en het werkt een toestemmingsregistratie bij (meestal een cookie zelf, of een localStorage-item) die de blokkeringslogica van de CMP vertelt om niet-essentiële scripts te voorkomen bij toekomstige paginaladingen. Als beide werken, is de gebruiker schoon: geen trackingcookies, geen trackingscripts.Toestemmingsrespawn treedt op wanneer de verwijdering slaagt maar de blokkering faalt. Het meest voorkomende scenario:
1. De CMP verwijdert de `_ga`-cookie wanneer de gebruiker op weigeren klikt.
2. De CMP stelt een toestemmingsstatuscookie in die registreert dat de gebruiker analytics heeft geweigerd.
3. Bij de volgende paginalading controleert de CMP zijn toestemmingsstatus en weet dat de gebruiker heeft geweigerd.
4. Maar: de Google Analytics-scripttag is direct ingebed in het paginasjabloon (buiten de tagmanager) of wordt geladen door een tagmanagerregel die de toestemmingsstatus niet controleert.
5. Het GA-script laadt, ziet geen `_ga`-cookie en maakt een nieuwe aan.
6. De weigerbeslissing van de gebruiker is overschreven.
Variaties op dit patroon omvatten: scripts van derden geladen via hardgecodeerde `