Click Reject All on a cookie banner and you would be forgiven for assuming the tracking cookies are gone. We measured what actually happens. Across 949 websites, every one running a consent banner with a working Reject button, 43.4% of ghostwritten tracking cookies were still in the browser after the visitor rejected everything: 3,023 of the 6,964 we observed, across 791 sites.
Key Takeaways
- 01After clicking Reject All on 949 sites with working banners, 43.4% of ghostwritten tracking cookies (3,023 of 6,964) were still in the browser.
- 0297.5% of the survivors were set before the visitor answered the banner. Reject did not remove them.
- 03Consent tools mostly prevent future cookie writes. On most sites nothing removes what was already stored.
- 04Survival ranges from under 3% (Microsoft Clarity) to over 97% depending on the script host in the cookie's write path.
- 05The closest academic study measured revocation on 200 sites. This measures initial rejection, the common case, on 949 sites.
Ghostwritten is the research community's word for a specific kind of cookie: it is stored under the website's own name, but a third-party script host appears in the code path that wrote it. Think of _fbp from the Meta pixel or _ga from Google Analytics. First-party in form, third-party in function. These are the cookies consent banners exist to control.
The survival number is not even the strangest part. 97.5% of the cookies that survived Reject were already in the browser before the visitor touched the banner. Clicking Reject did not remove them because most consent setups are not built to remove anything. They are built to prevent what happens next.
This post walks through what we measured, why rejected cookies stay, and what a fair reading looks like. Everything here is a behavioral measurement of what pages did, not a legal verdict on any site.
What we measured, exactly
Between May 5 and July 30, 2026, our compliance scanner completed scans of 1,505 websites from a European vantage point. 949 of them showed a consent banner that loaded and offered a Reject option the scanner could actually click. Those 949 are the measured set, using each site's most recent scan.
On each visit the scanner clicked Reject All, finished the page load, and then examined the browser's cookie jar. For every non-essential cookie stored on the site's own domain where a third-party script host appears in the write stack, we recorded two things: was it still present at the end of the visit, and did it exist before the consent choice was made. That produced 6,964 cookie observations across 791 sites.
Two notes on rigor. Every headline figure in this post was derived twice, independently, from the same raw scan data, including a from-scratch rebuild of the domain grouping, and the numbers matched to the digit. And sites running ConsentStack are excluded from every figure here: only 7 appear in the corpus, which is too small a sample to publish either way.
The headline number, and its context
43.4% of ghostwritten tracking cookies survived Reject All. Widen the lens to every non-essential cookie we observed and the picture barely moves: 44.2% persisted. Only 288 of the 863 sites where we could measure it, about one in three, ended the visit with every non-essential cookie cleared.
Survival is not evenly distributed. It tracks the script host that appears in the cookie's write path:
| Script host | Cookies observed | Still present after Reject | Survival rate |
|---|---|---|---|
| tracker.gaconnector.com | 77 | 75 | 97.4% |
| cdn.intelligems.io | 64 | 60 | 93.8% |
| cdn.shopify.com | 84 | 67 | 79.8% |
| tags.srv.stackadapt.com | 60 | 24 | 40.0% |
| connect.facebook.net (Meta pixel) | 304 | 115 | 37.8% |
| google-analytics.com | 389 | 146 | 37.5% |
| googletagmanager.com | 1,780 | 641 | 36.0% |
| analytics.tiktok.com | 276 | 92 | 33.3% |
| bat.bing.com (Microsoft Ads) | 234 | 20 | 8.5% |
| scripts.clarity.ms (Microsoft Clarity) | 290 | 8 | 2.8% |
The spread is the story: survival runs from under 3% to over 97% depending on which script host shows up in the write path. Cookies tied to the biggest names, Google Tag Manager, Google Analytics, the Meta pixel and TikTok, survived roughly a third of the time each.
Why rejected cookies survive: they were already there
97.5% of the surviving cookies share one property: they existed before the visitor answered the banner. 97.3% were set during the initial page load. The sequence is mundane. A tag fires as the page loads, the cookie lands in the jar, the visitor reads the banner for a few seconds and clicks Reject All, and the consent setup blocks things from that moment forward. The cookie that landed in the first second stays.
Consent tools draw a fence at the moment of choice. Prevention stops scripts from running until consent exists, and done properly the tracking cookie is never written at all. Removal, going back and clearing what was already stored, is a different capability. Some setups in our data do clear pre-existing cookies at Reject time, and on those sites survivors are rare. On most sites, nothing removes what landed before the click, and by then the fence is standing behind the cookie.
The question this data answers is: does the consent setup prevent the write, or remove what is already there. It does not claim sites set new cookies after refusal. A vendor can truthfully say 'we set nothing after Reject' while cookies set before the click stay in the browser. Both statements can be true at once, and the second one is what visitors experience.
The standard industry answer is an assertion
This question already has a page-1 answer, and it is worth quoting. TermsFeed, in an article that ranks for exactly this question, says CMPs generally do not delete cookies when users revoke consent, and that instead they ensure cookies stop collecting. Secure Privacy, itself a consent platform, tells users that cookies set by third-party vendors in previous sessions will remain in the browser's storage even after consent is declined.
Notice what both answers have in common: they describe the surviving cookie as dormant, and neither cites a measurement. Our contribution is not the observation that cookies survive; the industry already concedes that. It is the number. How often, on how many sites, from which script hosts, and the finding that survival is the norm for some of the most common tags on the web.
Dormant is also doing a lot of work in those answers. A cookie that stays in the browser stays readable the next time the same code runs, and a persistent identifier is precisely the thing privacy law treats as storage. We measured presence, not downstream use, so we will not claim the surviving cookies were read. But unmeasured is not the same as fine.
Rejection is not revocation
The closest academic study, arXiv 2411.15414, measured 200 websites and found that 57.5% do not delete cookies after consent revocation. Revocation is the rare path: the visitor accepts first, then later changes their mind. Our measurement is initial rejection, the visitor's first and only choice, which is the common case. It also runs at a different scale: 949 sites and 6,964 cookie observations against 200 sites, from a live scanning system that re-runs continuously rather than a one-off crawl. The two results rhyme, and they describe different moments in the consent lifecycle. Ours is the moment most visitors actually live through.
How ConsentStack handles it
ConsentStack sits in the prevention family, and we want to be precise about what that means, because precision is the entire point of this post. Our SDK neutralizes tracking script tags before the browser executes them, so a blocked tracker never runs and its cookie is never written. There is nothing to remove at Reject time because nothing was stored. You can read exactly how that works in our script blocking guide.
What ConsentStack does not do is delete tracker cookies that were already in the browser before it was installed, or that were written outside the script blocking paths it controls. We are saying that in public, on purpose. The honest version of this product category is measurable prevention, not a promise to sweep the jar.
See what survives Reject on your site
The free compliance scanner clicks Reject on your site from both the EU and the US, then reports what fired before the choice and what persisted after it. No signup.
This measurement comes from the same scan corpus behind our state of cookie compliance census and the per-platform follow-up. The corpus refreshes continuously, and we will re-run this measurement as it grows.
Frequently Asked Questions
Usually not. On 949 sites we measured, 43.4% of ghostwritten tracking cookies were still in the browser after clicking Reject All, and 97.5% of the survivors had been set before the visitor made a choice. Consent tools mostly prevent new cookies rather than removing existing ones, so anything stored before the click tends to stay.
A cookie stored under the website's own domain where a third-party script host appears in the write stack: the cookie carries the site's name, but third-party code was on the scene when it was created. _fbp from the Meta pixel and _ga from Google Analytics are the classic examples. They look first-party to the browser, which lets them slip past third-party cookie blocking.
Not automatically, and we did not measure legality. What we can say is behavioral: the cookies persist, and nearly all of them were set before the visitor chose, which raises its own question about consent timing. Whether persistence plus prior collection amounts to a violation depends on the site's configuration and the regulator's reading.
No, and we say that deliberately. ConsentStack prevents tracking scripts from running until consent exists, so their cookies are never set in the first place. It does not sweep the browser for cookies that other software or earlier visits left behind. Prevention is measurable and reliable; retroactive deletion of arbitrary third-party state is not.
Related Posts
How Cookie Consent Script Blocking Works (And What Every CMP's Blocking Attribute Does)
Every consent platform blocks scripts the same basic way: it neutralizes the tag, then labels it with a category. Here is the exact syntax for each major CMP, and why hand-marking scripts keeps leaking.
Meet the Free Compliance Scanner: See Where Your Site Leaks Consent
Enter your domain and in about a minute see whether your site respects visitor consent, checked from both the EU and the US. Free, no signup.