What this tool does
A flat JSON object becomes the part of a URL that comes after the ?.
{ "q": "café au lait", "page": 2 }
q=caf%C3%A9+au+lait&page=2
The ? itself is not included — you are usually pasting this after one you already have.
Arrays become repeated keys
{ "tag": ["news", "draft"] }
tag=news&tag=draft
No standard says how an array belongs in a query string: tag[]=, tag[0]=, a comma-separated list and repeated keys are all in use somewhere. Repeated keys is what URLSearchParams and most server frameworks read back without configuration, and it is what the reverse tool on this site turns back into an array.
Nesting stops the conversion
{ "filter": { "status": "open" } }
is refused, and the message names filter. Flattening it to filter.status=open or filter[status]=open would be inventing a convention; the receiving end has to agree to it, and nothing in the JSON says which one it expects.
Types do not survive, and null survives least
Everything in a query string is text. 2 and "2" leave identical, true leaves as the four letters, and they all come back as strings.
null becomes an empty value:
{ "ref": null }
ref=
which reads back as "", not as null. The key is preserved, its emptiness is preserved, but the distinction between nothing and empty text is gone — a query string has no way to write it. That is stated here because it is the kind of loss you would otherwise find in production.
Private by design
Everything runs locally in your browser with JavaScript. Your data is never uploaded, which makes the tool safe for sensitive content, and it keeps working offline.