Query String Parser

Parse a URL or query string into a readable table of decoded parameters and clean JSON.

Paste a URL above — the parameters are decoded as you type, right here in your browser.

No uploads. Your files stay on your device.

Free forever, no sign-up, no cookies. Buy me a coffee

How it works

A query string is everything after the ? in a URL: pairs of key=value joined by &. Paste a full URL or just the query string and this parser strips the path and the #fragment, splits the pairs, percent-decodes every key and value (optionally turning + back into a space, the way HTML forms encode them) and shows the result in a table next to the raw encoded text — which makes double-encoding bugs like %2520 obvious at a glance.

Repeated keys such as tag=a&tag=b and bracket keys such as size[]=42 or user[name]=ada are folded into arrays and nested objects in the JSON output, so you can paste it straight into a test or a bug report. Malformed escapes (a stray %) do not break the page: those values are shown raw with a warning. Everything runs locally in your browser with JavaScript — the URLs you paste, which often carry session tokens, tracking IDs and customer data, are never uploaded.

Frequently asked questions

What is a query string?

A query string is the part of a URL after the ? — a list of key=value pairs joined by &, like ?q=blue+shoes&page=2. It carries data to the page or API: search terms, filters, pagination and tracking parameters such as utm_source. Anything after a # is the fragment, not part of the query string, and this parser ignores it.

How do I parse a query string online?

Paste a full URL or just the query string into the box above. The parser strips the path and the #fragment, splits the pairs on &, percent-decodes every key and value (turning + back into a space, the way HTML forms encode them) and shows the result instantly in a table with the raw encoded value beside it — so double-encoding mistakes like %2520 are easy to spot.

How are repeated parameters like tag=a&tag=b handled?

Repeated keys are collected into a JSON array, so tag=a&tag=b becomes "tag": ["a", "b"]. Bracket keys work too: size[]=42&size[]=43 becomes an array and user[name]=ada becomes a nested object. Turn off the grouping checkbox if you would rather keep the keys exactly as written. Every row is still listed separately in the table.

Report a bug