JSON to Query String
GET or POST. I don’t care. I convert.
Paste JSON, a query string or a whole URL. I’ll pick the direction.
Ctrl+Enter runs · drop a file on this pane
Query strings have no types. Just strings with ambitions.
Convert a JSON request body to a query string for a GET, or a query string or a whole URL back to JSON. Arrays, nesting and spaces the way your backend reads them, numbers as written, and every error with a line and a column.
How it works
- Paste JSON, a query string or a whole URL, or drop a file. I pick the direction; switch To query or To JSON if you disagree.
- Pick how arrays, nesting and spaces are written. For To JSON, decide whether 2 stays the string "2" or becomes a number.
- Copy or download the result. What a query string can’t carry is listed under it. Got JSON? Format it in the Formatter.
There is no single standard for nested query strings
RFC 3986 defines which characters a query string may hold, and HTML forms define key=value pairs joined by &. Nobody defines arrays or nested objects. PHP and Rails read tags[]=a and user[name]=x, Node’s qs writes indexes like items[0][id]=1, Java servlets and Go read repeated keys, Spring binds user.name=x, and some APIs want commas. Check what your backend parses and set Arrays and Nesting to match.
FAQ
Is my data sent anywhere?
To our API, over HTTPS: it converts the text in memory and doesn’t log or store it. The text goes when you run a conversion: the Convert button or Ctrl/Cmd+Enter, a paste into an empty editor, a file or a sample. With live conversion on, it also goes after each pause in typing; turn it off in the status bar and nothing leaves until you run one. The page also sends usage statistics tied to a random device ID, such as the direction and sizes, never the content.
%20 or +?
Both stand for a space in a query string from an HTML form; RFC 3986 knows only %20. To query writes %20 unless you pick +. To JSON reads + as a space unless you set Space to %20: then + stays a plus sign.
Why are my numbers strings?
A query string has no types: page=2 is just the text 2. To JSON keeps every value a string unless you switch Types from "1" to 1: then 123, -1.5 and 2.50 become numbers exactly as written, true and false become booleans, and null becomes null. 007 stays a string: a leading zero usually means an ID.
What happens to null and empty arrays?
A query string can’t say “empty list” or “null”. To query writes null as key= with an empty value and leaves empty arrays and objects out. Each loss is listed under the result with its JSON Pointer path, so nothing disappears silently.
Other tools
- JSON Formatter — 2 spaces, 4 spaces or tabs, order kept.
- JSON Validator — exact line and column for every error.
- JSON Diff — what changed, with JSON Pointer paths.
- Base64 Encode & Decode — in your browser, nothing sent.
- JSON Minifier — one line, every byte accounted for.
- JSON to YAML — same order, same numbers, safe quoting.