Query String Parser

Paste a URL or the part after the question mark. The parser decodes values, turns + into a space, and preserves empty or repeated keys.

How to parse a query string

  1. 1

    Paste the URL

    Either the whole URL or just the portion after ?. Fragments (#...) are ignored automatically.

  2. 2

    Read the pairs

    Each parameter becomes a row with its decoded key and value.

  3. 3

    Check for duplicates

    Repeated keys appear as separate rows in the same order as the URL.

Typical tracking URL, decoded

A URL like https://shop.example/checkout?product=hat&utm_source=newsletter&utm_medium=email%20weekly&ref= parses as:

Key Value
product hat
utm_source newsletter
utm_medium email weekly
ref (empty)

Edge cases the parser handles

  • Empty values (?ref=) are kept, some backends care about the difference between missing and empty.
  • Keys with no = sign (?debug) are parsed with an empty value.
  • Duplicate keys (?id=1&id=2) are preserved in order; no merge is performed because framework conventions differ.
  • + decoding: in the query portion + becomes a space to stay compatible with application/x-www-form-urlencoded consumers.
  • Invalid percent-escapes (like a stray %ZZ) are left in the output so you can see the bug instead of silently losing data.

Frequently Asked Questions

No. Everything after the fragment marker (#) belongs to the URL fragment, not the query string, so it is stripped before parsing. Paste just the fragment separately if you need to inspect it.

Each occurrence appears in its own row and in the original order. Servers handle repeated keys differently, so check your framework.

Yes. The parser accepts inputs like ?a=1&b=2, a=1&b=2, or a full URL and figures out which part to inspect.

No. This is a server-backed tool, so the text is sent to our server when you choose Parse. Remove passwords, access tokens and other secrets before using it.

Related Tools

Tool available in other languages