Consent Mode Debug Card

Find the Consent Mode issues that break ad and analytics measurement before launch, all in your browser

Analysis runs entirely in your browser. The pasted snippet, tag ids, site urls, consent values, and dataLayer payloads are not uploaded, logged, or stored. This flags likely Consent Mode setup issues before launch; it is a review aid that checks the setup shape, not the live consent banner behavior.

Paste your consent snippet above, then select Check consent setup to see the issues most likely to break ads and analytics measurement, with the Consent Mode v2 ad signals and the default/update ordering checked first.

About the consent mode debug card

The consent mode debug card turns a pasted Google Consent Mode snippet into a short report of the setup issues most likely to break your ads and analytics measurement before launch. It reads your gtag('consent', 'default', ...) and gtag('consent', 'update', ...) calls, and the GTM dataLayer.push(['consent', ...]) form, then checks them against a fixed rule set: the Consent Mode v2 ad signals (ad_user_data and ad_personalization), the core ad_storage and analytics_storage signals, whether a default state exists and runs before any update, whether values are granted or denied, region-only defaults with no global fallback, a denied default with no wait_for_update, and unrecognized signal keys. The issues most worth fixing are listed first.

Paste your snippet, then select Check consent setup. A sample with a missing v2 ad signal and an update-before-default ordering bug is loaded so you can see the findings right away. Everything runs in your browser. The pasted snippet, tag ids, site urls, consent values, and dataLayer payloads are never uploaded or stored. Download a findings CSV for the full report or copy a markdown launch note to paste into a pull request, a launch checklist, or a ticket.

How to use

  1. Paste your consent snippet into the box. A sample is loaded so you can see how it works.
  2. Use your gtag('consent', 'default'/'update', { ... }) calls, or the GTM dataLayer.push(['consent', ...]) form.
  3. Select Check consent setup to parse the consent commands and run the rule checks.
  4. Read the summary and the findings table. The highest-severity issues are listed first, critical before high and medium.
  5. Select Download findings CSV for the full report, or Copy launch note to paste a markdown summary into a pull request or launch checklist.

Worked examples

A default with no ad_user_data flags a critical v2 gap

When the default consent state omits ad_user_data or ad_personalization, each is reported as a critical Consent Mode v2 gap that can break ad measurement.

An update before the default is flagged

When a consent update runs before the default state in the page order, the update can be lost, so the ordering is reported as a high-severity issue.

A region-only default warns about visitors elsewhere

When every default state is region-scoped with no global fallback, visitors outside the listed regions get no default, so storage is ungated for them.

Frequently asked questions

What does the consent mode debug card check for?
It checks whether your Google Consent Mode setup has the issues most likely to break ad and analytics measurement. It parses your gtag('consent', 'default'/'update', ...) calls and the GTM dataLayer.push(['consent', ...]) form, then checks for the Consent Mode v2 ad signals (ad_user_data and ad_personalization), the core ad_storage and analytics_storage signals, a missing or mis-ordered default state, invalid granted/denied values, region-only defaults with no global fallback, a denied default with no wait_for_update, and unrecognized signal keys. The highest-severity issues are listed first.
Does it run my snippet or call Google?
No. It does not execute the snippet and it does not call Google or any server. It reads the structure of your consent commands with a tolerant parser and applies fixed rules. It is a review aid that surfaces likely setup gaps; it does not guarantee that a snippet it flags clean behaves correctly at runtime, because the live values depend on your consent banner.
What is Consent Mode v2 and why do ad_user_data and ad_personalization matter?
Consent Mode v2 added two ad signals, ad_user_data and ad_personalization, that Google requires for ad personalization and remarketing features in many regions since March 2024. A setup that sets only the older ad_storage and analytics_storage signals is incomplete, so the card flags a default that omits either v2 signal as critical.
Which snippet formats does it accept?
Two: the gtag form, gtag('consent', 'default'/'update', { ... }), and the GTM dataLayer form, dataLayer.push(['consent', 'default'/'update', { ... }]). Single or double quotes are both accepted, and bare or quoted object keys both work. A value that is a variable reference rather than a literal is left unjudged, because its real value is resolved at runtime. Large pastes are bounded so one parse cannot freeze the tab.
Is my snippet uploaded anywhere?
No. Parsing, the rule checks, and the export all run in your browser. The pasted snippet, tag ids, site urls, consent values, and dataLayer payloads are never sent to a server or saved. Analytics records only a coarse finding-count band and the highest severity, never the snippet content. Download the findings CSV or copy the launch note before you close the tab.
Can I keep a record of the review?
Yes. Download findings CSV gives you a spreadsheet-ready file with one row per finding, and any cell that could be read as a spreadsheet formula is escaped so the export is safe to open. Copy launch note gives you a markdown summary, highest severity first, that you can paste into a pull request, a launch checklist, or a ticket.

Use this again tomorrow

Save this page so it's one tap away when you need a quick result.

Bookmark this tool

Ready for a quick Daily Challenge?

Play Daily Challenge on sts.games