Productivity and Utilities

Query String to JSON Converter

Turn a query string or URL into a JSON object, or a JSON object into a query string.

Paste a query string, or a whole URL. Up to 1,000,000 characters. Nothing is uploaded.

Parsing follows the URL standard, the same rules as the URLSearchParams object in browsers: plus signs and %20 become spaces, percent codes are decoded as UTF-8, a key with no equals sign gets an empty value, and a key that appears more than once becomes a list. Keys such as a[]=1 or a[b]=1 are kept as plain text keys, not expanded. Values are text unless you turn on conversion.

Next step

How to use the query string to json converter

  1. Choose Query string to JSON or JSON to query string.
  2. Paste a query string such as a=1&b=two, or a whole URL. The part after ? is used and anything after # is ignored.
  3. Optionally turn on conversion of numbers and true or false into JSON values. Left off, every value stays text.
  4. Copy the result, or use Use result as input to convert it back.

From query string to JSON and back

The text a=1&b=two becomes {"a": "1", "b": "two"}. With conversion on, the value of a becomes the number 1 instead of the text "1".

The address https://example.com/search?q=blue+shoes&size=9&size=10 gives q as "blue shoes" (the plus sign is a space) and size as the list ["9", "10"], because a repeated key becomes a list.

The parsing rules

Parsing uses the browser's own URLSearchParams, which follows the URL standard. Pairs are separated by &, the first = splits a key from its value, a plus sign becomes a space, and percent codes such as %20 or %E2%82%AC are decoded as UTF-8. A key with no equals sign gets an empty value. A malformed percent code is left as it was written rather than raising an error.

A key that appears more than once becomes a list in the order found. Keys such as a[]=1 or user[name]=Ann are kept as ordinary text keys. Some servers expand those into arrays or nested objects, but there is no single rule for it, so this tool does not.

Writing a query string from JSON

Each key becomes a pair. A list writes the key once per item, strings are percent encoded, numbers and booleans are written as text, and null becomes an empty value. Spaces are written as plus signs by default, or as %20 if you choose. Nested objects and lists inside lists are refused with a message, because a query string is flat. Flatten them first with the JSON flatten tool.

Everything happens in your browser. See also the URL encoder and decoder, the UTM link builder and the JSON formatter and validator.

Assumptions and limits

  • Parsing follows the URL standard as implemented by URLSearchParams in your browser.
  • Values are text unless the conversion option is on. Only plain integers and decimals with no leading zeros are converted.
  • Bracket keys are not expanded into lists or objects.
  • Nothing is sent anywhere. The text stays in your browser.

Formulas reviewed October 10, 2026. See the calculation methodology for how SumPanda rounds, tests and sources its formulas.

Frequently asked questions

What does a repeated key become?

A list. The text tag=a&tag=b gives {"tag": ["a", "b"]}, and a third copy is added to the same list.

Why is a plus sign shown as a space?

In a query string the plus sign stands for a space, so q=blue+shoes means blue shoes. To write a real plus sign it must be sent as %2B.

Does the number conversion change ZIP codes?

Values with a leading zero, such as 02134, are never converted, so ZIP codes and similar codes stay as text.

Can I paste a whole URL?

Yes. The text before the question mark and anything after a hash sign are ignored, and only the query part is converted.