About this tool
Break a URL into its protocol, host, path, query and hash parts.
URL Parser splits any URL into its component parts using the browser's built-in WHATWG URL constructor — the same parser the address bar uses — and prints protocol, host, hostname, port, path and hash on separate lines, followed by every query parameter as a decoded key = value pair. Because it uses the real parser rather than a regular expression, it applies the same normalisation and percent-decoding a browser would. Anything the constructor rejects comes back as 'Invalid URL', which is itself a useful answer.
Open URL Parser on AltFTool — it loads instantly in your browser.
Paste a URL into the Input box, or press Load sample to load https://user:pw@example.com:8080/path/page?x=1&y=2#top.
The Result pane updates as you type, printing Protocol, Host, Hostname, Port, Path and Hash — with (default) for an omitted port and (none) for a missing hash.
Read the Query block, where each parameter is indented as key = value already percent-decoded, then press Copy; a string the parser refuses returns Invalid URL.
It runs the WHATWG URL constructor, so the split matches what a browser would do — including normalisation, default-port handling and percent-decoding of query values.
Every parameter is listed on its own indented line as key = value with the value already decoded, so %20 and %3A do not have to be read by eye.
A string the constructor refuses returns 'Invalid URL' rather than a partial guess, which cleanly identifies a missing scheme or a malformed host.
Scheme, host, port, path, query and fragment. In https://example.com:8080/path/page?x=1#top the protocol is https:, the hostname example.com, the port 8080, the path /path/page, the query x=1 and the hash #top — the six fields this tool prints, plus host, which is hostname and port combined.
Hostname is the domain alone; host is the domain plus the port when one is present. For https://example.com:8080/ the host is example.com:8080 and the hostname is example.com.
Because the URL did not state one. For schemes with a defined default (443 for https, 80 for http, and similar for ftp/ws/wss/file) the scheme's default applies; for schemes without a host/port concept (like mailto: or data:) or custom schemes with no defined default, the tool still shows (default) to mean 'no port was present in the URL.'
Yes. Query parameters are read through searchParams, which decodes percent-escapes and converts + to a space, so a value stored as hello%20world is displayed as hello world.