Skip to content
My Tiny Utils

Search tools

Type to find a tool, then press Enter to open it.

Query String Parser

Parse URL query strings into readable key-value pairs. Handles URL decoding, repeated keys, arrays, and malformed input.

Processed locally in your browser — nothing is uploaded.

Query String Parser

0 characters

As JSON

Output appears here…

About Query String Parser

Paste a query string (or a full URL) and see every parameter decoded into a readable table, plus JSON output you can copy into code. Repeated keys are collected into arrays, and percent-encoding is decoded safely.

Common uses

  • Debug long OAuth redirect or analytics URLs
  • Understand what a tracking link actually sends
  • Convert query parameters into a JSON object for tests

Example

Input

?q=hello%20world&tag=a&tag=b&page=2

Output

{
  "q": "hello world",
  "tag": ["a", "b"],
  "page": "2"
}

Frequently asked questions

Are the URLs I paste into the parser logged or stored?

No. Parsing happens in your browser and the URL never leaves your device — important when you're debugging OAuth redirects or magic links that contain live tokens and codes.

How does the parser handle a parameter that appears more than once?

Every occurrence is shown as its own row in the table, and in the JSON output repeated keys are collected into an array (for example tag=a&tag=b becomes "tag": ["a", "b"]) while single keys stay plain strings.

Can I paste a whole URL instead of just the part after the question mark?

Yes. Everything before the first ? is ignored and any #fragment at the end is stripped, so you can paste a full address straight from the browser bar or a log line.

Why is + decoded as a space in my parameter values?

In query strings, + is the traditional encoding for a space from the application/x-www-form-urlencoded format used by HTML forms, so the parser converts + to a space before percent-decoding.

What happens if a value has broken percent-encoding?

The parser doesn't fail — the value is shown raw with an invalid-percent-encoding warning next to it, so a stray % or an incomplete sequence like %2 won't hide the rest of the parameters.