🔗 Query String Parser
Paste a URL or query string to see its parameters as clean JSON, or switch to build mode to turn JSON into a query string.
4 parameters · repeated keys become arrays
How the query string parser works
In parse mode the tool takes a full URL or a bare query string, keeps only the part after "?" (and drops any "#fragment"), splits it on "&", and decodes each key and value with percent-decoding (and "+" → space). Repeated keys, like tag=a&tag=b, are collected into an array, and the result is shown as formatted JSON. In build mode it does the reverse: a JSON object of key → value (or key → array) is encoded back into a properly percent-encoded query string.
Everything runs locally, so URLs with tokens or personal data stay in your browser. Parsing is lenient. It tolerates a missing "?", a leading "&", and values without an "=". Build mode expects a JSON object; use an array value to repeat a key.
Frequently asked questions
How do I parse a URL query string?
Paste the URL or just the part after "?". The tool splits on "&", decodes each key and value, and shows them as JSON. For example ?q=hello+world&page=2 becomes {"q": "hello world", "page": "2"}.
What happens with repeated parameters?
Keys that appear more than once, like tag=a&tag=b&tag=c, are grouped into an array: {"tag": ["a", "b", "c"]}. That preserves every value rather than keeping only the last.
Does it handle URL-encoded characters?
Yes. Percent-encoded sequences (%20, %C3%A9, etc.) and "+" for spaces are decoded, so "S%C3%A3o+Paulo" reads back as "São Paulo". Build mode re-encodes them correctly.
How do I build a query string from values?
Switch to build mode and enter a JSON object, e.g. {"q":"hello world","page":2}. The tool percent-encodes it into q=hello%20world&page=2. Array values repeat the key.
What happens to a key with no value?
A bare key like ?debug (no "=") is parsed with an empty-string value, giving {"debug": ""}, which preserves the fact that the flag was present. A key with an empty value written explicitly as ?debug= parses the same way.
Does the order of parameters matter?
For most servers, no, ?a=1&b=2 and ?b=2&a=1 carry the same information. The exception is repeated keys, where order can matter to whoever reads the array; this parser preserves the order the values appeared in so tag=a&tag=b becomes ["a","b"], not ["b","a"].
Does it include the URL fragment (#…)?
No, the fragment after # is dropped, because it is not part of the query string and is never sent to the server. So for /page?q=x#section2 the parser reads only q=x and ignores #section2, matching how a browser splits a URL.
Are parsed values always strings?
Yes, a query string carries only text, so parse mode returns every value as a string, which is why page=2 becomes "2" and not the number 2. In build mode you can supply numbers or booleans in the JSON and they are stringified into the query string for you.
Is my URL sent anywhere?
No, parsing and building happen entirely in your browser with the standard encode/decode functions. URLs containing tokens, IDs or personal data never leave your device.