URL Parser & Query String Editor

Break any URL into its parts, decode percent-encoding, see the punycode form of international domains, and edit query parameters to rebuild the URL.

Loading tool…

About the URL Parser

Parsing uses the WHATWG URL Standard implementation built into your browser — the same code that resolves links on web pages — so the results match what new URL() returns in JavaScript and Node.js. That includes normalisation: the scheme and host are lower-cased, default ports such as :443 are dropped, and .. segments are resolved.

Internationalised domain names are converted to punycode (münchen.example becomes xn--mnchen-3ya.example), which is what DNS actually resolves; the Unicode form is shown alongside. Paths and fragments are also shown percent-decoded, so caf%C3%A9 reads as café.

Query parameters are read with URLSearchParams, which follows application/x-www-form-urlencoded rules: + means a space and repeated keys such as tag=a&tag=b are kept as separate rows. When you edit the table, the query string is re-encoded the same way. Relative URLs are resolved against https://example.com so you can still inspect them. Credentials in the userinfo part (user:pass@) are shown separately because browsers strip or warn about them, and they should never appear in shared links.

How to use it

  1. Paste a URL into the input box.
  2. Read the components table; copy any part with its Copy button.
  3. Edit, add or remove query parameters in the table.
  4. Copy the rebuilt URL, or click Use as input to parse it again.

Frequently asked questions

What is the difference between host and hostname?
hostname is just the domain or IP (example.com); host also includes a non-default port (example.com:8080). origin adds the scheme: https://example.com:8080.
Why does + turn into a space in query values?
Form encoding treats + as a space. To send a literal plus sign, encode it as %2B.
Why is my port missing?
The URL API removes default ports (80 for http, 443 for https), because they are implied by the scheme.
How do I get query parameters in JavaScript?
new URL(href).searchParams.get('q') returns the first value; getAll('tag') returns every value for a repeated key.

Related tools