Home / Blog / Do consent banners actually block trackers?

Do Consent Banners Actually Block Trackers? How to Audit Your Own Banner

The banner is up. The trackers are running.

Install a fresh consent banner on a typical site, decline everything, and open the network tab. In a depressing number of cases, the trackers fire anyway: analytics, ads, social pixels, all phoning home before the visitor consented to anything. The banner did its theater. The scripts did their business.

This is the most common consent failure on the web, and it is also the most checkable. You do not need a lawyer to find it. You need a browser, a fresh profile, and twenty minutes. Here is how to audit your own banner and what to do about the failures you find.

The twenty-minute audit

Open a fresh browser profile or an incognito window so no prior consent is stored. Open DevTools to the network tab, filtered to third-party requests. Load your homepage and do not touch the banner. Watch what fires. Every analytics hit, ad request, or social embed that loads before any consent choice is a violation of the promise your banner makes.

Now click reject all, or decline every optional category. Reload and watch again. The remaining third-party traffic should be limited to what is strictly necessary. Then accept everything and confirm the full set loads. This three-state check, no choice, reject, accept, tells you whether your banner actually gates anything or just records preferences that nothing respects.

Pay special attention to the sneaky ones: tag managers that fire their default container before consent state is evaluated, fonts and embeds that pull tracking along, and single-page-app navigations that re-fire scripts without re-checking consent. The banner often works on the landing page and fails everywhere after.

The failure modes, ranked

The worst is no gating at all: scripts hardcoded in the page that run regardless of consent state. This usually means the banner was added without touching the tag implementation, and it is a full rebuild of the tagging layer to fix. Common, and the one regulators penalize.

Next is race-condition gating: the consent script and the tracking scripts load in parallel, and the trackers win the race. The banner technically gates, but only when it loads first, which is not guaranteed. The fix is to hold tracking behind the consent signal deterministically, not hopefully: load the consent state first, then conditionally load everything else.

Then there is category mislabeling: analytics tagged as strictly necessary, marketing pixels filed under functional. The gating works, but the categories lie, so declining marketing changes nothing. This is a configuration problem, and it is fixed by mapping every tag to its honest category and testing the reject path per category.

Making the fix stick

Document the expected behavior per consent state: which tags fire on reject, which on accept, which always. Turn the three-state check into a recurring test, run after every tag change, because marketing teams add tags constantly and each new tag is a new chance to break gating. The banner is not a install-and-forget component. It is a control plane for your entire third-party footprint, and it needs the same change discipline as the rest of your infrastructure.

Get a free consent audit of your website

Free consent audit

Frequently asked questions

Do consent banners actually block trackers?

Only if they are configured to. Many banners record the visitor's choice while the trackers fire on page load regardless, because the tags were never connected to the consent state. The banner looks functional while controlling nothing.

How can I audit my own banner?

Open key pages in a clean browser, do not touch the banner, and inspect network requests and cookies. Anything collecting with identifiers before a choice is a failure. Then decline everything and repeat: the same tools should now be silent.

What is the most common cause of banners not blocking?

Implementation order: analytics and marketing tags hardcoded in the theme or loaded by a tag manager without consent conditions, so they run before and independently of the banner's decision.