How to use the URL parser
- Paste a full URL into the URL box. If you leave out the scheme,
https://is added and a note says so. - Read the Components table: protocol, origin, user name, password (masked), host name, port, path, decoded path, path segments, query string, fragment and the normalised URL.
- If the URL has a query, a second table lists every Key and Value, decoded. Repeated keys appear once per value.
- Watch for warnings: a password inside the URL, or a punycode (
xn--) host name.
What it does and when to use it
Long URLs from analytics links, OAuth redirects or API docs are hard to read by eye. This parser answers the practical questions quickly: which host and port will the request hit, what is the exact path, and what does each parameter decode to? Use it when a redirect goes to the wrong place, when a tracking link has too many parameters, or when you need the origin for a CORS allow-list.
To change values and rebuild the query, use the Query String Builder. To encode a single value safely, use the URL Encoder / Decoder.
How it works
The text goes to your browser’s built-in URL class, which follows the WHATWG URL Standard, the same rules browsers use for links and fetch. That standard lower-cases the scheme and host, removes a default port and resolves . and .. path segments. Query pairs come from URLSearchParams. Path segments and the user name are percent-decoded for display; the original encoded values are shown too.
Worked examples
Normalisation. Input HTTPS://Example.COM:443/a/../b/./c?q=caf%C3%A9+au+lait:
Host name | example.com
Port | default (443)
Path | /b/c
Normalised URL | https://example.com/b/c?q=caf%C3%A9+au+lait
q | café au lait
The .. removed a, the default port disappeared, and the query value decodes to “café au lait”.
An API URL. https://api.example.com:8443/v2/users/42?fields=name,email&sort=-created#top gives the origin https://api.example.com:8443, the segments v2 › users › 42, two parameters and the fragment #top. The fragment is never sent to the server.
A missing scheme. localhost:3000/health is read as host and port, so https:// is assumed: Host name | localhost, Port | 3000, with a note that the scheme was added. Type http://localhost:3000/health if the server uses plain HTTP.
Limits and tips
- The password is masked in both the Password row and the Normalised URL row, but it is still in the URL you pasted. Do not paste real credentials.
- It does not check that the domain exists, follow redirects or test that the server answers.
- WHATWG parsing is more forgiving than RFC 3986. A URL this tool accepts may still be rejected by a strict server-side parser.
- For IP-address hosts, the IP Info tool explains the address range.
Frequently asked questions
Why is a + in the query shown as a space?
Why does my port show as "default (443)"?
What is the difference between host name and origin?
Does it check that the site exists?
How do we know nothing is uploaded? Test it yourself on the privacy proof page.