OpenReplay Logo
12k
12k

URL parser

Break any URL into protocol, host, port, path, query parameters and fragment, parsed live and locally so 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.