Skip to content
TabBench

Query String Parser

Paste a query string or URL to get every parameter decoded, as a table or JSON. Handles repeated names, a[]=1 and a[b]=1, and flags tracking parameters.

Runs in your browser. Nothing you add is uploaded.

What the Query String Parser does

Query strings are how links and APIs pass small pieces of data, and reading a long one by eye is error-prone: percent-encoded characters, plus signs that may or may not be spaces, repeated names and framework-specific array syntax. Paste a query string or a whole URL and this tool decodes every parameter into a table or JSON, shows exactly how repeats and brackets are interpreted, and points out the tracking parameters that can be removed without changing the page.

How to parse a query string

  1. Paste the query string (with or without the leading ?) or the whole URL.
  2. Choose how it should be read: whether + means a space and whether a[b]=1 and a[]=1 should build nested data.
  3. Switch between the Table, JSON and Code views. JSON shows repeated names as arrays.
  4. If tracking parameters are found, copy the cleaned query string, or replace the input with it.
  5. Use the Code view to read the same parameters in JavaScript, Python, PHP or curl.

The Query String Parser runs entirely in your browser — nothing you enter is uploaded, stored, or logged.

When to use it

Reading an analytics or ad link

UTM tags, fbclid and gclid are easy to spot in the table, and you can see what is left once they are removed.

Checking what an API expects

Turn the query string from API documentation or a network trace into JSON so you can compare it with the structure your code builds.

Decoding form submissions

A GET form produces a query string full of %20 and + escapes. The decoded table shows what the user actually typed.

Good to know

  • Repeated names are legal. How they are combined is up to the server, so check your framework.
  • A parameter with no equals sign (?debug) is valid and is treated as having an empty value.
  • %2B is a literal plus sign; a bare + is usually a space.
  • Very long query strings can be cut off by proxies. Move large data into a POST body.
  • JSON output keeps values as strings, because a query string has no types.

Frequently asked questions

How are repeated parameters handled?

It depends on the server. PHP keeps the last value unless the name ends in [], Express and many Node libraries build an array, and Flask and Go return all values through a separate call. This tool shows them all so you can see what was sent.

Why does my value contain + signs?

In form-encoded query strings + means a space, so this tool decodes it that way by default. In URL paths a plus is a literal plus sign. The toggle switches between the two readings.

Does removing tracking parameters change the page?

Almost never. Parameters like utm_source and fbclid only identify how a visitor arrived. Anything else in the query string is left exactly as it was.

What is the difference between a query string and a fragment?

The query string (after ?) is sent to the server. The fragment (after #) stays in the browser. Only the query string appears in server logs.

What does color[]=red&color[]=blue mean?

It is the PHP and Rails convention for sending an array: the server reads color as the list [red, blue]. Other frameworks read the name color[] literally, so use the format your backend documents.

Why do some values look double-encoded?

A value that was already percent-encoded gets encoded again when it is put into another URL, turning %20 into %2520. Decode it once more to see the original.