Hoe wij een cookiebanner meten.
Vier criteria, negen checks, en per check de drempel waarop wij goed of fout zeggen. Deze pagina is bedoeld om geciteerd te worden: wie een cijfer van ons overneemt, hoort hier te kunnen zien wat eronder zit en wat eronder ontbreekt.
// WAT DEZE PAGINA IS
Wij stellen niet vast of een website de wet overtreedt. Wij stellen vast wat een browser op één moment op één pagina aantreft, en leggen dat naast de vuistregels die de Autoriteit Persoonsgegevens publiceert. Wijkt het af, dan noemen wij dat in onze eigen woorden een fout ten opzichte van die vuistregel. Of zo'n afwijking een overtreding is, stelt de toezichthouder vast.
Wij meten op verzoek: iemand vult op de toets een adres in en start één meting. Een ongevraagde rondgang over een lijst sites draait nog niet; de regels die daarvoor gelden staan op onze meetrondgang, inclusief de afmeldmogelijkheid.
Wij noemen geen namen: niet van sites die er slecht uitkomen, niet van leveranciers van bannersoftware, en wij verwijzen niet naar besluiten met een boetebedrag. Wat wij publiceren zijn groepscijfers zonder websitenamen, met de datum en het aantal gemeten sites erbij.
SignumCore is geen onderdeel van en niet verbonden aan de Autoriteit Persoonsgegevens. Wij toetsen aan de eisen die de AP publiceert; dit is een technische meting, geen juridisch oordeel.
// DE VIER CRITERIA
De woorden van de AP, en wat wij ervan meten
De AP licht op haar pagina over heldere cookiebanners negen vuistregels uit. Onze toets meet vier dingen; elk daarvan bundelt één of meer van die vuistregels. De vuistregels staan hier letterlijk tussen aanhalingstekens. Onze korte naam is alleen een handvat voor tabelkoppen en tellers, geen eigen norm.
CRITERIUM 1 · WEIGEREN EVEN MAKKELIJK ALS ACCEPTEREN
De AP schrijft: ‘Zet verschillende keuzes op één laag’, ‘Verberg bepaalde keuzes niet’, ‘Laat iemand niet extra klikken’, ‘Gebruik geen onopvallende link in de tekst’.
Wij meten: Wij meten of er op de eerste laag een weigerknop staat die even groot en even opvallend is als de accepteerknop.
CRITERIUM 2 · NIETS LADEN VÓÓR TOESTEMMING
De AP schrijft: ‘Verwar toestemming niet met gerechtvaardigd belang’, ‘U moet toestemming krijgen voor het gebruiken van tracking cookies en veel andere soorten cookies’.
Wij meten: Wij meten welke trackers en trackingcookies er al zijn vóór de bezoeker kiest, en of ze na weigeren uit blijven.
CRITERIUM 3 · GEEN MISLEIDING
De AP schrijft: ‘Zet vinkjes niet automatisch aan’, ‘Gebruik duidelijke tekst’.
Wij meten: Wij meten of er iets vooraf is aangevinkt en of de banner de site blokkeert tot je accepteert.
CRITERIUM 4 · COOKIEVERKLARING VINDBAAR
De AP schrijft: ‘Geef informatie over de verwerking van persoonsgegevens en het doel van de verwerking’, ‘Maak toestemming intrekken net zo makkelijk als toestemming geven’.
Wij meten: Wij meten of er vanuit de banner of de pagina een cookie- of privacyverklaring te vinden is; de inhoud ervan meten wij niet.
Bij criterium 2 citeren wij naast de vuistregel één zin uit de uitleg die de AP bij die vuistregel geeft. Die staat er omdat de vuistregel zelf over het verwarren van grondslagen gaat, en de zin eronder zegt waarvoor toestemming nodig is.
Autoriteit Persoonsgegevens, "Heldere cookiebanners", geraadpleegd op 2026-09-17: de pagina van de AP. Onze lezing draagt versie v1 en is geldig vanaf 2026-09-17.
// DE NEGEN CHECKS
Wat als fout telt, en wanneer wij niets meten
Elke check geeft goed of fout, plus een meetstatus: gemeten, deels gemeten, of niet gemeten. Alleen checks die niet van toepassing zijn, vallen buiten het cijfer. Deels gemeten telt wél mee — daarom publiceren wij naast een cijfer altijd de meetstatus.
| Check | Criterium | Wat als fout telt | Niet te meten wanneer |
|---|---|---|---|
| Weigerknop op de eerste laag | 1 | Er staat op de eerste laag geen zichtbare knop waarvan de tekst als weigeren leest. "Alleen noodzakelijke cookies" lezen wij als weigeren, ook wanneer die knop in werkelijkheid een instellingenlaag opent. | Wij herkennen geen banner. |
| Weigerknop even groot als accepteerknop | 1 | Het oppervlak van de grootste zichtbare weigerknop is kleiner dan 70 procent van dat van de grootste accepteerknop. Het is een oppervlakteverhouding, geen breedte. | Een van beide knoppen ontbreekt, dus er is niets te vergelijken. |
| Weigerknop even opvallend | 1 | De ene knop heeft een gevulde achtergrond en de andere niet. Gevuld is bij ons één bit: doorzichtigheid boven 0,2 en niet vrijwel wit. Een knop met een kleurverloop of achtergrondafbeelding leest daardoor als niet gevuld. | Een van beide knoppen ontbreekt. |
| Geen trackers vóór toestemming | 2 | Vóór de keuze vuurt minstens één van 21 verzoekpatronen die wij als tracker herkennen. Een cookieloze toestemmingsping telt niet mee: dat is een verzoek met gcs=G100 in het adres, dus met meting én advertenties op geweigerd. | Nooit. Deze check wordt ook zonder banner beoordeeld. |
| Geen trackingcookies vóór toestemming | 2 | Vóór de keuze staat er een cookie waarvan de naam op een van 14 bekende trackingfamilies past. Wij lezen alleen cookies: opslag in de browser buiten cookies om meten wij niet. | Nooit. |
| Weigeren stopt de trackers | 2 | In de drie seconden na de klik op weigeren vuurt een tellend verzoek, of komt er een trackingcookie bij die er daarvoor nog niet stond. Een cookie die al bestond en daarna een nieuwe waarde of een langere houdbaarheid krijgt, valt buiten deze check. | Er was geen weigerknop, of de klik mislukte. Die twee zijn in het rapport niet te onderscheiden. |
| Niets vooraf aangevinkt | 3 | In de banner staat een keuzevakje dat aan staat, niet uitgeschakeld is, en waarvan het label niet op noodzakelijk, functioneel, essentieel of vereist wijst. | Wij herkennen geen banner. Staan er geen keuzevakjes, dan is de uitslag goed met de status deels gemeten: schuifjes en ARIA-schakelaars lezen wij niet. |
| Geen cookiewall | 3 | De banner bedekt 90 procent of meer van het venster én er is geen weigerknop. Dat wij de pagina niet kunnen scrollen, meten wij wel, maar het weegt niet mee in deze uitslag. | Wij herkennen geen banner. |
| Cookieverklaring vindbaar | 4 | Nergens op de pagina staat een link waarvan de tekst of het adres op cookie of privacy past. Dit is de lichtste van de negen: één link volstaat, en de inhoud van die verklaring meten wij niet. De status is daarom altijd deels gemeten. | Nooit. Deze check kijkt naar de hele pagina, ook zonder banner. |
Niet gemeten is niet hetzelfde als goed. Herkennen wij geen banner, dan vervallen vijf van de negen checks, en meestal de zesde ook omdat er geen weigerknop is om op te klikken. Er blijven dan drie checks telbaar over.
Eén combinatie in een rapport is een meetfout en geen bevinding over de site: de eerste check meldt dat er wél een weigerknop is, terwijl de derde verkeerscheck meldt dat er geen weigerknop was om op te klikken. Dan is de klik mislukt. Dat is nu een leesregel voor een mens en nog geen controle in de code; elk cijfer dat wij publiceren gaat eerst langs die regel.
// MEETOPZET
Verse sessie, één pagina, twee meetmomenten
Wij meten met één echte browser zonder venster, op onze eigen server, en per meting een verse sessie: geen cookies, geen geschiedenis, geen eerdere keuze. Het venster is 1366 bij 800 beeldpunten, de taalvoorkeur staat op Nederlands. Wij meten één pagina: het ingevoerde adres na doorverwijzingen.
De meting maakt zich kenbaar in haar naam naar de server. Die naam eindigt op SignumCore-APCookiecheck/1.0 (+https://signumcore.io/docs/toegang-voor-onze-controle) en staat voluit op onze crawlerpagina. Er staat een echte browserkop voor, omdat een cookiebanner een script is dat pas een banner bouwt als er een browser is.
| Meetmoment | Wanneer | Wat wij vastleggen | Wat wij niet doen |
|---|---|---|---|
| Vóór toestemming | Na het laadmoment, plus drie seconden | Alle netwerkverzoeken sinds de navigatie, alle cookies, en hoe de banner eruitziet | Niets aanklikken, de tweede laag niet openen |
| Na weigeren | Alleen als er een weigerknop is: klik, plus drie seconden | Alleen de verzoeken vanaf de klik, en cookienamen die er daarvoor nog niet stonden | Niet herladen, niet doorklikken naar een volgende pagina |
| Na accepteren | Alleen op eigen verzoek, in een tweede verse sessie | Alle cookies met de bewaartermijn die de browser kreeg, voor de inventaris | Nooit op een site die niet van de aanvrager is; dit levert geen goed of fout op |
Antwoordt de site met een foutcode van 400 of hoger, dan krijgt de aanvrager geen rapport, ook geen half rapport. Duurt een meting langer dan 45 seconden, dan breekt hij af zonder uitslag. Op accepteren klikken doen wij alleen wanneer de aanvrager om de cookie-inventaris van zijn eigen site vraagt: een meting hoort geen toestemming te maken.
// ONZE EIGEN UITSLAG
Wat de toets van onze eigen site maakt
Wij hebben signumcore.io met dezelfde toets gemeten. Uitslag: 9 van 9 telbare checks goed, waarvan 2 met de meetstatus deels gemeten. Dat laatste hoort erbij: ook op onze eigen site telt een half gemeten punt mee als groen, en dat is precies de kanttekening die wij van anderen vragen.
| Check | Uitslag | Meetstatus | Wat de meting zag |
|---|---|---|---|
| Weigerknop op de eerste laag | goed | gemeten | Gevonden: "WEIGEREN". |
| Weigerknop even groot als accepteerknop | goed | gemeten | Weigerknop is 100% van het oppervlak van de accepteerknop (138×46 tegenover 138×46 beeldpunten). |
| Weigerknop even opvallend | goed | gemeten | Beide knoppen hebben dezelfde soort opmaak. |
| Geen trackers vóór toestemming | goed | gemeten | Geen tracker met cookies. Wel cookieloze toestemmingspings naar Google Analytics 4: geen cookie, wel een verzoek naar Google. Onder onze criteria telt dat niet als tracking. |
| Geen trackingcookies vóór toestemming | goed | gemeten | Vóór een klik op de banner stond geen herkende trackingcookie. |
| Weigeren stopt de trackers | goed | gemeten | Na een klik op weigeren vuurde geen herkende tracker en kwam er geen trackingcookie bij. |
| Niets vooraf aangevinkt | goed | deels | Geen keuzevakjes op de eerste laag. Een tweede laag ("instellingen") is niet gemeten. |
| Geen cookiewall | goed | gemeten | De pagina blijft bereikbaar naast de banner. |
| Cookieverklaring vindbaar | goed | deels | Link in de banner: "Privacyverklaring". Of die verklaring per cookie naam, doel, bewaartermijn en derde partij noemt, is niet gemeten. |
Eigen meting via /cookiebanner-toets op signumcore.io, 17 september 2026, 21:18 (Nederlandse tijd).
Waarom onze tagmanager vóór de keuze laadt
Het eerste script in onze pagina zet alle vier toestemmingssignalen op geweigerd, en dat script staat vóór de tagmanager in de paginakop. Er zijn drie standen: volledig accepteren zet alles aan, alleen meten zet de analysemeting aan en de drie advertentiesignalen expliciet uit, weigeren zet alles uit. Draagt een bezoeker een keuze uit een oudere versie van onze melding, dan blijft de geweigerde standaard staan.
Wat wij daarmee niet beweren: dat er vóór een keuze geen verzoek naar een derde partij gaat. Dat gaat er wel. De lader van de container gaat naar Google Tag Manager, en voor bezoekers zonder JavaScript staat er een iframe naar dezelfde partij. Onze eigen definitie van criterium 2 rekent dat verzoek niet mee, omdat een tagmanager in onze lijst geen tracker is. Wie ons op criterium 2 wil narekenen, moet dat weten.
De grondslag, als feit en niet als advies: in onze eigen privacyverklaring rusten meting en advertenties op toestemming, artikel 6 lid 1 sub a AVG, en foutopsporing op gerechtvaardigd belang, artikel 6 lid 1 sub f. Intrekken kan via Cookievoorkeuren onderaan elke pagina. Dat is onze eigen keuze en geen oordeel over die van iemand anders.
// BEDRIJFSHERKENNING OP ONZE EIGEN SITE
Wij bieden klanten aan om uit het IP-adres van een bezoeker af te leiden vanuit welk bedrijf die de site bezoekt, en die bedrijfsnaam bij de bezoekgegevens te bewaren. Het IP-adres zelf is een persoonsgegeven; wat bij de bezoekgegevens belandt is de naam van een organisatie, geen naam of e-mailadres van een bezoeker.
De poort staat per klant dicht en gaat alleen open wanneer die klant heeft vastgelegd dat zijn cookiemelding de voorgeschreven zin bevat. Geen bevestiging, een bevestiging van een oudere versie, en een onvindbare klant wegen alle drie even zwaar: dan blijft de poort dicht.
| Wat | Stand | Gemeten op |
|---|---|---|
| Klanten in de database | 6 | 16 september 2026 |
| Klanten met een bevestigde bannertekst | 0 | 16 september 2026 |
| Klanten met een meetsleutel | 3 | 16 september 2026 |
| Vastgelegde bezoekgebeurtenissen | 1322 | 16 september 2026 |
| Daarvan met een netwerknummer, land, stad of bedrijfsnaam | 0 | 16 september 2026 |
Bedrijfsherkenning stond op dat moment dus bij alle klanten uit. Uit diezelfde gegevens leek eerder te volgen dat er vrijwel geen zakelijke bezoekers waren; dat was geen marktfeit maar een gesloten poort. Een leeg veld is geen nul. Dat is ook de reden dat op deze pagina bij elk getal de meetstatus staat.
// WAT DEZE METING NIET ZIET
De grenzen, voordat iemand ze in een cijfer ontdekt
| Wat deze meting niet ziet | Gevolg voor de uitslag |
|---|---|
| Wat later laadt dan drie seconden na het laadmoment | Een tag die op scrollen, op een klik of in een tweede golf vuurt, staat niet in de uitslag. |
| Andere pagina's van dezelfde site | Of een tracker elders op de site alsnog vuurt, is niet gemeten. Wij meten één pagina. |
| De mobiele variant van de banner | Wij meten op een venster van 1366 bij 800 beeldpunten. Een andere bannervariant op een telefoon is niet gemeten. |
| Een tweede bezoek | Wij beginnen met een verse sessie. Gedrag bij een volgend bezoek, of nadat een keuze is onthouden, is niet gemeten. |
| De tweede laag van de banner | Die openen wij nooit. Wat daar staat en wat daar vooraf aan staat, is niet gemeten; drie vuistregels over doorklikken meten wij daarom alleen indirect. |
| De bannertekst zelf | Wij leggen hem vast, maar geen check leest hem. "Gebruik duidelijke tekst" meten wij dus niet. |
| Het intrekken van toestemming | Geen enkele check zoekt na toestemming naar een manier om die in te trekken. Die vuistregel citeren wij, maar meten wij niet. |
| Een banner in een afgeschermd deel van de pagina (shadow DOM) | Die herkennen wij niet. Dan vervallen vijf van de negen checks, meestal zes, en blijft er een uitslag over die over drie checks gaat. |
| Tracking langs een eigen domein (server-side tagging) | Onze patronen eisen de letterlijke hosts van de bekende partijen. Een opstelling die langs een eigen subdomein loopt, meet schoon. Wij verkopen die opstelling zelf, dus deze grens hoort van ons te komen. |
| Opslag in de browser buiten cookies om | localStorage, sessionStorage, IndexedDB en vingerafdruktechnieken meten wij niet. |
Wij meten vanaf onze eigen server, dus vanaf een datacenter-adres en niet vanaf een Nederlandse verbinding thuis. Een site die zijn banner per land anders toont, of datacenter-adressen anders behandelt, wordt gemeten zoals hij aan die server verschijnt.
Onze meting maakt zich kenbaar en is daarmee eenvoudig te blokkeren. Dat is een bewuste keuze. Antwoordt een site met een foutcode, dan komt er geen uitslag. Antwoordt een robotcontrole met een tussenpagina en code 200, dan meten wij die tussenpagina: er is dan geen banner, vijf checks vervallen, en de twee verkeerschecks slaan groen uit op een pagina die niet de site is.
// VERSIE EN CITEREN
| Onderdeel | Waarde |
|---|---|
| Versie | v1 |
| Geldig vanaf | 2026-09-17 |
| Bron | Autoriteit Persoonsgegevens, "Heldere cookiebanners" |
| Adres van de bron | https://www.autoriteitpersoonsgegevens.nl/themas/internet-slimme-apparaten/cookies/heldere-cookiebanners |
| Geraadpleegd op | 2026-09-17 |
| Vuistregels in de bundeling | Negen, plus één zin uit de uitleg van de AP bij criterium 2 |
Een nieuwe versie ontstaat in drie gevallen: de AP publiceert een nieuw of gewijzigd standpunt, de wet verandert, of een van onze checks gaat iets anders meten. In alle drie de gevallen krijgt de lijst een nieuw nummer en blijft v1 leesbaar voor cijfers die eronder zijn gemeten.
Wij toetsen onze lezing eerst zelf aan wat de AP publiceert; een eigen jurist kijkt er later naar. Zolang dat niet gebeurd is, staat hier wat wij meten en met welke drempels, zodat iemand het kan narekenen of tegenspreken.
SignumCore is geen onderdeel van en niet verbonden aan de Autoriteit Persoonsgegevens. Wij toetsen aan de eisen die de AP publiceert; dit is een technische meting, geen juridisch oordeel.
// VEELGESTELDE VRAGEN
Zijn jullie onderdeel van de Autoriteit Persoonsgegevens?
Nee. SignumCore is geen onderdeel van en niet verbonden aan de Autoriteit Persoonsgegevens. Wij toetsen aan de eisen die de AP publiceert; dit is een technische meting, geen juridisch oordeel. De vuistregels staan bij ons letterlijk tussen aanhalingstekens, met de bron erbij, zodat je onze bundeling naast het origineel kunt leggen.
Betekent een groene uitslag dat een site aan de wet voldoet?
Nee. Wij meten wat een browser op één moment op één pagina aantreft en zetten dat naast de vuistregels van de AP. Een groene uitslag betekent dat wij op die punten geen fout hebben gemeten, met alle grenzen die op deze pagina staan. Of een site aan de wet voldoet, stelt de toezichthouder vast.
Waarom laadt jullie eigen tagmanager voordat ik een keuze heb gemaakt?
Omdat wij de container laden met een geweigerde standaard in plaats van hem pas na een keuze te laden. Het eerste script in de pagina zet alle vier toestemmingssignalen op geweigerd, vóór de container. Wat wij daarmee niet beweren: dat er vóór jouw keuze geen verzoek naar een derde partij gaat. Dat gaat er wel, en onze eigen definitie van criterium 2 rekent dat verzoek niet mee.
Meten jullie ook de mobiele versie van een banner?
Nog niet. Wij meten in een venster van 1366 bij 800 beeldpunten. Toont een site op een telefoon een andere bannervariant, dan is die niet gemeten. Gaan wij dat meten, dan krijgt de criterialijst een nieuw versienummer, want de meting is dan iets anders.
Mag ik deze cijfers citeren?
Ja. Noem SignumCore, meetmethode cookiebanners v1, geldig vanaf 2026-09-17, met het adres van deze pagina. Vermeld bij elk cijfer het aantal gemeten sites, de meetdatum en de meetstatus. Een cijfer zonder meetstatus is bij ons onvolledig, ook als wij het zelf hebben gepubliceerd.
Noemen jullie namen van sites die er slecht uitkomen?
Nee. Wij publiceren geen namen van gemeten sites, geen namen van leveranciers van bannersoftware, en wij verwijzen niet naar besluiten met een boetebedrag. Wat wij publiceren zijn groepscijfers zonder websitenamen, met de datum en het aantal gemeten sites erbij. Een cijfer laten wij weg als de groep zo klein is dat een enkele site eruit te herleiden zou zijn.
Meet je eigen banner met dezelfde negen checks.
Je vult je adres in, wij meten één keer je voorpagina en je ziet per criterium wat er gebeurde. Dezelfde meting die hierboven op onze eigen site staat.