Skip to content

URL parser

Break a URL into its components, inspect repeated query parameters, and resolve relative paths.

https://example.com/products/coffee?size=large&tag=fresh&tag=local#reviews
Inside the address
protocol
https:
username
—
password
—
hostname
example.com
port
—
origin
https://example.com
pathname
/products/coffee
search
?size=large&tag=fresh&tag=local
hash
#reviews
3Query parameters
74Normalized length
Required for relative paths, for example ../coffee.

The normalized URL stays encoded. Query values always use URLSearchParams decoding, including + as a space. No URL is visited.

Decoded query parameters in original order
NameValue
sizelarge
tagfresh
taglocal
JSON breakdown568 characters
{
  "normalized": "https://example.com/products/coffee?size=large&tag=fresh&tag=local#reviews",
  "components": {
    "protocol": "https:",
    "username": "",
    "password": "",
    "hostname": "example.com",
    "port": "",
    "origin": "https://example.com",
    "pathname": "/products/coffee",
    "search": "?size=large&tag=fresh&tag=local",
    "hash": "#reviews"
  },
  "parameters": [
    {
      "key": "size",
      "value": "large"
    },
    {
      "key": "tag",
      "value": "fresh"
    },
    {
      "key": "tag",
      "value": "local"
    }
  ]
}
Processed on your device

How it works & useful details

How this tool works

WHATWG URL parsing accepts absolute schemes and resolves relative paths only with an explicit base. Host casing, default ports and path segments may normalize. Parsing does not verify a destination. Query values use forgiving URLSearchParams decoding; decoded components keep malformed percent escapes unchanged. Limit: 8,192 characters per URL.

WHATWG URL Standard

About this tool

URL parser breaks a URL into its scheme, host, port, path, query, and fragment, showing repeated query parameters as separate rows. It is the reference view for understanding a complex link.

Relative paths can be resolved against a base URL, which is useful when debugging redirects and asset links. Parsing is local and the URL is never requested.

How to use it

  1. Paste the URL you want to inspect.
  2. Review each component and the decoded query values.
  3. Optionally enter a base URL to resolve a relative path.
  4. Copy the component you need.

Worked example

https://example.com/products/coffee?size=large&tag=fresh&tag=local#reviews breaks down as:

protocol  https:
hostname  example.com
origin    https://example.com
pathname  /products/coffee
search    ?size=large&tag=fresh&tag=local
hash      #reviews

parameters: size=large, tag=fresh, tag=local

The repeated tag parameter is listed twice instead of being collapsed. Code that reads only the first value would miss "local".

Normalization and relative URLs

Parsing follows the WHATWG URL Standard, the same algorithm browsers use. Hostnames are lowercased, default ports such as :443 for HTTPS are dropped, and path segments like /a/../b are resolved to /b. Comparing normalized URLs avoids false mismatches between addresses that point to the same place.

Relative references like ../images/logo.png only have meaning against a base URL. Enter a base to resolve them exactly as a browser would, which is handy when checking links in HTML or CSS. The parser never contacts the URL, so parsing successfully says nothing about whether it exists or is safe.

Frequently asked questions

Are query values shown decoded?

Both the raw and decoded forms are available so you can see what the server receives and what the value means.

Does it follow or fetch the URL?

No. The URL is parsed as text and no request is made.

What is the limit?

Up to 20,000 characters of URL text.

Why is a username or password shown?

URLs can embed credentials as user:pass@host. They are rare, and a security risk in shared links, so the parser shows them as separate components to make them visible.