Query String Decoder

Encoders & Decoders

How to use the Query String Decoder

Decode a query string in two steps:

1

Paste the query string

Paste any query string with or without the leading ? character into the input field. The parsed results appear instantly.

2

Choose output mode

Select Table (numbered key/value rows with copy buttons), JSON (properly grouped with arrays for duplicate keys), or key=value lines. Copy all results or download them.


When to use this tool

Use to inspect, debug, and extract values from URL query strings:

  • Inspecting the query parameters of a URL from a browser address bar or server log to understand what values are being passed
  • Extracting individual parameter values from a complex query string copied from an API response or documentation
  • Converting a query string from a GET request into a JSON object for easier reading in a debugging session
  • Parsing the parameters of a redirect URL, OAuth callback, or deep link to verify the state and token values
  • Checking which parameters are present and what their decoded values are in a form submission query string
  • Breaking apart a query string from a third-party integration URL to understand the data being exchanged

Frequently asked questions

Q:Does it handle percent-encoded values automatically?
Yes — all percent-encoded sequences are automatically decoded in the output. %20 becomes a space, %C3%A9 becomes é, %F0%9F%8E%89 becomes 🎉, and all other percent-encoded characters are decoded using the URLSearchParams API which applies UTF-8 decoding internally. The decoded values are shown in the table and JSON output. The raw encoded query string is your input; the decoded values are the output.
Q:Are + signs decoded as spaces?
Yes — the tool uses the URLSearchParams API which correctly interprets + signs as spaces in query strings, following the application/x-www-form-urlencoded specification. A query string like 'q=hello+world' is decoded as the value 'hello world'. This is the correct behaviour for query strings produced by HTML form submissions, where + is used as a space encoding instead of %20.
Q:How are duplicate keys handled in JSON mode?
When the same key appears multiple times in a query string (e.g. ?tag=javascript&tag=react&tag=node), the JSON output mode groups all values for that key into a JSON array: {"tag": ["javascript", "react", "node"]}. Keys that appear only once remain as a plain string value. The table mode shows each occurrence as a separate row with the same key, reflecting the actual structure of the query string.
Q:Can I paste the full URL or just the query string?
The tool is optimised for the query string portion — ideally paste everything from ? onwards (e.g. ?q=hello&lang=en). However, if you paste a full URL, the tool strips the protocol, hostname, and path, taking only the query string part for parsing. Fragment identifiers (#...) are also stripped. The leading ? is optional — the tool accepts both '?key=value' and 'key=value'.
Q:What is the key=value lines output mode useful for?
The 'key = value' lines output produces a simple, human-readable text format with one parameter per line — for example: 'q = hello world'. This is useful for pasting into documentation, tickets, or notes where a table or JSON object would be too complex. It is also a convenient format for comparing two sets of query parameters side by side, or for input into scripts that process key=value text.
Q:What does 'unique keys' count mean?
The unique keys count shows how many distinct parameter names appear in the query string, while the values count shows the total number of key-value pairs. For example, ?tag=a&tag=b&lang=en has 3 values but only 2 unique keys (tag and lang). A difference between the two counts means one or more keys are repeated — which is important to know when deciding how to process the parameters in your application.