URL Parser
Break a URL down into its scheme, host, path, query parameters, and fragment — entirely in your browser.
Related tools
About this tool
A URL looks like a single string, but it's actually a small, strictly structured document made of several distinct parts: a scheme (`https:`), optional userinfo (`user:pass@`), a host and optional port (`example.com:8443`), a path (`/a/b`), a query string (`?key=value`), and a fragment (`#section`). Each piece has its own rules and its own meaning — the query string is what a server reads to decide what to return, the fragment never even reaches the server at all, and the host and port together determine exactly where the request is routed. When a URL is long, deeply nested, or full of encoded characters, picking out any one of those pieces by eye gets error-prone fast.
This tool runs the URL you paste through your browser's own native `URL` and `URLSearchParams` classes — the same parser your browser uses internally to navigate — and lays out every component as a labeled row: protocol, username and password if present, hostname, port, origin, path, raw query string, and fragment. Because it relies on the browser's built-in URL spec implementation rather than a hand-rolled regex, it correctly handles edge cases that trip up naive parsers, like userinfo credentials, IPv6 host literals, or a query string with unusual encoding.
Query parameters get their own dedicated section, broken out as individual key-value rows rather than a single opaque string. Repeated keys (`?tag=a&tag=b`) are kept as separate rows instead of being silently collapsed into one, which matters whenever a URL encodes a list or an array using the same parameter name more than once — collapsing them would quietly lose data.
This comes up constantly in real developer and sysadmin work: figuring out exactly where a redirect chain is sending a user, reading the UTM or tracking parameters attached to a marketing link, inspecting the `redirect_uri` and `state` values inside an OAuth callback URL, or double-checking which port an internal service URL is actually pointing at before you go looking for a connectivity problem somewhere else.
Everything happens locally — the URL you paste, including any embedded credentials or tokens, never leaves your browser, and the tool keeps working with no internet connection once the page has loaded. Once you have a result, use the “Send to” button to pass the full URL, the bare host, or a query value straight into another tool in this toolbox — for example, sending the host to a DNS lookup, or a query value into the URL encoder/decoder to see it un-escaped.
Frequently asked questions
Why does the tool say my URL is invalid when it looks fine? expand_more
The most common cause is a missing scheme — a URL needs to start with something like `https://` or `ftp://`. `example.com/path` on its own isn't a complete URL; `https://example.com/path` is.
Why are some query parameters shown more than once? expand_more
If the URL repeats the same parameter name (like `?tag=a&tag=b`), each occurrence is a separate value, not a duplicate to be merged — servers and frameworks commonly use this to represent a list, so the tool keeps every occurrence visible.
Does this decode percent-encoded characters in the query string? expand_more
Query parameter values are decoded automatically by the browser's `URLSearchParams`. The raw query string row is shown as-is (still percent-encoded); use the URL Encoder / Decoder tool if you need to decode a specific encoded value on its own.
Is it safe to paste a URL that contains a password or an API token? expand_more
Yes. Parsing happens entirely in your browser using native URL APIs — nothing is sent to a server, and the tool keeps working offline once the page has loaded.
What's the difference between the origin and the full URL? expand_more
The origin is just the protocol, host, and port (e.g. `https://example.com:8443`) — it's what determines same-origin security policy in a browser. The full URL additionally includes the path, query string, and fragment.