Skip to content
Start free Sign in

Cookie banner performance

Small, async and measured.

Kukie.io loads one small script that never makes your page wait, with your settings built in. The only request before the banner shows is a short lookup of the visitor's region.

Script, uncompressed
about115KB
Transferred with gzip
about36KB1
Transferred with Brotli
about31KB
Settings requests before the banner
0

The short answer

A consent banner always costs something.

It is a file your visitors did not download before, run by code that did not run before. The useful question is how much, where, and whether it lands on the part of the page your visitor is waiting for.

  1. 1. File size

    Bytes across the wire

    Each new visitor downloads the script once, then it is cached. The size matters least on office broadband and most on a mid-range phone with a weak signal, the visitor most likely to give up on a slow page.

  2. 2. Waiting time

    Requests before anything happens

    A script that has to ask a server for its own settings cannot start that second request until the first has finished, so both delays add up. Bytes you can compress. Waiting time you cannot.

  3. 3. Your layout

    Interference with the page

    A banner that adds stylesheets to your page, or pushes your content down when it appears, hurts how the page feels rather than how it scores. Visitors notice content that jumps long before a slow number in a report.

There is also an effect in the other direction. 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. That is how script blocking works, not a promise about your site: the only way to know the net effect on yours is to measure it.

Specification

Measured on the file we ship.

Almost every consent vendor calls its script lightweight, which is a word rather than a measurement. Here is ours, taken on the file your visitors receive.

Measured size and loading of the Kukie.io banner script
Measurement Value What it means for your page
Script, uncompressed about 115 KB The size on disk. Nobody downloads this; it is listed because quoting only the flattering number is how vendors avoid being checked.
Transferred with gzip about 36 KB What a visitor downloads on a connection that uses gzip. This is the figure to compare with other vendors.
Transferred with Brotli about 31 KB What a visitor downloads where the browser accepts Brotli, which most current browsers do.
Loading async The browser fetches it alongside your page instead of stopping to wait, so it never blocks rendering.
Settings requests before the banner none Your settings are inside your site's file. There is no settings endpoint left to call; the one request before the banner is the region lookup.
Region lookup 2 fields, kept 24 hours The visitor's country and region, nothing else. The browser keeps the answer for a day, so later pages on the same device skip it.
Delivery your own file on a global CDN Cached close to your visitors rather than fetched from one server on the other side of the world.
Styles kept apart from your page The only stylesheet added to your page is a small one for blocked-embed placeholders, and your theme does not restyle the banner.
Installation one script tag No build step and no package to keep up to date. Updates reach your site's file without a change on your side.

Measured on 2 November 2026 on the shared script, before your settings are added: gzip at level 6 and Brotli at quality 11. KB here is 1,024 bytes.

  • Your file is this script plus your settings

    The figures above are the shared script. Your site's file is that script with your settings written into it, so it is larger in proportion to your banner text, your languages and the cookies you list. More settings add bytes; they never add a request.

  • Corrected when it moves

    Software gains weight as it gains features, and the script has grown since August 2026. In October it lost 2 KB, when the report that only debug mode uses moved to a separate file, and again on 28 October, when its icons were redrawn in one icon family. Each time a measurement moved, the figures on our pages moved with it rather than keeping the old one.

Loading

One file, then the banner.

This is the biggest difference between one consent script and another, and a size comparison does not show it. Most consent scripts are generic: every customer gets the same file, so on arrival it has to ask the vendor which settings belong to this site. Kukie.io gives each site its own file with the answer already inside.

  1. Step 1: Your page starts drawing

    The browser reads your HTML. The consent script carries async, so it downloads alongside your page and the browser never stops to wait for it.

  2. Step 2: Your file arrives with your settings inside

    Your site's own file comes from the CDN with your banner text, categories, cookies and region rules already in it. There is nothing to ask for.

  3. Step 3: Defaults go in before anything waits

    If you use Google Consent Mode, its defaults are set straight away, denied wherever your region rules ask for consent first, and blocking switches on for the tags and embeds you hold back, before the script waits for anything.

  4. Step 4: One region lookup

    A short request for the visitor's country and region, which the browser keeps for 24 hours. If it fails or takes more than 3 seconds, the banner applies your strictest rule instead of waiting longer.

  5. Step 5: The banner is drawn over the page

    It appears at a fixed position over your content, inside its own style boundary, so nothing you laid out moves and your theme does not restyle it.

  6. Step 6: The visitor answers

    The tags the visitor allowed are released at that moment. The ones they refused never load at all.

Where a settings request would sit

A generic script asks for its settings after it arrives, and that wait stacks on the first. The shape of the two sequences, not a measurement of time.

<script src="https://cdn.kukie.io/s/YOUR_SITE_KEY/c.js" async></script>

One line is the whole installation. The settings endpoint this product once had was removed in July 2026, so it cannot be called by accident, by an old cached script or by a future change.

Region rules work the same way. Every rule you write is in the same file and matched in the browser, so no region downloads a second set of settings. The one lookup is for the visitor's country, which your region rules need and a browser cannot supply on its own.

Core Web Vitals

What a banner can change in your scores.

Core Web Vitals are 3 measurements Google takes from real visits: how soon the main content appears, how much the layout moves while it loads, and how quickly the page answers when someone interacts with it.

  • Largest Contentful Paint

    Good at 2.5 s or lessPoor above 4 s

    How soon your main content appears

    An async script does not hold up your page, but it shares 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

    Good at 0.1 or lessPoor above 0.25

    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 laid out.

  • Interaction to Next Paint

    Good at 200 ms or lessPoor above 500 ms

    How quickly the page answers a click

    The busiest moment in a consent layer is the click on Accept all, when every held-back tag is released at once. On a page with many tags that is real work, worth checking on a mid-range phone rather than your laptop.

Google judges each metric at the 75th percentile of real visits, so a page passes when at least 3 visits in 4 meet the threshold. None of that adds up to a promise, and a consent vendor who offers one deserves a second look. 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 devices your 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.

Check it yourself

Every claim here, in your own browser.

None of this needs a testing tool or a developer. These 4 checks in your browser confirm or contradict everything above, and they work as well on another vendor's banner as on ours.

  1. Check 1: Read the transferred size

    Open your site and your browser's developer tools, choose the Network panel and reload. Find the consent script and read the Transferred column: that is what your visitors download, compression included. Developer tools count 1,000 bytes to the kB, so the gzip figure shows as about 38 kB.

  2. Check 2: Confirm nothing waits for it

    View the page source and find the consent script tag. If it carries 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.

  3. Check 3: Count what the script asks for next

    In the same Network panel, look at what the consent script requests after it loads and before the banner appears. A settings request there is a second wait for your visitors on every first visit.

  4. Check 4: Measure your page, before and after

    Test the page with the tool you already use, add the banner, and test again on the same device and connection. That comparison is worth more than any vendor's published figure, ours included.

While the Network panel is open, look at how much else your page loads. The 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.

Audit your scripts

When it matters

When script weight is worth your attention.

For a brochure site on a decent host, 36 KB is not what stands between you and a fast page. These are the cases where it is worth the attention.

  • Most of your visitors are on phones

    A file that is invisible on office broadband is not invisible on a busy mobile network, and there the waiting time matters more than the size. Two requests in a row on a slow connection are noticeably worse than one.

  • Your page is already borderline

    If your Core Web Vitals sit close to the threshold, anything you add can tip them over. The answer is not to skip consent, which is rarely optional, but to add it knowingly and measure again afterwards.

  • You are ad-funded or conversion-sensitive

    Publishers and shops already carry the heaviest third-party load on the web. A consent layer changes the sums in both directions: one more file for everyone, and many fewer for every visitor who refuses.

    Learn more about the consent banner

  • You install the same script on many sites

    An agency puts one decision in front of every client, and hears about it from every client whose developer spots a new script. A published measurement and a one-line embed answer that faster than a support ticket.

    Learn more about Kukie.io for agencies

Every Kukie.io site loads this way, on every plan, because there is only one embed. What differs by plan is how many sites you can add, how many pages a scan covers and how long consent records are kept.

Questions about performance

Does a cookie banner slow down my site?
A little. Every third-party script costs something, so a consent banner is never free; what differs between vendors is how much. Three things decide it: the size of the file, whether the browser has to wait for it before drawing your page, and how many further requests it makes before it can show anything. The Kukie.io script is about 36 KB with gzip, loads asynchronously so nothing waits on it, and carries your settings inside the file.
How big is the Kukie.io banner script?
The shared script is about 115 KB uncompressed, about 36 KB when the server sends it with gzip and about 31 KB where the browser accepts Brotli (measured in November 2026). Your visitors download the compressed figure once, and then it is cached. Your site's own file is that script plus your settings, so it is larger by however much banner text, how many languages and how many cookies you have set up.
Does a cookie banner affect Core Web Vitals?
It can touch all 3, in different ways and by different amounts. A large script competes for bandwidth with the images that decide how soon your main content appears. Anything inserted into the page can push content around and count as layout shift. Releasing held-back tags the moment a visitor accepts is real work on the main thread. How much any of that matters is measured on your page with your visitors, not quoted from a vendor page.
Is the Kukie.io consent script render-blocking?
No. The embed carries the async attribute, which tells the browser to fetch the file alongside the rest of the page instead of stopping to wait for it. Your HTML keeps parsing and your content keeps drawing while the consent script downloads. That is how the script is loaded rather than a setting, so it applies to every Kukie.io installation.
Does the banner have to fetch its settings before it can appear?
No. Each site gets its own file from the CDN with its settings already inside, so the banner never waits for a settings request. The old settings endpoint was removed in July 2026, so there is nothing left to call. Every site does make one short lookup of the visitor's country before the banner appears, because a browser cannot supply that on its own. The answer is two fields, and the browser keeps it for 24 hours, so later pages on the same device skip the lookup. The rules themselves are already in the file, and if the lookup fails or takes more than 3 seconds the banner applies your strictest rule.
Will the cookie banner interfere with my own CSS?
No. The banner keeps its styles apart from your page: your theme does not restyle the banner, and the banner does not restyle your page. The one stylesheet it adds to your page is a small one for the placeholders that stand in for blocked embeds. There is no reset applied to your elements and no font override for your designer to work around later.

Add consent without a settings request.

One async script with your settings already inside it, on every plan including Free.

Related features

What the script does once it has loaded, and what happens to the data afterwards.

See all features

More on consent and page speed

Background reading on banners, Core Web Vitals and where a consent layer is hosted.

See all articles

Footnotes

Kukie.io provides tools to collect and record consent. It is not legal advice, and using it does not by itself make a website compliant with any law.

  1. 1. Measured on 2 November 2026 on the shared script, before your settings are added: 120,671 bytes uncompressed, 37,714 bytes with gzip at level 6 and 31,919 bytes with Brotli at quality 11. KB on this page is 1,024 bytes; browser developer tools count 1,000 bytes to the kB, so they show the gzip figure as about 38 kB. The compression your visitors receive from the CDN can differ slightly. Back to footnote 1 in the text

Listed on