Consent Mode Checker
Check a site’s Google Consent Mode v2 setup the way Google will: default before the tag, v2 parameters, all storage types, regions, CMP — scored, explained, with the fix snippet ready.
| Check | Result | Detail & fix |
|---|
Detected consent defaults
Suggested default snippet
How to Use Consent Mode Checker in 3 Steps
Check a page
Enter the URL (or paste the HTML) and press Check. The page, and by default its GTM container, are read for gtag('consent', 'default', …) calls, consent-initialisation tags, a CMP and the Google tags that depend on them.
Read the checklist
Twelve checks, each Pass / Warn / Fail with the exact fix: v2 parameters, all seven storage types, denied-by-default for the EEA, region arrays, wait_for_update, default before the GTM/gtag loader, ads_data_redaction, url_passthrough, CMP present, TCF API, and Google tags firing without any consent signal.
Fix it
Copy the suggested default snippet — generated from what you already have, with missing keys filled in — and place it above your GTM or gtag snippet. Re-run to confirm.
Consent Mode Checker — Frequently Asked Questions
What changed with Consent Mode v2?
Since March 2024 Google requires two extra parameters for EEA traffic — ad_user_data and ad_personalization — alongside ad_storage and analytics_storage. Without them Google Ads stops building audiences and measuring conversions for EU users, and Google Analytics loses modelled data.
Why must the default fire before the tag loads?
The default tells Google tags how to behave before they send anything. If gtag.js or gtm.js loads first, the first hits go out with full storage — a compliance gap and a reason Google’s own diagnostics flag the setup. The checker compares the position of both in your HTML.
My CMP sets consent inside GTM — will this detect it?
Yes, when “read the GTM container” is on: the container is fetched and scanned for consent-initialisation templates and default calls. If the CMP injects the default purely at runtime from its own script, the checker reports the CMP and notes that it could not see the default statically.
What score is “good enough”?
All Fail items fixed and at most cosmetic Warns. The score weights the things that lose data: v2 parameters, default-before-tag, and denied defaults for the EEA count most.
Does Basic vs Advanced Consent Mode matter here?
In Basic mode tags are blocked entirely until consent, so no default is strictly required; in Advanced mode the default is essential. The checker assumes Advanced when Google tags are present in the HTML without a blocking CMP, and says so.
Is my input sent anywhere?
No. Everything is computed by JavaScript in your browser tab. Nothing is uploaded, logged or stored by Toolity.
Why does fetching sometimes fail — and what is the relay?
Browsers block JavaScript from reading other websites directly (CORS). The tool first tries a direct request; when the site forbids it, the URL only is sent to a public read-only relay (allorigins.win, then codetabs.com) that fetches the page and returns its HTML. The relay sees the URL you typed, nothing else — Toolity has no server and keeps no record. If the relay is busy or the site blocks bots, paste the page source instead: that path is 100% local.