Cookie banners are the most universally disliked element on the modern web, and most of them are doing a worse job than their owners believe. They irritate visitors, they destroy analytics data, and a significant proportion of them would not survive scrutiny. The three problems have the same root cause and largely the same fix.
- A banner that makes rejecting harder than accepting is the most common compliance failure and the most common UX failure at the same time.
- Non-essential tags must not fire before consent. Many implementations show a banner while loading everything anyway.
- Fewer tags means a simpler banner, better performance and less to get wrong.

The average cookie banner manages a rare achievement. It degrades the experience for every visitor, reduces the quality of the data the business relies on, and still leaves the business exposed. That combination is not inevitable. It is the result of bolting a compliance widget onto a site nobody wanted to think about carefully.
Why this matters now
The legal position in the UK is settled enough to act on. Non-essential cookies and similar technologies need consent before they are set. Consent must be freely given, specific and informed, and it must be as easy to withdraw as it was to give. Cookies strictly necessary for a service the user requested do not require consent, which is a narrower category than most businesses assume.
The practical failure is that most implementations treat this as a notification problem rather than a permission problem. A banner appears saying the site uses cookies, the tags have already loaded, and clicking anything dismisses it. That is a notice, not consent, and it is the single most common non-compliance pattern in the wild.
The commercial cost is real and usually invisible. When consent rates are low because the banner is hostile or confusing, your analytics stops representing your actual audience. You are then making decisions from a sample skewed toward whoever happened to click accept, which is not a random subset of your visitors. Businesses frequently spend months optimising against data that quietly stopped being reliable.
There is a performance dimension too. Consent platforms are themselves scripts, often loaded before anything else and blocking the main thread while they decide what to do. A heavy consent implementation on top of a dozen marketing tags is a meaningful contributor to poor responsiveness, which we covered in INP explained.
The through-line is that all three problems shrink when you run fewer tags. Most of the difficulty here comes from businesses trying to obtain consent for tools they no longer use.
Common mistakes to avoid
The mistakes are consistent across almost every badly implemented banner.
- Making reject harder than accept. One prominent Accept All button and a Manage Preferences link leading to three more screens. This is the clearest compliance failure available and visitors resent it, which means you lose on both counts simultaneously.
- Loading tags before consent. The banner appears, analytics has already fired. Open your network tab on a fresh visit and watch. A surprising number of sites do this, including ones that paid for a consent platform.
- Blocking the whole page. A full-screen overlay with no way past except a decision is aggressive, and for a visitor arriving from search it is the first thing they experience. Bounce rates on first visit reflect this.
- Pre-ticked boxes. Consent cannot be assumed. Any category ticked by default that is not strictly necessary is not consent, however it is labelled.
- No way to change your mind. Withdrawal must be as easy as giving consent. If there is no persistent link to reopen preferences, the implementation is incomplete.
There is a strategic mistake underneath all of these. Businesses install a consent platform and treat the problem as solved, without ever auditing what they are asking consent for. Run the audit and you typically find tags for tools cancelled two years ago, a heatmap trial nobody continued, two analytics packages doing the same job, and a remarketing pixel for a campaign that ended. Every one of those makes your banner more complicated and your site slower for no benefit whatsoever.
The other error is treating the banner as purely a legal artefact and letting the default styling stand. It is frequently the first branded element a visitor sees. It can be plain, small, clearly written and consistent with your site, and it will perform better on every dimension if it is.
A related and very common misclassification is worth spelling out, because it is where most well-intentioned implementations go wrong. Businesses put analytics into the strictly necessary category on the reasoning that they need it to run the business. That is not what the test means. Strictly necessary refers to what is required to deliver the thing the visitor asked for: keeping items in a basket, maintaining a login session, remembering a language choice. Your commercial need for measurement, however genuine, does not make a cookie necessary from the visitor's perspective, and mislabelling it is exactly the sort of thing that turns a technical breach into an obvious one.
Finally, there is the problem of the banner that was configured once and never revisited. Marketing adds a new pixel through the tag manager, it never gets categorised, and it now fires regardless of what the visitor chose because the consent platform does not know it exists. This is why the tag audit and the consent configuration have to be the same piece of work rather than two separate jobs owned by different people.
Quick Strategic Tip
Count the clicks. How many to accept everything, how many to reject everything. If those numbers are not equal, you have found both your compliance problem and your user experience problem in one measurement, and fixing it is usually a configuration change rather than a project.
Step-by-step plan
About a week's work, and the first two steps do most of the good.
- Audit every tag. List each script, what it does, who asked for it, and when anyone last used its output. This is the most valuable step and it is pure admin. Expect to find several with no owner.
- Delete everything unowned. Removing a tag is better than obtaining consent for it. Fewer tags means a simpler banner, faster pages, less data risk and less to explain.
- Categorise what remains. Strictly necessary, analytics, marketing, preferences. Be honest about strictly necessary: it means required for a service the user actively requested, not useful to you commercially.
- Block non-essential tags until consent. Verify in the network tab on a genuinely fresh visit. If anything non-essential fires before a choice is made, nothing else on this list matters.
- Give reject and accept equal weight. Same visual prominence, same number of clicks, adjacent to each other. This is the single change that fixes the most common failure.
- Make the banner small and unobtrusive. A bottom bar rather than a full-screen overlay. Clear plain language, no legal recitation, styled to match your site.
- Add a persistent preferences link. In the footer, always available, reopening the choice. Required for withdrawal and reassuring in itself.
- Turn on consent-aware analytics where available. Most analytics platforms now offer modelling for unconsented visits, which recovers some measurement without setting cookies. Configure it rather than accepting the gap.
- Instrument your consent rates. Track accept, reject and ignore. You cannot tell whether your data is representative without knowing what proportion of visitors it covers.
- Review quarterly alongside your tag audit. New tags arrive continuously. Fold this into maintenance so it does not silently decay, as covered in what a real website maintenance plan should include.
Step one repays the effort disproportionately. A business running fifteen tags and consenting for all of them usually needs five. Cutting ten simplifies the banner, improves performance, reduces the surface area of your privacy exposure, and takes an afternoon.
On step five, there is a persistent worry that an equally prominent reject button will collapse consent rates and destroy your analytics. In practice the drop is smaller than feared, because most people accept when asked clearly and briefly. What genuinely destroys consent rates is a confusing banner that makes people click whatever removes it fastest.
Consent implementation checklist
Verify each of these on a fresh visit in a private window.
- No non-essential tag fires before a choice is made.
- Accept and reject require the same number of clicks.
- Accept and reject have equal visual prominence.
- No category is pre-ticked except strictly necessary.
- The strictly necessary category genuinely is.
- A persistent preferences link exists in the footer.
- Withdrawing consent is as easy as giving it.
- The banner does not block the entire page.
- Language is plain rather than legalistic.
- Every remaining tag has a named owner.
- Consent rates are tracked.
- The tag audit is diarised quarterly.
How to measure impact
Two things to watch: whether your data is representative, and whether the banner is costing you visitors.
Consent rate. The proportion accepting, rejecting and ignoring. This is the coverage figure for all your other analytics, and without it you do not know how much of your audience your reports describe.
First-visit bounce rate. A hostile banner shows up here. Compare before and after any change, particularly for visitors arriving from search who meet the banner before any content.
Tag count over time. A simple number that should trend down. Every tag removed is a small win on performance, privacy and complexity.
Page responsiveness. Consent platforms are heavyweight scripts. Check field INP before and after a tag cull, because the improvement is often larger than expected.
Time to first meaningful interaction. How long before a visitor can actually engage with the page rather than the banner. Not a standard metric, and a useful internal one.
Key terms in plain English
Strictly necessary: Cookies required for a service the user actively requested. A narrow category that does not include analytics or advertising.
Prior consent: Permission obtained before a cookie is set, not after. The requirement most implementations miss.
Consent rate: The share of visitors accepting. Determines how representative your analytics is.
Tag: Any third-party script on your site. Analytics, chat, heatmaps, advertising pixels.
Consent mode: Analytics configuration that adjusts behaviour based on consent, recovering some measurement without cookies.
Withdrawal: Changing your mind about consent. Must be as easy as giving it, which requires a persistent link.
Conclusion and next move
The reason cookie banners are so widely disliked is that most were built to discharge an obligation rather than to be used. Built properly they are small, clear, quick to dismiss in either direction, and ask permission for a short list of things you actually use. That version is more compliant, less annoying, and produces better data than the hostile version.
Start with the tag audit. List everything running on your site with the name of whoever wanted it. The tags nobody can account for are pure cost, and deleting them makes the compliance question, the performance question and the banner design question all smaller at once.
What to do this week
Count the clicks to accept versus reject, and open your network tab on a fresh visit to see whether anything fires before you choose. Those two checks find most problems.
What to do this quarter
Audit and cull your tags, rebuild the banner with equal-weight options and prior blocking, add a persistent preferences link, and start tracking consent rate as the coverage figure for all your analytics.