Breaks a URL into its parts and shows how a browser and a server
actually read it. Plenty of URLs point somewhere other than their author expected
without raising a single error. https://example.com@evil.test/
connects to evil.test. This page names those places.
This page makes no network requests.
All parsing happens in your browser; once loaded it works offline.
Nothing you paste — internal addresses, links carrying tokens — is sent anywhere.
The URL you enter is never fetched either.
The parts
part
what you wrote
what gets used
What the server receives
The query string
#
key
value (percent only)
value (form style, + as space)
Things to watch out for
Nothing to flag right now.
Rebuild it
Edit any part and the URL is reassembled, encoding only what has to be encoded.
What this browser does
Self-check
What this page computes for itself
The URL parsing does not use the browser's URL — it is written here.
It follows the WHATWG URL Standard: reading the scheme, parsing the host, resolving
. and .. in the path, and the different percent-encode set each
component uses.
The punycode conversion (xn--) is written here too (RFC 3492), along with
the odd ways of writing an IPv4 address (0x7f.1, 2130706433)
and IPv6 compression.
Anything written from scratch can drift. So every keystroke, the result is compared
against this browser's own URL and the outcome is shown in the
self-check box. If they disagree, the browser is the one to trust.
Here is what is missing. Of the IDNA character mapping (UTS #46), only the common
cases are implemented: fullwidth to ASCII, upper to lower case, the three fullwidth full
stops, and the characters that map to nothing. There is no complete mapping table here.
Anything missed shows up as a ✗ in the self-check.