Cookie consent on the Polish web: who draws the banner

One Polish homepage in four runs a cookie consent tool we can name, most of them not a consent platform. Sites with one pass CLS on phones as often as the rest.

Reading time: 11 min readPublished:

About one Polish homepage in four runs a cookie consent tool we can recognise in its HTML, and most of those tools are not the consent platforms people compare online. We read the homepages of the 7,785 .pl sites in the Tranco list of popular sites (opens in a new tab) that answered with HTML, the same sample as our study of third-party scripts on Polish sites, and named the tool behind each cookie consent banner. 27% have one we could name. Hosted platforms such as Cookiebot and OneTrust account for only 40% of them; the rest are WordPress plugins, banners built into shop platforms and open-source scripts.

Then we looked the sites up in the Chrome UX Report (opens in a new tab), Google's record of how fast sites are for real Chrome users. Banners are a known source of layout shift, yet sites with a consent tool pass Cumulative Layout Shift (opens in a new tab) (CLS) on phones as often as sites without one. The gaps we do find are small and follow the kind of tool: sites with a hosted consent platform or a CMS plugin reach a good Largest Contentful Paint (opens in a new tab) (LCP) a little less often, and responsiveness moves with the platform more than with the banner.

.pl homepages read
7,785
run a consent tool we can name
27%
of those tools are hosted consent platforms
40%
of Consent Mode defaults are v2
97%

A cookie consent banner asks the visitor which cookies and scripts the site may use, remembers the answer and tells the site's other code what it is allowed to do. Something has to draw it, and on the Polish web that something comes in four kinds:

  • Hosted consent management platforms (CMPs) such as Cookiebot, OneTrust, CookieYes or Didomi, loaded from the vendor's servers and set up in the vendor's dashboard.
  • CMS plugins: WordPress plugins such as Complianz, CookieYes for WordPress or Cookie Notice, and their Drupal and Joomla equivalents, served from the site's own server.
  • Shop platforms and modules: the banner built into IdoSell, Shoper and Shopify, and the cookie modules PrestaShop shops install.
  • Open-source scripts a site hosts itself, such as CookieConsent by Orest Bida or Klaro.

Hosted platforms are the largest group, on 11% of homepages. Together, the tools that come with the site's own software (plugins, shop banners and self-hosted scripts) are on more. Few run more than one: 0.9% of the homepages with a tool run two different tools.

These shares are floors. A banner the site built itself has no signature we can match, and a consent platform loaded through Google Tag Manager arrives after the HTML we read. We count only what the homepage's HTML loads or draws; a mention of a vendor or a link to its site doesn't count.

No single tool dominates. Cookiebot is on the most homepages. Behind it, close together within the margin of error, come PrestaShop's cookie modules, the banners built into IdoSell and Shoper and the most common WordPress plugins, Complianz and CookieYes for WordPress, with OneTrust just behind.

CookieYes shows up twice because it comes in two forms: a hosted platform and a WordPress plugin, which can run on its own or connect to CookieYes's servers. We count a plugin connected to the servers as the hosted platform. Counted once either way, CookieYes is on 3% of homepages, level with Cookiebot within the margin of error.

Online shops run a consent tool we can name more than twice as often as other sites. The difference is almost entirely the platform: 28% of shops use a banner built into their platform or a store module, while among other sites plugins and hosted platforms carry almost all of it.

By platform, the shops on IdoSell, Shopify and Shoper lead, since those platforms draw a banner themselves once the shop turns it on. PrestaShop and WooCommerce shops land in the middle, with a module, a plugin or a hosted platform. Custom-built, Magento and headless shops and those on AtomStore have the lowest shares, but partly because of our blind spot: we have no rules for a banner built into their themes or platforms, so it is invisible to us.

Google's tags read the visitor's choice through Consent Mode. The page sets defaults, usually "denied", with a gtag('consent', 'default', …) call, and the banner updates them once the visitor chooses. Google's Consent Mode documentation (opens in a new tab) says to call the default command "before any commands that send measurement data", and version 2 added two parameters, ad_user_data and ad_personalization, which Google says Consent Mode users need to send for traffic from the European Economic Area (read on 25 September 2026).

66% of Polish homepages load a Google tag (Tag Manager, the Google tag, Analytics or Ads). Of those, 29% set Consent Mode defaults in the HTML. Where they do, the setup is current: of the homepages that set defaults, 97% name both v2 parameters, and 91% deny ad storage until the visitor agrees.

Defaults written into the HTML are only one way to set them. A consent platform's template in Google Tag Manager sets them inside the container, where we can't see them, so a homepage without defaults in the HTML may still have them. The reverse shows how much the HTML hides: 53% of the homepages that set defaults have no consent tool we can name, and 59% of those load Google Tag Manager, which can load the banner after the page arrives.

A banner is drawn over or into the page, on every first visit, on the phone's small screen. Google's guide to cookie notices (opens in a new tab) calls them "a very common source of layout shifts", and notes that on phones a banner can even become the page's largest element, the one LCP times. We matched the homepages with the Chrome UX Report, which has data for 79% of them.

Layout shift: no difference

Sites with a consent tool pass CLS on phones as often as sites without one: 84% against 83%. Only open-source scripts, a small group, pass more often; the other kinds sit within each other's margins of error. A banner laid over the page shifts nothing, and CrUX judges a site by its 75th percentile across every page, so a shift on first visits alone may not move it.

Loading: hosted platforms go with a slightly slower LCP

Sites with a hosted consent platform reach a good LCP less often: 78% against 84% of sites without a tool. One possible reason: a hosted banner needs its script from another server before it can draw, and on a phone the banner may be the largest thing on the first screen. But sites with a CMS plugin, served from the site's own server, show a similar gap, so it may just as well come from the kind of site that picks these tools and the rest of its code. Sites with a shop platform's banner pass about as often as sites without a tool.

Responsiveness follows the platform, not the banner

INP, the time a page takes to respond to a tap, also differs between some tools and sites without one. Sites with a CMS plugin pass INP more often than sites without a tool. Among the shop banners, the gap runs with the platform: Shoper shops pass far less often, and our study of Polish online shops found Shoper shops slower to respond with no banner in the picture. Sites with OneTrust or Cookie-Script pass less often too; CrUX measures whole sites, so these gaps may come from the kind of site that picks a tool rather than from its banner. Of the 18 tools with enough data, 11 make no difference to INP within the margin of error.

  1. Reserve the banner's place or lay it over the page

    A banner inserted above the content after the page has drawn pushes everything down, which is layout shift. Put it at the bottom of the screen over the content, or in a modal, as Google's guide to cookie notices recommends, and give it a fixed size.

  2. Load the consent script without blocking the page

    Load a hosted platform's script with async and keep it small. Where your tool offers a self-hosted or a plugin version, serving it from your own domain saves the connection to another server.

  3. Set Consent Mode defaults first, with all four parameters

    If you use Google's tags, set the defaults before any tag sends data, and name the two v2 parameters:

    head, before the Google tag
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag() { dataLayer.push(arguments); }
      gtag("consent", "default", {
        ad_storage: "denied",
        ad_user_data: "denied",
        ad_personalization: "denied",
        analytics_storage: "denied",
      });
    </script>

    If a consent platform's Tag Manager template sets the defaults already, don't add a second call in the page.

  4. Check it in the browser

    Open the site in a private window and type dataLayer in the developer console: the consent, default entry should come before any config or event. Accept the banner and check that a consent, update entry follows.

  5. Check your field data

    Look up your site in PageSpeed Insights (opens in a new tab): if it has enough Chrome traffic, the top of the report shows the same CrUX data as this study. A change shows in full after four weeks, since CrUX covers a rolling 28 days.

Every consent tool we found on Polish homepages: its kind, the homepages running it and their share
ToolFamilyHomepagesShare
CookiebotConsent platforms (hosted)2723.5%
PrestaShop modulesShop platforms and modules2102.7%
IdoSell (built in)Shop platforms and modules1982.5%
Shoper (built in)Shop platforms and modules1592%
ComplianzCMS plugins1542%
CookieYes for WordPressCMS plugins1241.6%
CookieYesConsent platforms (hosted)1121.4%
OneTrustConsent platforms (hosted)1091.4%
Cookie Notice & ComplianceCMS plugins1011.3%
Other WordPress pluginsCMS plugins1001.3%
DidomiConsent platforms (hosted)650.8%
Google Privacy & messagingConsent platforms (hosted)530.7%
Shopify (built in)Shop platforms and modules500.6%
GDPR Cookie ComplianceCMS plugins480.6%
CookieConsent (Orest Bida)Open-source scripts470.6%
20 more rows
Every consent tool we found on Polish homepages: its kind, the homepages running it and their share
ToolFamilyHomepagesShare
Cookie-ScriptConsent platforms (hosted)380.5%
UsercentricsConsent platforms (hosted)350.5%
Pandectes (Shopify app)Consent platforms (hosted)340.4%
consentmanagerConsent platforms (hosted)330.4%
EU Cookie Compliance (Drupal)CMS plugins320.4%
cookieconsent (Osano, open source)Open-source scripts250.3%
optAd360 CMPConsent platforms (hosted)220.3%
SirdataConsent platforms (hosted)200.3%
CookieFirstConsent platforms (hosted)200.3%
Joomla extensionsCMS plugins200.3%
KlaroOpen-source scripts170.2%
TermsFeed / FreePrivacyPolicyConsent platforms (hosted)130.2%
InMobi ChoiceConsent platforms (hosted)100.1%
Consentmo (Shopify app)Consent platforms (hosted)100.1%
Real Cookie BannerCMS plugins100.1%
Cookie InformationConsent platforms (hosted)60.1%
WPConsentCMS plugins40.1%
SourcepointConsent platforms (hosted)30%
TrustArcConsent platforms (hosted)30%
iubendaConsent platforms (hosted)10%
Download CSV

How we measured

How we checked the rules

For the 10 most common tools we drew 4 detections each, in a fixed random order, and read the HTML behind every one. 39 of the 40 were right. The one miss was a Cookiebot tag whose type attribute has a typographic quote, so the browser never runs it. Two rules failed an earlier round of the same check and were narrowed: every Shoper shop ships the banner's template, switched on or not, and some sites use the id of a popular WordPress plugin for a banner of their own.

What this data can't tell you

We saw the homepage only, as its HTML arrived, and ran none of it. A banner loaded through a tag manager and a banner the site built itself are invisible, so every share here is a floor, and shop platforms with a built-in banner we recognise come out ahead of those without one. We didn't check whether a banner offers a real choice, blocks cookies before consent or meets the law. A homepage longer than 1 MiB was cut there (331 of them). The field data covers every page of a site, not just the homepage, and only sites with enough Chrome traffic: 89% of the sites with a tool are in CrUX, against 75% of those without, so the sites without a tool are on average smaller.

What is a consent management platform?

A service that draws the cookie banner, records each visitor's choice and tells the site's other scripts what they may do, served from the vendor's servers: Cookiebot, OneTrust, CookieYes, Didomi and others. On the Polish web they are the minority: 40% of the homepages with a consent tool we could name used one in September 2026; the rest ran a CMS plugin, a banner built into their shop platform or an open-source script.

What is Google Consent Mode v2?

A way for a site to tell Google's tags what the visitor agreed to. The page sets defaults with gtag('consent', 'default', …) before any tag sends data, and the banner updates them after the visitor chooses. Version 2 added two parameters, ad_user_data and ad_personalization, to the older ad_storage and analytics_storage.

Is Consent Mode v2 mandatory?

Google's documentation says that Consent Mode users need to send ad_user_data and ad_personalization in addition to ad_storage and analytics_storage, as part of its EU user consent policy for traffic from the European Economic Area. A site that uses Google's advertising tags for visitors from Poland should therefore send all four.

Does a cookie banner slow down a site?

Not in layout shift, in our data: 84% of Polish sites with a consent tool we could name passed CLS on phones, against 83% of those without one. Sites with a hosted consent platform or a CMS plugin passed LCP a little less often, which may be the banner or the rest of their stack. Google's web.dev guide calls cookie notices "a very common source of layout shifts", so the way a banner is placed matters more than whether there is one.

How do I check Consent Mode v2 on my site?

Open the page in a private window, open the browser's developer console and type dataLayer. A 'consent', 'default' entry should come first, before any 'config' or 'event', and it should name ad_user_data and ad_personalization. After you click the banner, a 'consent', 'update' entry should follow with your choice.

Further reading

Best practices for cookie notices (opens in a new tab)Google's guide to cookie banners that don't hurt LCP, CLS or INP, from the Chrome team.web.dev
Set up consent mode on websites (opens in a new tab)Google's documentation for Consent Mode: the four parameters, the default and update commands and their order.developers.google.com
Cumulative Layout Shift (CLS) (opens in a new tab)What CLS measures and the thresholds Google uses.web.dev
PerformanceThird-party scripts on the Polish web: who loads whatOur study of the same homepages: which third-party scripts Polish sites load, and how they go with INP.

Tell us what we’re building.

We reply within one business day.