OpenReplay Logo
12k

URL parser

Break any URL into protocol, host, port, path, query parameters and fragment — parsed live and locally, nothing leaves your browser.

Processed locally
Breakdown
Enter a URL above to see its components.

About this tool

A URL parser decomposes a URL string into its standard components — scheme, userinfo, host, port, path, query and fragment — following the WHATWG URL specification that browsers themselves implement. This tool runs that same parsing engine on your input as you type, percent-decoding each part, splitting the path into segments, and pulling apart the query string into individual name/value pairs (with duplicate keys preserved rather than silently dropped).

Use it to debug a redirect URL that isn't routing correctly, inspect the exact query parameters an analytics or OAuth callback is sending, confirm which port and origin a request will actually hit, or decode a path that's buried under percent-encoding. Paste a protocol-less host like example.com/path and it assumes https://; flip the "+ as space" toggle when you're reading form-encoded query values, and copy the parsed parameters straight out as JSON.

Parsing follows the WHATWG URL standard, so international domains are shown in their Punycode (xn--) form and default ports like 443 are implied rather than printed in the address.

Frequently asked questions

Why does my parsed URL show no port number?

When a URL omits the port, the scheme's default is implied — 443 for https, 80 for http — and the browser leaves the port field empty. The tool notes the implied default (e.g. "default 443") rather than inventing a value.

How are duplicate query parameters handled?

Repeated keys like ?x=1&x=3 are kept as separate rows in the name/value table, preserving their order. In the JSON output the duplicate key collapses to an array, so x becomes ["1", "3"].

What does the "+ as space" toggle do?

In form-encoded query strings a plus sign represents a space, but in other contexts it can be a literal +. The toggle lets you choose whether + is decoded to a space, so you can read either form-encoded or literal values correctly.