Bookmarklet · runs inside the page

Know whether your tags actually fire.

Reading a page's HTML tells you nothing. Anything deployed through GTM is injected at runtime and never appears in the source. This runs inside the page instead, so it sees the real network log: which containers loaded, which IDs are configured, and whether a single hit was ever sent.

Install

Drag this to your bookmarks bar, then click it on any page you want to check.

✓ Misfire
✓ Misfire

Prefer the console? Same loader:

var d=document,s=d.createElement('script');s.src='https://misfire.konvert7.com/check.js?t='+Date.now();d.body.appendChild(s);

When the site has a strict CSP

Both of the above fetch check.js, and a strict script-src blocks that fetch. Running the loader from the console does not get around it. The <script src> it appends is still the page loading a script. Paste the whole checker instead; it requests nothing.

(()=>{function G(e){return typeof e==="objec… // the whole checker, 12.2 KB, no network
What it checks
ContainersGoogle Tag Manager
  • ·Container ID from the gtm.js request
  • ·Loaded but never initialised
  • ·More than one container
MeasurementGoogle Analytics 4
  • ·Measurement ID from the tag and the beacon
  • ·One property measured twice, doubling sessions
  • ·Tag present but no hit ever sent
RecordingMicrosoft Clarity
  • ·Project ID from the tag request
  • ·Loaded but window.clarity never booted
  • ·Recording but uploading nothing

Also detected, but only listed when actually on the page: Plausible, PostHog, Vercel Analytics, Meta Pixel, Hotjar. And the consent platform (OneTrust, Cookiebot, Osano, CookieYes or a bare TCF framework), so a tag that loaded but sent nothing names what is holding it instead of shrugging at you.

See it catch something

The demo page installs GA4 twice over and denies analytics consent. Run the bookmarklet there and it should report both. If it does not, the checker is broken, not your site.

Open the demo