URL parser
Break a URL into its scheme, host, port, path, query parameters and fragment.
A clear answer. Here’s how.
Parses the address with the WHATWG URL Standard, the algorithm browsers use, and lists each part. The host is lower-cased, dot segments such as /./ and /../ are resolved, and the default port of the scheme is shown when none is written. The path is split into decoded segments, and the query string into its parameters with percent-decoding and “+” read as a space; repeated names are kept in order. A password in the address is never displayed. The normalised URL is how a browser would write it back.
How this is checked
3 reference checks passed These 3 cases were run when this page was built, on 20 October 2026, and all reproduce within the stated tolerance. The same cases are part of the automated tests that run on every change to Toolmoz. Engine version 1.
See the checks and where each expected answer comes from
Case 1
- Inputs
- URL https://user@example.com:8443/a/b%20c?x=1&y=two#frag
- Expected, and what Toolmoz gave
- Scheme expected https, Toolmoz httpsHostname expected example.com, Toolmoz example.comPort expected 8443, Toolmoz 8443Path expected /a/b%20c, Toolmoz /a/b%20cFragment expected frag, Toolmoz fragQuery parameters expected 2, Toolmoz 2Path segments expected 2, Toolmoz 2
- Where the expected answer comes from
- RFC 3986 section 3: scheme https, authority user@example.com:8443, path /a/b%20c, query x=1&y=two, fragment frag (hand parse)
- Allowed difference
- exact
Case 2
- Inputs
- URL HTTP://Example.COM/a/./b/../c
- Expected, and what Toolmoz gave
- Scheme expected http, Toolmoz httpHostname expected example.com, Toolmoz example.comPort expected 80, Toolmoz 80Path expected /a/c, Toolmoz /a/cQuery parameters expected 0, Toolmoz 0Fragment expected (none), Toolmoz (none)
- Where the expected answer comes from
- RFC 3986 sections 6.2.2.1 and 5.2.4: scheme and host are lower-cased, /./ is dropped and /b/../ collapses, giving /a/c; http defaults to port 80
- Allowed difference
- exact
Case 3
- Inputs
- URL https://example.com/?q=a+b%26c&q=2
- Expected, and what Toolmoz gave
- Path expected /, Toolmoz /Query parameters expected 2, Toolmoz 2Path segments expected 0, Toolmoz 0Port expected 443, Toolmoz 443
- Where the expected answer comes from
- The query holds two parameters named q (a b&c and 2); https defaults to port 443 and the path / has no segments
- Allowed difference
- exact
What this shows: the engine reproduces independently worked values for these cases. It does not prove every possible input is right. To test an answer you were given, see how to check a number; to see what is and is not checked across Toolmoz, see the accuracy ledger.