URL query parser

Paste a URL and see its structure and every parameter decoded at once — duplicates included, no button, nothing uploaded.

How to use it

  1. Paste a URL, a bare query string (`?a=1` or `a=1&b=2`) or a hash-route link (`#?a=1`). The result appears as you type — there is no button.
  2. The left panel shows the pieces: input type, scheme, user info, host, port, path and fragment, plus each path segment decoded on its own.
  3. The right panel lists every query parameter in its original order. Repeated keys are marked, never removed or sorted; each row has its own copy button.
  4. Copy the parameters or the JSON, or download the JSON. Failed decodes keep the original text and are labelled “not decoded” — the notice points at the exact parameter and character.

Example

Input

https://user:pass@example.com:8443/shop/search?q=hello+world&tag=news&tag=tech&empty=#results

Result

Type: Absolute URL
User info: user:pass
Host: example.com · Port: 8443
Path: /shop/search → shop · search
Parameters: q = hello world · tag = news · tag = tech (duplicate) · empty = (empty)
Fragment: results

“+” becomes a space because query strings read it that way; turn the option off to keep a literal plus. Both “tag” rows stay: a repeated key is valid and often means a multi-value parameter. “empty=” is kept as an empty value, not dropped.

Rules, limits and known issues

  • This is a viewer, not a validator: a domain without a scheme is parsed as a relative path and flagged, not silently fixed.
  • Nothing is normalised — case, default ports, IDN, “..” and parameter order stay exactly as written. Hosts are shown as typed, with no domain / suffix breakdown.
  • Decoding is single-pass and UTF-8 only: “%2520” stays “%20”, and a value encoded with GBK or another charset fails instead of being guessed.
  • A bad “%” escape or invalid UTF-8 is reported with the parameter, field and character position; the original text is kept and marked “not decoded” — never replaced with “�”.
  • Repeated keys are kept in order and marked; nested keys such as “a[b]=c” stay flat; parameters are never sorted.
  • Up to 50,000 characters; 300 parameters are rendered (copy and JSON include all). Above 10,000 characters the result waits about 0.6 s after you stop typing.
  • No upload, no history and no share link carrying your input: everything runs in your browser and the URL never leaves the page.

What people usually need next, once the URL is understood.