Query String Parser

Extracts and decodes URL parameters — paste the whole URL or just the query string.

What a query string is

It's the part of a URL after the "?", used to send parameters along with the address — each "key=value" pair separated by "&". Shows up in a form submission (GET method), a campaign tracking link (utm_source, utm_campaign...), a pagination/filter parameter on a listing, or a REST API call. This tool extracts and decodes those pairs automatically, whether from a full URL or an already-isolated query string.

Limitations

Repeated keys (e.g., "tag=js&tag=css") show up as independent rows, never grouped into an array — there's no single universal array convention in query strings, grouping would mean guessing which one applies. The "#fragment" at the end of a URL (used for in-page navigation, never sent to the server) is not interpreted, only the part between "?" and "#". ";" separators (an old, now-obsolete convention) aren't recognized — only "&".

Frequently asked questions

It's the encoding convention used by HTML forms (application/x-www-form-urlencoded) — "+" represents a space, alongside the already-familiar "%20". The tool decodes both the same way, following the same convention the browser uses when submitting a form.

There's no single convention for representing an array in a query string — different frameworks use different forms ("tag=js&tag=css", "tag[]=js&tag[]=css", "tag[0]=js&tag[1]=css"...). Grouping would mean picking one of those conventions and guessing whether it's the one your URL uses — the tool instead shows exactly what came in, in the original order, without interpreting it.

Yes — "UTM_Source" and "utm_source" are treated as two different keys, never merged. That's standard query string behavior (and what the server itself receives), not a limitation of this tool.

Both are indications generated by the interface itself, never text coming from the original query string. The dash shows up in place of the value when a key exists but has no associated value (e.g., "?debug" or "?ref="). "empty key", in italics, shows up in place of the label for the opposite case — a value exists, but there's no key before the "=" (e.g., "?=1"). The italics and muted color are deliberate, so this text never looks like it's part of the real data.

No — the "#fragment" (used for anchors/in-page navigation) is never sent to the server and isn't part of the query string. The tool only considers the part between "?" and the end of the URL (or up to a "#", if present).

No — ";" as a parameter separator is an old convention, now obsolete under the current URL specification, though some legacy systems still use it. The tool follows the current standard ("&" only) and doesn't recognize ";" as a separator in this version.