Home / GA4 debugger

The GA4 debugger that shows the request

GA4 has DebugView. It shows what Google Analytics received, for a property you own, once debug mode is on. Everything before that point is where the bugs live.

DebugView is a report. It renders events after GA4 has ingested and processed them, for a property you have access to, and only while the session is flagged for debugging. That makes it the right tool for one question — did GA4 accept this — and the wrong tool for the question people usually have, which is what the browser actually sent.

Tag Master reads /g/collect directly. Every parameter, in the order it went out, on any page, with no debug mode and no property access.

What DebugView cannot show you

What you see instead

The decoded hit: the event name, the event parameters split into their string and numeric forms, the client and session identifiers, the page location and referrer as sent, the consent signal riding along with it, and the sequence number that tells you whether a hit was the first of its batch.

A decoded GA4 purchase request in the panel, showing the event name, value, currency and the ecommerce items
The request as it left the browser. The items are unpacked from the compressed pr1, pr2 form GA4 sends them in.

"GA4 shows the event" and "the browser sent these values" are not the same statement, and almost every hard measurement bug lives in the gap between them. A purchase that reports the right revenue in DebugView but sends no currency is the shape of it.

Ecommerce items, unpacked

GA4 packs the item array into a compressed positional form — pr1, pr2, each a run of two-letter keys. It is readable, technically, and nobody reads it. The panel unpacks each item back into its fields so a missing item ID or a quantity of zero is visible at a glance instead of being decoded by hand.

This is where most ecommerce reporting problems turn out to be: not a tag that failed to fire, but a tag that fired with an item array assembled from a dataLayer that was one page behind. The longer comparison with DebugView works through what each one is good for.

Consent, on every hit

Under Consent Mode a denied hit still goes out; it goes out flagged. The distinction between "no hit" and "a hit that told Google not to use it for advertising" is invisible in DebugView and decisive when someone asks why conversions dropped. Each request carries its consent state, and it is read alongside the default-then-update sequence rather than on its own.

The consent panel showing the default and update calls in order, with the requests that went out between them
Every GA4 hit carries its consent signal. Reading it next to the sequence is how you tell a denied hit from a missing one.

Where DebugView still wins

Anything about what GA4 did after receiving the hit. Whether the event was attributed to the right session, whether a user property stuck, whether an audience matched, whether GA4 accepted a custom dimension you have registered — that all happens on Google's side, and no browser extension can see it. Send the hit, then confirm it landed. The two halves are different tools.

Questions

Can I debug GA4 without DebugView?

Yes, for everything up to the point GA4 receives the hit. Reading the /g/collect request shows the event name, parameters, identifiers and consent signal as the browser sent them, with no debug mode and no property access.

Do I need debug_mode or the GA Debugger extension?

No. Those exist to flag a session so DebugView will display it. Reading the network needs neither, which also means the page behaves exactly as it does for real traffic.

Does it decode ecommerce items?

Yes. GA4 sends items in a compressed positional form and the panel unpacks each one back into its fields, so a missing item ID or a zero quantity is visible without decoding it by hand.

Does it show the Consent Mode state of each hit?

Yes. Every request carries its consent signal, shown next to the default-then-update sequence — which is how you tell a denied hit apart from a hit that never happened.

Does it replace DebugView?

No, and it is not meant to. DebugView is the only view of what GA4 did after receiving the hit: session attribution, user properties, audiences. This shows what the browser sent. Most debugging needs both, in that order.

Guides

The longer form, on the parts that catch people out.

The other two: GTM debugger, dataLayer inspector

Try it on your own site

Tag Master is free, needs no account, and collects no data.

Add to Chrome — Free

Rated 5.0 by 17 users on the Chrome Web Store.