Cookie banner
Layouts, categories and consent modes
Platform & operations
Cookie banner performance comes down to how much a consent script downloads and how many network round-trips it makes before it can do anything. Kukie ships one async file of about 25 KB gzipped, served from a global CDN with your configuration already inside it, so there is no second request before the banner appears.
Yes, a little, and anyone who tells you otherwise is selling something. A consent banner is a file your visitors did not previously download, run by code that did not previously run. The useful question is not whether it costs anything but how much, where, and whether any of it lands on the part of the page your visitor is waiting for.
Three things are inside a vendor's control: how large the file is, how many further requests it has to make before it can show anything, and whether the browser has to stop and wait for it. Everything else on this page is those three, with numbers attached.
Cost one
Bytes across the wire
Each new visitor downloads the script once, then it is cached and costs nothing again. The size matters least on office broadband and most on a mid-range phone with a weak signal, which is exactly the visitor most likely to give up on a slow page.
Cost two
Round-trips before anything happens
This is the one people underestimate. A script that has to ask a server for its own settings cannot start that second request until the first has finished, so the two delays add up rather than overlap. Bytes you can compress. Latency you cannot.
Cost three
Interference with the page itself
A banner that injects stylesheets into your page, or that pushes your content down when it appears, damages how the page feels rather than how it scores. Visitors notice content that jumps long before they notice a slow number in a report.
There is also an effect that runs the other way, and it is worth knowing about. For a visitor who refuses, a consent layer usually removes more requests than it adds, because the analytics and advertising tags it holds back never load at all. That is how script blocking works, not a promise about your particular site, and the only way to know the net effect on yours is to measure it.
Almost every consent vendor describes its script as lightweight, which is a word rather than a measurement. Here is ours, taken with ordinary command line tools on the exact file your visitors receive.
| Measurement | Value | What it means for your page |
|---|---|---|
| Script, uncompressed | about 83 KB | The size on disk. Nobody downloads this, and it is listed because quoting only the flattering number is how vendors avoid being checked. |
| Transferred, gzip | about 25 KB | What a visitor downloads on a connection that negotiates gzip. This is the figure to compare against other vendors. |
| Transferred, Brotli | about 21 KB | What a visitor downloads where the browser accepts Brotli, which most current browsers do. |
| Loading strategy | async | The browser fetches it alongside your page rather than stopping to wait, so it is never render-blocking. |
| Configuration requests before render | none | Your settings are compiled into the bundle at build time. There is no settings endpoint left to call. |
| Delivery | per-site bundle on a global CDN | Your own file, cached close to your visitors rather than fetched from one origin server on the other side of the world. |
| Style isolation | closed Shadow DOM | No stylesheet is added to your page, and your theme cannot reach inside the banner. Isolation runs both ways. |
| Installation | one script tag | No build step, no bundler, no package to keep up to date. Updates arrive through the bundle. |
Your file is this file, plus your settings
The figures above are the base script. Your bundle is that script with your own configuration written into it, so it is slightly larger in proportion to how much banner text, how many languages and how many catalogued cookies you have. A busy configuration adds bytes; it never adds a request.
Measured in July 2026, and corrected when it moves
Software gains weight as it gains features, and a size published once is stale within a release or two. When these numbers change, this page is corrected to the new measurement rather than quietly rounded down to the old one.
This is the single biggest difference between one consent script and another, and it is invisible in a size comparison. Most consent scripts are generic: the same file goes to every customer, so on arrival it has to ask the vendor's servers which settings belong to this site. Kukie builds a separate file per site with the answer already in it.
Step two cannot begin until step one has finished, so the two waits are stacked end to end rather than overlapping. Whatever the visitor's connection costs in latency, they pay it twice.
There is no step three, and there is no endpoint behind it. The configuration endpoint this product once had was removed entirely in July 2026, so it cannot be called by accident, by an old cached script, or by a future change.
<script src="https://cdn.kukie.io/s/YOUR_SITE_KEY/c.js" async></script>
One line. That is the whole installation.
Per-region behaviour is handled the same way. Every rule you have written is compiled into the same bundle and matched in the browser, so no region ever downloads a second, region-specific configuration. A site using geo-targeted rules does make one short lookup to establish which country the visitor is in, because a browser cannot supply that on its own, and if that lookup does not answer promptly the banner falls back to your default rule instead of waiting.
A Shadow DOM is a sealed fragment of a web page with its own styles. Styles declared inside it do not escape into the surrounding page, and styles from the surrounding page do not get in. The whole Kukie banner is built inside one.
It is a browser feature rather than a trick, so the isolation is enforced by the browser instead of by a wall of overrides in someone's stylesheet.
A global rule that makes every button uppercase, a CSS reset, an inherited line height, a framework that restyles every list: none of it reaches inside. The banner looks the same on a hand-built site as it does on a heavily themed one.
Nothing is added to your stylesheet, no font is imported into your page and no element of yours is restyled. This is the half site owners forget to ask about, and the half that creates work for a designer six months later.
The banner's rules are scoped to its own root, so the browser is not testing them against every element on your page. A consent layer that ships broad global selectors makes work for every element you have, not just its own.
The banner is positioned above your content rather than inserted into the flow of it, so your text and images are not pushed down the page when it appears. Nothing you had already laid out moves to make room.
Isolation is not the same as being stuck with our design. Colours, typography, your own logo, dark mode and right-to-left layouts are all set from inside your dashboard and travel into the shadow root as theme values. That side of it is covered on the customisation page, and the accessibility work that goes with it on the accessibility page.
Core Web Vitals are three measurements Google takes from real visits to your site: how soon the main content appears, how much the layout moves about while it loads, and how quickly the page answers when someone interacts with it. A consent script can influence each of them, by different mechanisms and by very different amounts.
Largest Contentful Paint
How soon your main content appears
An async script does not hold up your page, but it does share the visitor's connection with the hero image or headline that decides this measurement. The lever here is file size, which is why the number at the top of this page is stated rather than described.
Cumulative Layout Shift
How much your content jumps
Layout shift happens when something is inserted into a page and pushes what was already there. The banner is drawn over your content at a fixed position instead, so appearing does not move anything you had laid out.
Interaction to Next Paint
How quickly the page answers a click
The busiest moment in a consent layer is the click on accept, when every held-back tag is released at once. On a page with a lot of tags that is real work, and it is worth checking on a mid-range phone rather than on your laptop.
None of that adds up to a promise, and you should be wary of any consent vendor who offers one. Core Web Vitals belong to a page, not to a script: they are measured on your layout, your images, your hosting and your other third parties, on the real devices your real visitors use. That is why this page gives you a file size and the shape of the loading sequence instead of a score taken on somebody else's website.
None of this requires a testing tool or a developer. Four checks in your own browser will confirm or contradict everything above, and they work just as well on a competitor's banner as on ours.
Open your site, open your browser's developer tools, choose the Network panel and reload the page. Find the consent script in the list and read the transferred column. That is the number your visitors actually pay, compression included.
View the page source and find the consent script tag. If it carries the word async, the browser downloads it in parallel and never pauses your page for it. If it carries neither async nor defer, your page is waiting.
In the same Network panel, look at what the consent script requests after it loads and before the banner appears. A settings or configuration request there is a second round-trip your visitors wait through on every first visit.
Test the page with whatever tool you already use, add the banner, and test it again on the same device and connection. That comparison is worth more than any vendor's published figure, ours included.
While you have the Network panel open, it is worth seeing how much else your page loads. The free third-party script audit lists the third-party scripts running on a public page of your site, and on most sites the consent script is far from the heaviest thing in the list.
For a brochure site on a decent host, 25 KB is not the thing standing between you and a fast page. These are the cases where it genuinely is worth the attention.
A file that is invisible on office broadband is not invisible on a congested mobile network, and the round-trip point matters more than the size point there, because latency on a mobile connection is what hurts. Two sequential requests on a slow connection are noticeably worse than one.
If your Core Web Vitals sit just inside the threshold, everything you add is a candidate for tipping them out. The right response is not to avoid consent, which is rarely optional, but to add it with your eyes open and re-measure afterwards.
Publishers and shops already carry the heaviest third-party payload on the web. A consent layer changes the arithmetic in both directions at once: one more file for everyone, and a good many fewer for every visitor who refuses. Read that alongside the banner itself rather than in isolation.
An agency puts one decision in front of every client at once, and gets asked about it by every client whose developer notices a new script. A published measurement and a one-line embed answer that conversation faster than a support ticket. Multi-site management is on the agencies and teams page.
The bundle, the CDN delivery and the Shadow DOM isolation are how every Kukie site loads, on every plan, because there is no other embed to choose from. What differs by plan is how many sites, how many pages a scan covers and how long consent records are kept, which is set out on the pricing page. Kukie provides the technical infrastructure for consent management; whether your site is compliant depends on how you configure it and may need additional legal measures specific to your organisation.
What the script does once it has loaded, and what it does with the data afterwards.
Layouts, categories and consent modes
Tags wait for consent
EU storage, hashing, audit logs
Background reading on banners, Core Web Vitals and where a consent layer is hosted.
Cookies
March 19, 2026 · 8 min read
A poorly implemented cookie banner can push your Cumulative Layout Shift beyond Google's threshold a...
Read more →
Cookies
March 20, 2026 · 7 min read
Choosing between a self-hosted and cloud-hosted consent management platform affects your site speed,...
Read more →
Cookies
April 4, 2026 · 8 min read
Safari ITP limits JavaScript-set cookies to just 7 days, meaning returning visitors see your consent...
Read more →
Compliance
July 7, 2026 · 10 min read
A Content Security Policy whitelists scripts with a nonce; a consent tool blocks scripts until a vis...
Read more →What site owners ask before they add a consent script to a page they have spent months making fast.
One async file, your settings already inside it. Free plan, no card required.
Quick Profiles
Adjustments
Settings are saved in your browser only. Accessibility Statement