Cookie consent banners add a real loading cost, with good-LCP down 3.7 points on mobile. Yet the sites that run them pass Core Web Vitals more often overall, because consent tools cluster on better-built sites.
Analysis of 9.58M origins · CrUX + HTTP Archive, May 2026
Part of our Third-Party Script Performance Statistics 2026 research.
Key Findings
- 1.Cookie consent banners add a measurable loading cost: good-LCP drops from 68.9% to 65.2% on mobile, a 3.7-point difference.
- 2.Yet sites with a banner pass Core Web Vitals more often overall: 47.0% versus 41.6% on mobile, a 5.4-point gap the "wrong" way.
- 3.The reason is selection, not the banner. Consent tools cluster on EU-facing, professionally built sites that score higher on responsiveness (good-INP 90.0% versus 83.8%).
- 4.The banner's true, tool-attributable effect is the loading cost. The overall-pass advantage belongs to the kind of site that installs one.
- 5.Cookie banners run on about 14% of the mobile web (1.38 million origins), heavily weighted toward regulated markets.
- 6.The loading cost is avoidable. A banner that loads asynchronously and does not shift layout keeps most of the LCP and CLS budget intact.
How the study was built
The starting point is a single question posed to two datasets at once: of the 9.58 million mobile origins with a CrUX reading, which ones ship a cookie-consent tool, and how do their Core Web Vitals compare with the ones that do not? HTTP Archive's technology fingerprinting supplies the yes-or-no answer for each origin, and CrUX supplies the field metrics those visitors actually experienced. An origin only counts as passing when its 75th-percentile mobile visitor sees Largest Contentful Paint under 2.5 seconds, Interaction to Next Paint under 200 milliseconds, and Cumulative Layout Shift under 0.1 all together. Google set the three-at-once bar deliberately, and origins tend to clear it only when nothing on the page is quietly falling behind.
Keeping the cost small
That loading penalty is a function of how the banner is built, not a fixed price. A consent tool that loads asynchronously, renders a lightweight bar rather than a heavy full-screen modal, reserves its own space so it does not shift the layout, and does not block other scripts will barely dent LCP or CLS. The worst offenders inject a large blocking overlay synchronously during load. If you must run a consent banner, and in many markets you must, choosing or configuring a lightweight one recovers most of the 3.7-point cost. It is one of several third-party JavaScript costs worth auditing together.
| Metric (mobile) | With cookie banner | Without |
|---|---|---|
| CWV pass | 47.0% | 41.6% |
| Good LCP | 65.2% | 68.9% |
| Good INP | 90.0% | 83.8% |
| Good CLS | 87.5% | 88.3% |
| Origins | 1,379,546 | 8,195,744 |
On desktop the pattern is the same: banner sites are behind on good-LCP (77.6% versus 81.1%) but pass at a near-identical overall rate (56.4% versus 55.6%).
The 3.7 points are the part you control
The 47.0% versus 41.6% pass gap is not evidence that a banner speeds a site up. It is the selection effect showing through: consent tools cluster on EU-facing, professionally built origins that were already good on responsiveness at 90.0% INP versus 83.8%, so they carried a higher pass rate before the banner ever loaded. The number that actually belongs to the banner is the 3.7-point LCP cost, 65.2% good versus 68.9%, and that one moves the wrong way.
Those 3.7 points are also the part you control. A consent tool that loads asynchronously, renders a non-blocking bar instead of a full-screen modal, and reserves its own space keeps almost all of the LCP and CLS budget, which is why the desktop pass rates land near-identical at 56.4% versus 55.6%. The banner that fails a site is the one injected synchronously as a heavy overlay during load, not the one built to stay out of the way.
So do not read a failing score as a verdict on your banner. On the 1.38 million origins that run one, the tool is a small, fixable line item, while the real loading work is still the LCP element itself, where the largest gains live. Fix how the banner loads, then put your effort where the page actually paints, and the consent bar becomes a legal requirement your visitors barely notice on a page that stays fast.
Embed this research
Paste this on your site to embed the chart. It links back to the source automatically.
<iframe id="psm-cookie-consent-banners-core-web-vitals" src="https://www.pagespeedmatters.com/embed/data-studies/cookie-consent-banners-core-web-vitals" width="100%" height="600" style="width:100%;border:1px solid #E2E3E1;border-radius:12px" loading="lazy" title="Cookie Banners Cost 3.7 Points of LCP, Yet Those Sites Pass Core Web Vitals More Often - PageSpeed Matters"></iframe>
<script>window.addEventListener("message",function(e){if(e&&e.data&&e.data.psmEmbed==="cookie-consent-banners-core-web-vitals"&&e.data.height){var f=document.getElementById("psm-cookie-consent-banners-core-web-vitals");if(f){f.style.height=e.data.height+"px";}}});</script>
<p style="font:14px/1.5 system-ui,sans-serif">Source: <a href="https://www.pagespeedmatters.com/resources/data-studies/cookie-consent-banners-core-web-vitals">Cookie Banners Cost 3.7 Points of LCP, Yet Those Sites Pass Core Web Vitals More Often - PageSpeed Matters</a></p>
Cite this study
Matt Suffoletto. (2026). Cookie Banners Cost 3.7 Points of LCP, Yet Those Sites Pass Core Web Vitals More Often. PageSpeed Matters. https://www.pagespeedmatters.com/resources/data-studies/cookie-consent-banners-core-web-vitals
Cookie Banners Cost 3.7 Points of LCP, Yet Those Sites Pass Core Web Vitals More Often - PageSpeed Matters - https://www.pagespeedmatters.com/resources/data-studies/cookie-consent-banners-core-web-vitals
Frequently asked questions
Related studies
- Third-Party ScriptsLive Chat Widgets Cost 9.5 Points of Good LCP
- Third-Party ScriptsGoogle Tag Manager Costs 5.3 Points of Good LCP
- Third-Party ScriptsA/B Testing Tools Cost 10.2 Points of Good LCP, the Worst of Any Third-Party Category
- TrendsThe Average Website Loads 375KB of Third-Party JavaScript