URL query parser
Paste a URL and see its structure and every parameter decoded at once — duplicates included, no button, nothing uploaded.
URL structure
- Input type
- Scheme
- User info
- Host
- Port
- Path
- Query source
- Fragment
Path segments
No path segments.
JSON (stable English keys)
Query parameters
| Key | Value | Copy |
|---|
No query parameters found in this input.
How to use it
- 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.
- The left panel shows the pieces: input type, scheme, user info, host, port, path and fragment, plus each path segment decoded on its own.
- 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.
- 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.
Related tools
What people usually need next, once the URL is understood.