Decode analytics beacons: read GA4, Adobe, and Meta Pixel hits in plain English
Paste a GA4, Universal Analytics, Adobe Analytics, or Meta Pixel request into a free client-side decoder and see every parameter explained in plain English.
last verified 2026-07-18
Open DevTools on any commercial site, filter the Network tab to collect, and you’ll see the raw
truth of your analytics implementation: a wall of query strings like en=purchase&tid=G-ABC123XYZ&gcs=G111&ep.transaction_id=T-9921.
That request — the beacon — is what actually reaches Google, Adobe, or Meta. Not what your tag
manager preview claims, not what the dataLayer promised: this. If you QA tracking for a living, you
read beacons constantly, and most of the parameters are two-letter abbreviations documented in five
different places (or nowhere).
The Analytics Beacon Decoder turns that wall of text into a labeled table. Paste a request URL, a bare query string, or a GA4 POST body, click Decode, and every parameter gets a plain-English name and a note on what it means. It auto-detects whether the hit is GA4, Universal Analytics, Adobe Analytics, or Meta Pixel, and it runs entirely in your browser — nothing you paste is sent anywhere, and the page works offline.
What it does
- Accepts messy input. A full beacon URL, a query string with or without the leading
?, a barea=b&c=dfragment, or anx-www-form-urlencodedPOST body. GA4 batch bodies with one event per line are split into individual rows, and blocks separated by a blank line are decoded as separate beacons — so you can paste several hits at once. - Auto-detects the vendor. Each block gets a pill identifying it as GA4 / Measurement Protocol, Universal Analytics (legacy), Adobe Analytics, or Meta (Facebook) Pixel. Anything it can’t classify still gets a raw key/value decode under a “generic” label.
- Summarizes the hit. A one-line summary above the table shows the essentials: for GA4, the
event name and Measurement ID; for UA, hit type and tracking ID; for Adobe, the report suite
(pulled from the
/b/ss/path) and page name, plus a link-tracking flag whenpeis present; for Meta, the event and pixel ID. - Explains every parameter. Each row shows the raw key, its human name, the URL-decoded
value, and a note — e.g.
gcsbecomes “Consent state (gcs)”,midbecomes “Experience Cloud ID (ECID/MCID)”,segbecomes “Session engaged: 1 = engaged session”. - Unpacks Adobe’s compound strings. The
eventslist and the semicolon-delimitedproductsstring get their own decoded sections instead of one unreadable cell.
How it works
Everything runs in a single page of client-side JavaScript; there is no server component.
Parsing. The input is trimmed, an https?:// prefix (if any) is captured as the request path,
and the rest is split on & and newlines into ordered key/value pairs. Order and duplicates are
preserved — useful when a hit sends the same key twice. Values are decoded with
decodeURIComponent (with + treated as a space) inside a try/catch, so malformed encoding shows
the raw value instead of breaking the decode.
Vendor detection is rule-based, checked in order:
- Adobe if the path contains
/b/ss/, or the params includeAQB, orpageNameappears alongsideeventsorv0. - Meta if the path matches
facebook.com/tr, or the hit has bothevandidbut notid. - GA4 if
v=2, the path contains/g/collect, or anen(event name) param is present. - Universal Analytics if
v=1, or botht(hit type) andtidare present. - A google-analytics host with none of the above falls back to UA or GA4 based on
v; anything else is decoded generically.
Dictionaries. Each vendor has a curated dictionary of its most common real-world parameters —
around 27 for GA4 (including consent and privacy signals like gcs, gcd, dma, and pscdl),
21 for UA, 45+ for Adobe (from AQB/AQE markers through mid, aamlh, and mcorgid), and 14
for Meta. Keys not in a dictionary aren’t dropped; they’re flagged “unrecognised” with their
decoded value intact.
Pattern rules handle the parameter families that can’t live in a fixed dictionary:
- GA4:
ep.*/epn.*(string and numeric event parameters),up.*/upn.*(user properties), andpr1–prN(ecommerce items). - Adobe:
c1–c999→ props (traffic variables),v1–v999→ eVars (conversion variables),h1–h9→ hierarchies,lN→ list variables. - UA:
cdNcustom dimensions andcmNcustom metrics. - Meta:
cd[...]custom data andud[...]advanced-matching user data — the latter annotated with a reminder that those values should be SHA-256 hashed.
Adobe deep decode. The events value is split on commas, each event mapped to a label
(scAdd → “Cart add”, purchase → “Purchase”, and so on), with =value amounts and :id
serialization suffixes called out separately. The products string is split on commas and
semicolons into a table with columns Category, Product, Quantity, Price, Event incrementors, and
Merchandising eVars — the six-slot syntax that trips up nearly everyone reading a raw Adobe hit.
How to use it
- Open the page you’re auditing, open DevTools → Network, and filter for the collection endpoint:
/g/collect(GA4),/b/ss/(Adobe), orfacebook.com/tr(Meta Pixel). - Right-click the request and copy its URL (or, for a GA4 POST, copy the request payload).
- Paste it into the decoder and click Decode — or press Ctrl/Cmd+Enter in the textarea.
- Read the summary line first (right event? right property or report suite?), then scan the table for missing, empty, or unrecognised parameters. Empty values are explicitly marked “(empty)”.
- A collapsible “raw input” section under each result keeps the original string for reference, and Clear resets the page.
Not near a live site? The GA4 sample, Adobe sample, and Meta sample buttons load
realistic purchase beacons — a GA4 purchase event with ep./epn. parameters, an Adobe hit
with events, a two-product products string, props and eVars, and a Meta Purchase with
cd[value] and a hashed ud[em] — so you can explore the output format immediately.
Limitations
- Curated, not exhaustive. The dictionaries cover the most common real-world parameters per vendor. Rare, new, or vendor-internal keys show up as “unrecognised” — decoded, but unnamed.
- Key/value payloads only. The parser handles URLs, query strings, and form-encoded bodies. A JSON payload (for example, a server-side Measurement Protocol request body) won’t split into pairs and won’t decode.
- Heuristic detection. Vendor identification is rule-based, so a stripped-down or proxied beacon (say, a first-party endpoint with renamed paths) can land in the generic bucket even when it originated from one of the four supported vendors.
- Decoding, not validation. The tool explains what was sent; it doesn’t check values against your tracking plan, verify the hit was accepted, or capture beacons from a live page — you bring the request, it brings the translation.
FAQ
Is anything I paste uploaded? No. The decoder is a single static page with no network calls; the parsing and dictionaries all run in your browser, and the page works offline. Beacons can contain identifiers like client IDs and hashed emails, so client-side-only handling is the point.
Which formats can I paste?
A full request URL, a query string (with or without ?), a bare key=value&key=value fragment,
or a GA4 POST body with one event per line. Separate multiple beacons with a blank line to decode
them all in one pass.
What does “unrecognised” mean next to a parameter? The key isn’t in the curated dictionary for the detected vendor. Its value is still URL-decoded and displayed — it just doesn’t get a plain-English name.
Can it read Adobe props, eVars, and the products string?
Yes. cN/vN keys are labeled as the matching prop/eVar, and the events and products values
are expanded into their own decoded sections, including per-product quantity, price, and event
incrementors.
Does it decode Universal Analytics hits, given UA is sunset? Yes — UA’s Measurement Protocol v1 dictionary is included because legacy hits still show up in old implementations, historical HAR files, and measurement-protocol integrations you’re migrating.
Related
- Analytics Beacon Decoder — the tool itself, and the full tools index.
- Standards the decoder references: the dataLayer Event Spec, the Campaign URL Standard, and Channel Classification.
- Background reading: how web tracking works, plus the platform guides for GA4 and Adobe Analytics, and server-side tracking for where beacons go when they leave the browser.
- Adjacent tools: validate the upstream data with the dataLayer Validator, build clean campaign URLs with the UTM Builder, and inventory a page’s tags with the Pixel Scanner.
- BeaconForge is pre-launch: it automates exactly this kind of beacon QA, and subscribers at /#subscribe get first access.