24% of websites showing a cookie consent banner had advertising tracking active before the visitor clicked anything: 1,662 of 6,955 sites. On 1,512 of them (21.7%) an advertising platform had already received a request; on the other 150 an advertising identifier cookie such as Meta's _fbp was stored, with no ad request recorded. Loaded in a fresh browser with no stored cookies, banner left untouched, 23 to 26 October 2026.

I hate cookie banners. And I hate them even more when the sites showing them don't obey them. Half the websites we loaded this week put one in the way before you can read anything, and plenty of the ones that offer a real choice tuck "reject" behind a second screen of toggles. One Polish local news site's banner tells you it shares data with "1,180 trusted partners". Nobody reads that list. People click whatever makes the box go away.

The deal behind all this friction is simple: the site asks first, then tracks. Our data says that on one site in four that shows a banner, the tracking does not wait for the answer. With the banner still on screen and untouched, the advertising tags had already reported the visit to Meta, Google, TikTok, LinkedIn or a programmatic ad exchange, or left an advertising identifier in the browser. On most of those sites, whatever the visitor clicks next, that first page view has already been sent.

Last week we published a narrower version of this finding about OpenAI's new ChatGPT ad pixel, which ships with tracking switched on by default. (CipherCue) Several readers asked whether OpenAI was unusual. It is not. Across a random sample of 13,712 websites, OpenAI is ninth on the list of ad vendors firing early, well behind Meta and Google Ads.

How we tested

We took the 106,821 reachable websites we track, mostly European company sites, and put them in random order. Because the order is random, the sites we have scanned so far are a random sample. These figures cover the first 15,583. Of those, 13,712 loaded normally. The other 1,871 blocked our browser or returned an error, so we left them out.

Each site got a brand-new Chrome profile with no cookies or stored data, a normal desktop window, and a normal Chrome user agent. We loaded the homepage, waited ten seconds, and did nothing: no clicks, no scrolling, no mouse movement. We recorded every network request, every cookie the browser held at the end, whether a consent banner was visible, and a screenshot.

A site counts if one of two things happened before any click. Either an advertising endpoint received a request and answered it: a Meta Pixel event at facebook.com/tr, a Google Ads conversion or remarketing hit, a TikTok, LinkedIn, Pinterest or Microsoft Ads event, and so on. Or the browser held an advertising identifier cookie, such as Meta's _fbp or Google's _gcl_au. We report the two separately where it matters. Loading a vendor's script does not count. A Google hit that declares ad consent denied, in either of Google's two consent parameters, does not count either; 1,235 sites (9.0%) sent only such hits, and they are left out.

One thing we can't tell you is whether the tracking started before or after the banner popped up, because we didn't time the banner. What we do know is that it happened while the banner was still waiting for an answer.

Three examples

These three were drawn at random from the sites the scan flagged, then checked by hand. We have redacted their names and logos (see the disclosure note below). Each figure shows what was on screen when the scan finished, and the advertising requests that had already left the browser.

A German clothing shop's Cookiebot banner with Marketing unticked and a Deny button. Below it, the requests already sent: four Google Ads conversion and remarketing hits at about 2.7 seconds and a Meta Pixel event at 2.97 seconds, all answered with HTTP 200, plus the _gcl_au, __kla_id and _fbp cookies already set.
A German clothing shop. Cookiebot shows Marketing unticked and offers "Deny"; Cookiebot's own record for this visit says marketing consent is false. Google Ads and Meta had already received the page view, and their cookies were set. The Google Ads hit at ccm/collect told Google that ad consent was granted (gcs=G111), the opposite of what the banner recorded.
A UK vehicle-lighting shop's CookieScript banner with Targeting unticked and Decline All and Accept All buttons. Below it, a Google Ads page_view at 1.96 seconds and a Meta Pixel PageView at 2.09 seconds, both answered with HTTP 200.
A UK vehicle-lighting shop. "Targeting" is unticked and there is a "Decline all" button, but Google Ads and the Meta Pixel had both reported the page view within about two seconds.
A German roofing retailer's Cookiebot banner with Anpassen and Alle zulassen buttons. Below it, requests to Xandr, The Trade Desk and Adform at about three seconds, and Trade Desk and Xandr identifier cookies already set.
A German roofing retailer. Nothing accepted, yet the visit had already reached three programmatic ad platforms (Xandr, The Trade Desk, Adform), and two of them had set their own identifier cookies (TDID, uuid2), the IDs used to recognise the same browser across other sites.

A UK example, before and after "Reject All"

The fourth example is a UK online retailer from the same random sample, and we followed it one step further: we clicked "Reject All" and loaded the page again. It was not chosen because it stands out; about one in four sites showing a banner did the same before a choice was made. The results were the same on four runs in an ordinary Chrome window (fresh profile, no extensions, UK connection) on 26 October 2026.

A UK retailer's OneTrust banner, Manage your cookies, with Cookies Settings, Accept All Cookies and Reject All. Below it, requests recorded with the banner untouched: Pinterest, Meta, Microsoft Advertising and Google DoubleClick, and advertising cookies already on the retailer's own domain, including _fbp, _pin_unauth, _ttp, _uetsid and _rdt_uuid.
First load, banner untouched. The banner is cropped from the page to hide the retailer's identity. Below it, the requests recorded in the first ten seconds and the advertising cookies already on the retailer's own domain.
After clicking Reject All and reloading: the site's stored consent reads groups C0001:1, C0003:0, C0004:0, C0002:0, C0005:0 and OnetrustActiveGroups ,C0001,. Requests recorded on this load: Pinterest, Meta, Microsoft Advertising and Google DoubleClick.
Same session after clicking "Reject All", then reloading. The consent tool recorded only the strictly necessary group as on (C0001:1, everything else 0). The same four advertising requests went out on the next load. Google Ads requests on that load carried Google's consent-denied flag and are not listed.

Banner on screen, ad tracking already active: 23.9%

1 in 4 cookie banners is asking too lateSites with a consent banner on screen, loaded in a fresh browser, nothing clicked24in every 100 sites with acookie banner had ad trackingactive before thevisitor clicked anything.1,662 of 6,955 sites (23.9%)
Chart 1. Each square is one site in 100. Base: 6,955 sites with a consent banner on screen, from 13,712 that loaded (95% confidence interval 22.9% to 24.9%). Counts an answered advertising request or an advertising identifier cookie. Snapshot of 26 October 2026.
Data table
Measure (sites that loaded)SitesShare
Sites showing a consent banner6,955 of 13,71250.7%
Banner on screen, advertising tracking active (request or identifier cookie)1,662 of 6,95523.9%
  an advertising request was sent and answered1,512 of 6,95521.7%
  advertising identifier cookie only, no ad request recorded150 of 6,9552.2%
Banners offering a reject or settings option: tracking active1,247 of 5,36423.2%
Banners offering only "OK" or "Accept": tracking active366 of 1,33627.4%
Banner on screen, marketing cookie already set1,470 of 6,95521.1%
Banner on screen, session-recording tool already running838 of 6,95512.0%
Any advertising tracking before interaction, all loaded sites2,396 of 13,71217.5%

The 95% confidence interval on the headline is 22.9% to 24.9%. Counting only sites where an advertising request was sent and answered, leaving out cookie-only cases, the figure is 21.7% (20.8% to 22.7%). The headline has moved by less than a point as the sample grew from 5,000 to 13,700 sites, and we expect it to hold for the full run.

Banners that offer a real choice did not look much different. Where the banner had a reject or settings button, tracking was active on 23.2% of sites, against 27.4% for "OK only" notices. This compares sites, not banner designs, so it does not show that the button changes anything; it does show that on those sites the tags had not waited for it.

It happens fast. Measured from the moment the browser requested the page, the median first advertising request went out after 1.8 seconds, and three-quarters within 2.6 seconds; 224 sites (15%) sent one within the first second. Because we did not time the banner itself, this does not say whether a tag beat the banner onto the screen. It does say the tags did not wait for an answer: on every one of these sites the banner was still unanswered when the observation ended.

Most ad trackers fire within 3 secondsTime from requesting the page to the first ad request, banner untouchedUnder 1 second: 224 of 1,512 sitesUnder 1 second15%1 to 2 seconds: 650 of 1,512 sites1 to 2 seconds43%2 to 3 seconds: 364 of 1,512 sites2 to 3 seconds24%3 to 5 seconds: 180 of 1,512 sites3 to 5 seconds12%Over 5 seconds: 94 of 1,512 sitesOver 5 seconds6%
Chart 2. Time from navigation start (the browser's request for the page) to the first advertising request that got a response, across the 1,512 banner sites where an ad request, not only a cookie, was recorded. Median 1.8 seconds.

Many of these sites are not dealing with a single vendor. On 945 the tracking involved one ad vendor, on 350 two, and on 367 three or more.

Which trackers fire first

Meta and Google are the most common, by a long wayBanner sites where each ad vendor sent a request or set its cookie before any choiceMeta (Facebook): 827 sitesMeta (Facebook)827Google Ads: 741 sitesGoogle Ads741LinkedIn: 208 sitesLinkedIn208TikTok: 207 sitesTikTok207Microsoft Ads: 178 sitesMicrosoft Ads178Klaviyo: 147 sitesKlaviyo147Google DoubleClick: 131 sitesGoogle DoubleClick131Pinterest: 124 sitesPinterest124OpenAI: 111 sitesOpenAI111Criteo: 77 sitesCriteo77The Trade Desk: 77 sitesThe Trade Desk77
Chart 3. Banner sites (of 6,955) where each vendor sent an advertising request or set its identifier cookie before any interaction. A site can count for several vendors.
Data table
VendorBanner sites where it fired or set its cookie before consent
Meta (Facebook Pixel)827
Google Ads741
LinkedIn208
TikTok207
Microsoft Advertising178
Klaviyo147
Google DoubleClick131
Pinterest124
OpenAI111
Criteo77
The Trade Desk77

The cookies these tags leave behind are the familiar ones. Across all 13,712 loaded sites, Meta's _fbp was set before consent on 1,151 and Google's _gcl_au on 1,073. TikTok's _ttp was set on 293 and Microsoft's MUID on 221. On 1,871 of the 2,173 sites with any marketing cookie, at least one was written to the site's own domain. So these identifiers belong to the site itself, not just to third-party domains loaded in the background.

The banner says no; the tags are not listening

Cookiebot exposes the visitor's consent state to the page, so on Cookiebot sites we can read what the banner itself recorded. On 815 sites with a visible Cookiebot banner, Cookiebot reported marketing consent as false. On 260 of those (32%), advertising tracking was active anyway.

Google Ads shows the same mismatch from the other side. Google's tags can take the visitor's choice from the banner ("Consent Mode") and declare it on every hit, in two parameters, gcs and gcd. When ad consent is denied, the tag sends only cookieless pings, which we do not count. Of the 716 sites with a banner on screen and a counted Google Ads hit, 545 (76%) sent hits whose parameters show Consent Mode was not set up for advertising at all: gcd marks ad storage as "not set", or neither parameter is present. The other 171 (24%) declared ad consent "granted" before the visitor had chosen, like the clothing shop above.

Neither result shows that a consent platform is broken, and the scan cannot see how each site installed its tags. What it shows is a mismatch: the state the banner holds and the signals the advertising tags send do not agree. Possible causes include tags installed outside the consent platform, a shop plugin or tag-manager integration that bypasses it, consent defaults that were never set, or defaults set to "granted".

By consent platform

Every consent platform has sites that fire earlyShare of banner sites with ad tracking active before any choice, by platformAverage 24%Shopify privacy API: 182 of 324 sites (56.2%)Shopify privacy API56%iubenda: 80 of 205 sites (39.0%)iubenda39%Cookiebot: 263 of 819 sites (32.1%)Cookiebot32%CookieYes: 112 of 418 sites (26.8%)CookieYes27%OneTrust: 126 of 629 sites (20.0%)OneTrust20%IAB TCF (any): 233 of 1,183 sites (19.7%)IAB TCF (any)20%Complianz: 39 of 207 sites (18.8%)Complianz19%Usercentrics: 62 of 345 sites (18.0%)Usercentrics18%Google Funding Choices: 59 of 326 sites (18.1%)Google Funding Choices18%consentmanager: 32 of 235 sites (13.6%)consentmanager14%
Chart 4. Consent platform detected on the page; platforms with at least 200 banner sites. TCF overlaps the named platforms. Exact counts and shares are in the data table.
Data table
Consent platform detectedSites with the banner on screenAd tracking activeShare
IAB TCF (any TCF-registered platform)1,18323319.7%
Cookiebot81926332.1%
OneTrust62912620.0%
CookieYes41811226.8%
Usercentrics3456218.0%
Google Funding Choices3265918.1%
Shopify customer-privacy API present32418256.2%
consentmanager2353213.6%
Complianz2073918.8%
iubenda2058039.0%

This isn't a league table. Any of these platforms can hold tags back until the visitor says yes; it comes down to how each site sets it up. A news site and a clothing shop also run very different numbers of tags, whichever banner they use.

Shopify is the outlier: on 56% of the shops where we saw Shopify's privacy API, ad tracking was already active. The scan can't tell us whether that came from Shopify's own banner or from one of the shop's ad integrations.

By country: Germany 14.7%, UK 31.2%

UK sites fire early twice as often as German onesShare of banner sites with ad tracking active before any choice, by countryAverage 24%United Kingdom: 354 of 1,134 sites (31.2%)United Kingdom31%Netherlands: 200 of 669 sites (29.9%)Netherlands30%Spain: 129 of 453 sites (28.5%)Spain28%Italy: 185 of 703 sites (26.3%)Italy26%Poland: 203 of 793 sites (25.6%)Poland26%France: 154 of 650 sites (23.7%)France24%United States: 75 of 345 sites (21.7%)United States22%Ireland: 26 of 123 sites (21.1%)Ireland21%Germany: 269 of 1,835 sites (14.7%)Germany15%
Chart 5. Registered country of the company behind each site. Exact counts and shares are in the data table; smaller countries carry wider margins of error (Ireland: 123 sites).
Data table
CountrySites with a banner on screenAd tracking activeShare
Germany1,83526914.7%
United Kingdom1,13435431.2%
Poland79320325.6%
Italy70318526.3%
Netherlands66920029.9%
France65015423.7%
Spain45312928.5%
United States3457521.7%
Ireland1232621.1%

German sites with a banner had tracking active at roughly half the rate of British and Dutch ones. This is an observed difference between groups of sites, not evidence of why. We saw the same split with OpenAI's pixel last week, where barely a third of German sites fired it before consent. The country is the one we hold for the company behind each site, which is not always where its visitors are.

Fixing the banners has not happened

The European Commission's Digital Omnibus proposal of November 2025 included a way out of the banners: websites would have had to honour a consent choice set once in the browser. On 21 October 2026 the Council of the EU agreed its negotiating mandate, and that provision (Article 88b in the proposal) is struck out of it, along with the duty on browser makers to support such signals. (Council of the EU) (mandate text) This is a negotiating position, not law: talks start once the European Parliament adopts its own position, and Parliament could still push for the provision. For now, the banner stays.

The rule itself has not changed. Under the EU ePrivacy Directive and, in the UK, PECR, storing or reading non-essential cookies or similar identifiers on a visitor's device generally needs consent first, with exemptions such as cookies strictly necessary for a service the visitor asked for. Our scan records what a browser sent and stored; whether a particular site broke the rules depends on facts the scan cannot see, and is for regulators and courts to decide.

Regulators do enforce the rule. In September 2025 France's CNIL fined the operator of shein.com 150 million euros because advertising cookies were placed the moment visitors arrived, before any interaction with the banner. (CNIL) In November 2025 it fined American Express 1.5 million euros for cookies placed before any choice and after a refusal. (CNIL) In the UK, since 5 February 2026 the ICO can fine up to 17.5 million pounds or 4% of global turnover for breaches of PECR, which covers cookies, up from 500,000 pounds, under the Data (Use and Access) Act 2025. (ICO)

Check your own site in two minutes

Before you choose

  1. Open a new private window in Chrome (Ctrl+Shift+N on Windows, Cmd+Shift+N on a Mac). Turn off any ad blocker for private windows, or the requests will not leave the browser.
  2. Open the developer tools (F12, or Cmd+Option+I on a Mac), click the Network tab and tick Preserve log (Keep log in newer versions of Chrome).
  3. Go to your homepage. Do not click anything on the cookie banner. Wait about ten seconds.
  4. Type each of these into the Network panel's Filter box in turn: facebook.com/tr, pagead, ccm/collect, tiktok, linkedin, bat.bing, pinterest, doubleclick. Ignore anything ending in .js: that is a script download, not an event. Any other request listed went out before a choice was made, but not all of them are tracking: Google sends cookieless pings when consent is denied (step 8 shows how to tell). Click one and open Headers to see the full address and the status code.
  5. In the Application tab, open Cookies and look for _fbp, _gcl_au, _ttp, _uetsid or _pin_unauth.

After "Reject All"

  1. Click Reject All (or your banner's equivalent).
  2. In the Network tab, click Clear (the circle with a line through it), then reload the page.
  3. Go through the filters from step 4 again. On Google requests (ccm/collect, pagead, doubleclick), look in the address for Google's consent parameters. gcs=G100 or G10- means ad consent was declared denied. With no gcs, look at the third character of gcd=: p, q, m or u means denied, l means Consent Mode is not set up. A denied ping is expected after "Reject All"; a hit with no denial is not. Other vendors have their own signals, so a request on its own is a lead to check, not proof of a breach.

If something fires, the fix is often configuration rather than a new tool: load the tag through the consent platform (or mark it so the platform blocks it until consent), switch off tracking in any shop or plugin integration that bypasses the banner, and give Google's tag a Consent Mode default of "denied" for European visitors.

We are still scanning. The full run covers all 106,821 sites and finishes in November; we will update these figures when it does. If you sell consent or privacy tooling, we can share the site-level list for your market, with the evidence behind each observation. Request the list

Method note

Population: 106,821 reachable, not-opted-out websites from the CipherCue entity set, in a seeded random order (md5 of entity ID). Figures are a snapshot of the first 15,583 scanned between 23 and 26 October 2026: 13,712 loaded normally (the denominator); 1,086 served a bot challenge or block page, 561 an HTTP error, 219 failed to load, 5 timed out, and these are excluded rather than counted as clean. Each site was loaded once from a server in Germany in headless Chrome 150 with a fresh profile, a standard Windows Chrome user agent, en-GB language and a 1366 by 768 window. CipherCue identity headers were sent on the site's own page request only. After the page's load event, the scan observed for 10 seconds with no interaction, then recorded cookies (names and domains, not values), consent-platform state where the platform exposes it, banner visibility and a screenshot.

A banner counts as visible when a known consent platform's banner element or frame is displayed, or when a visible element contains consent wording plus an accept or reject control. Advertising tracking means a request to a known advertising measurement endpoint that received an HTTP response, excluding script downloads, preflight requests and Google hits that declare ad storage denied (in gcs, or in gcd when gcs is absent); or an advertising identifier cookie (for example _fbp, _gcl_au, _ttp, MUID, IDE, TDID). DoubleClick's test_cookie, which only checks whether cookies work, is not counted. Google Analytics, including its Google Signals traffic to stats.g.doubleclick.net and ga-audiences, is reported as analytics, not advertising. Of the 1,662 banner sites counted, 1,512 had an answered advertising request (1,320 of them also an identifier cookie) and 150 had an identifier cookie only. Request times are measured from the page's own document request (navigation start); banner render time was not recorded. Confidence intervals are Wilson 95%.

Verification

We drew a seeded random sample of 20 sites from the "banner on screen, tracking fired" group and checked each against its screenshot and full request log. That review found two classifier rules that over-counted Google Ads: one matched the download of Google's conversion script, the other matched Google Analytics' Signals traffic. An audit of every rule then found smaller loader and consent-check matches for Adform, Snap, AdRoll, Taboola and Hotjar. We fixed all of them and recomputed every figure from the stored raw requests. This lowered the headline from 28.5% to 24.0%. After the fixes, all 9 sampled sites counted for advertising tracking were confirmed by hand: banner visible, advertising requests answered. The other 11 had fired analytics only and are not in the advertising figure. We then checked that the result holds for an ordinary browser, not just our scanner: we reloaded 49 flagged sites (those 9 plus 40 more drawn at random) in a visible Chrome window with a fresh profile, Chrome's own Mac identity, no identifying headers, from a UK connection. Of the 47 that loaded, 44 (94%) again sent advertising tracking with the banner on screen, one sent it but its banner was not detected, and two sent none. That check also turned up one tool that behaves differently for automated browsers: CHEQ, an invalid-traffic service, fires Google Ads and Meta pixels at visitors it judges to be bots, to exclude them from ad audiences. It was present on 14 flagged sites and fully accounted for the tracking on 2; we set those pixels aside, which removed those 2 sites from the count. A final audit of Google's consent parameters found the classifier read only gcs: it ignored gcs values with a "not set" position (such as G10-, ad storage denied) and denials declared only in gcd. Reading both parameters removed 6 banner sites, all of which had sent only consent-denied Google hits, and moved the headline from 24.0% to 23.9%. Regression tests now cover both parameters. The same audit found our earlier timing figures were measured from the start of each scan rather than from navigation; they are now measured from navigation start.

Limits

One homepage load per site, from one German IP, on one day. Some sites show banners or load tags differently by location, page or visitor; sites that geo-target banners away from German IPs would appear as "no banner". Headless Chrome can be treated differently from a normal visitor; we hide the usual automation flags, but 1,086 sites still blocked the scan and are excluded. Banner detection can miss unusual designs, which would move a site out of the banner group rather than inflate the headline. Country is the registered country of the company behind each site, not its audience. Consent-platform shares describe the sites using each platform, not the platform's own behaviour.

Disclosure

Figures are reported in aggregate and all four examples are redacted. We make no finding about any individual site.

Legal sources

The consent requirement derives from the EU ePrivacy Directive (2002/58/EC, Article 5(3)) and GDPR, as implemented nationally, and in the UK from PECR. Enforcement examples: CNIL sanctions of Infinite Styles Services Co. Limited (operator of shein.com, 150 million euros, 2025) and American Express Carte France (1.5 million euros, November 2025). UK ICO penalty ceiling for PECR under the Data (Use and Access) Act 2025, in force from 5 February 2026 (ICO statement, 5 February 2026). Digital Omnibus: Council of the EU negotiating mandate agreed by Coreper on 21 October 2026 (Council document 14756/26), in which the proposed Article 88b on automated and machine-readable consent signals is struck out; the European Parliament has not yet adopted its position. We cite these as context for the general rule; we make no finding about any specific site.