URL Parser and Query String Decoder

Paste a URL to split it into scheme, host, port, path, query and fragment. Every query parameter is decoded into a table, and common encoding problems are flagged. Everything runs in your browser.

Parsed in your browser

How to use the URL parser

  1. Paste a full URL into the box. If you paste a bare address such as example.com/page, the tool adds https:// for you (you can turn this off).
  2. Read the components table. RFC 3986 splits a URL into scheme, authority (user info, host, port), path, query and fragment. Each one appears on its own row, both as written and decoded.
  3. Check the parameters table. Each key=value pair from the query string is listed in order, decoded, with duplicates kept. Rows that start with utm_ are highlighted.
  4. Read the warnings. The tool flags double encoding, & copied from HTML, malformed percent signs, invalid UTF-8 and duplicate keys.
  5. Copy what you need, either the normalized URL or the parameters as JSON.

What the parser shows for a typical URL

Part Example value Notes
Scheme https: Includes the colon, as the URL API returns it
User info user / pass Rare in web links; passwords are masked
Host www.example.com Lowercased; IDNs shown as xn-- plus Unicode
Port 8080 Empty when it is the default for the scheme
Path /path/to/page.php Shown encoded and decoded
Query ?q=hello+world&lang=en Split into the parameters table
Fragment #section-2 Never sent to the server

Examples

Input What you will see
?q=hello+world q = hello world (form decoding turns + into a space)
?q=a%2Bb q = a+b (%2B is a literal plus)
?q=a%2520b q = a%20b plus a double-encoding warning
?a=1&b=2 A parameter named amp;b plus an HTML-entity warning
?x=%zz&y=100% Values kept as typed, with malformed-percent warnings
https://münchen.de/straße Host xn--mnchen-3ya.de, path /stra%C3%9Fe

Why decoded values can differ between tools

Two decoding rules exist. Form decoding, used by URLSearchParams, PHP's $_GET and HTML forms, turns + into a space. Plain percent-decoding, used by decodeURIComponent, leaves + alone. The checkbox above switches between them so you can see what each side of your system will receive. The guide to %20 vs + in URLs explains the history.

Typical uses

  • Campaign links. Check that utm_source, utm_medium and utm_campaign arrive with the values you expect. Google Analytics 4 treats parameter values as case-sensitive, so Google and google become two sources. See UTM parameter encoding mistakes.
  • Redirect and callback URLs. OAuth and tracking links often carry a whole URL inside one parameter. The parser decodes it so you can read it, and a second paste parses the inner URL.
  • Crawl and log clean-up. Spot URLs that were encoded twice or that carry HTML entities before they spread into sitemaps.

Privacy

Parsing uses the URL engine built into your browser. Nothing you paste is sent to our server. For converting single strings rather than whole URLs, use the URL encode and decode operations in the universal encoder decoder.

Frequently asked questions

Why is + shown as a space in parameter values?

Query strings are normally read as application/x-www-form-urlencoded, where + means a space. That is how URLSearchParams, PHP and most frameworks read them. Turn off 'Treat + as space' to see plain percent-decoding instead.

Why does the hostname start with xn--?

Internationalized domain names are converted to their ASCII (Punycode) form when a URL is parsed. The tool shows both the ASCII hostname and the Unicode form; use the Punycode converter for more detail.

Does the parser change my URL?

It shows the URL as a browser would normalize it: lowercase host, default port removed, dot segments such as /a/../ resolved and unsafe characters percent-encoded. The original input stays in the box.

Sources