URL Parser
Break any URL into its components — protocol, host, port, path, query parameters, and fragment — with each query parameter shown URL-decoded in a table. Runs in your browser.
Components
- Protocol
- https:
- Username
- user
- Password
- ••••
- Hostname
- www.example.com
- Port
- 8080
- Origin
- https://www.example.com:8080
- Pathname
- /path/to/page
- Query string
- ?q=scout+tools&page=2&q=more
- Fragment
- #section-3
Query parameters (3)
| Key | Value (URL-decoded) |
|---|---|
| q | scout tools |
| page | 2 |
| q | more |
Repeated keys are listed separately, matching how URLSearchParams reads them. Values are shown URL-decoded.
About this tool
A URL packs a surprising amount of structure into one line: a scheme, optional credentials, a host and port, a path, a query string, and a fragment. This parser uses the browser's native, standards-compliant URL and URLSearchParams APIs to split any absolute URL into those parts and lay them out clearly, including a table of every query parameter with its value already URL-decoded so you can read percent-encoded and plus-encoded values at a glance. Repeated query keys are preserved as separate rows, which matters because frameworks differ in how they collapse them. Because it relies on the same parser the browser uses for real navigation, the breakdown matches exactly how a browser, fetch(), or server would interpret the URL — no guessing or hand-rolled regex. Everything runs locally; the URL you paste is never sent anywhere, so it is safe to inspect links containing tokens or credentials.
How to use it
- Paste an absolute URL including its scheme (https://, etc.).
- Read the component breakdown — protocol, host, port, path, query, fragment.
- Scan the query-parameter table for decoded keys and values.
- Copy the full breakdown with the copy button.
Frequently asked questions
- Why do I need to include https:// or another scheme?
- The URL standard requires an absolute URL to have a scheme; "example.com/path" alone is ambiguous (is "example.com" a host or a path?). Add https:// (or the relevant scheme) and the parser can resolve every component unambiguously.
- What is the difference between hostname, host, and origin?
- Hostname is just the domain (www.example.com). Host adds the port if one is present (www.example.com:8080). Origin is the scheme plus host (https://www.example.com:8080) and is what browsers use for same-origin security decisions.
- Why are some query values different from what I typed?
- The table shows values URL-decoded: %20 and + become spaces, %2F becomes a slash, and so on. That is the actual value an application receives. The raw query string (still encoded) is shown in the components list as the "Query string".
- How are repeated query keys handled?
- Each occurrence is listed as its own row, in order, matching URLSearchParams. So ?q=a&q=b shows two rows. Note that some server frameworks keep only the first or last value, so behavior can vary downstream.
- Are credentials in the URL shown?
- The username is shown if present; the password is masked. Embedding credentials in a URL (user:pass@host) is deprecated and unsafe, but the parser still recognizes the fields so you can spot them.
- Is the URL sent to a server?
- No. Parsing uses the in-browser URL API with no network request, so URLs containing access tokens, session IDs, or other secrets stay on your device.