URL & Query String Parser
Split a URL into scheme, user, host, port, path segments, decoded query parameters and fragment (WHATWG parser); relative URLs and bare query strings too.
Every part of the URL, the normalised form and what changed, path segments decoded, each parameter decoded beside its raw form with repeats grouped as JSON, the default port, and the origin.
Example: HTTPS://User:pw@Example.COM:443/a/../b/c%20d?x=1&y=two+words&x=3#frag → https, host example.com, port 443 (default), path /b/c d, x = [1, 3], y = "two words", fragment frag.
The browser's own parser,
shown part by part.
Which parser is used, how the query is decoded, and what normalisation changes.
Parsing
The URL is handed to the WHATWG URL Standard parser that the browser itself uses for every link (new URL()), so the parts you see are the parts a browser would see: scheme, user info, host, port, path, query and fragment. A relative input is resolved against the base you give; a bare query string (a=1&b=2) is read on its own; a host without a scheme is tried with https:// and the page says so.
Query strings
Parameters are split on & and =, then decoded as application/x-www-form-urlencoded: + becomes a space and %XX sequences are bytes of UTF-8. Keys are kept in order and duplicates are kept as separate rows, grouped into an array in the JSON copy. The raw value is shown next to the decoded one, since some APIs expect the raw form back.
Normalisation
The href line is the parser's canonical form: host lower-cased and punycoded, a default port (80, 443, 21) dropped, "." and ".." path segments resolved, percent-encoding made consistent. When that differs from what you typed the page lists what changed. Credentials in the user-info part are parsed and displayed masked; nothing is fetched. Nothing leaves the browser; the same four anonymous usage counts as the rest of the site apply.
SOURCES
- WHATWG URL Standard parser as implemented by the browser (new URL()); query decoded as application/x-www-form-urlencoded (+ = space, %XX = UTF-8 byte); default ports 80/443/21
Last reviewed 22 September 2026. How results are checked: How we verify.