Parse a URL query string into JSON and rebuild a query string from JSON — two-way, live, with array + nested object conventions — 100% in your browser
- Runs locally
- Category Developer & DevOps
- Best for Formatting, validating, shrinking, or inspecting code-adjacent text.
What this tool does
A two-way converter between URL query strings and JSON. Paste a query string (with or without the leading `?`) and instantly read it back as a formatted JSON object; or edit the JSON and watch the query string rebuild itself character by character. Both sides stay in sync, so you can poke at either one and immediately see the effect on the other.
It handles the messy parts that trip people up. Repeated keys like `tag=red&tag=blue` collapse into a JSON array `["red","blue"]` instead of silently dropping one. The bracket convention `a[b]=c` and `a[b][c]=d` expands into real nested objects, and `list[]=x&list[]=y` becomes an array. Percent-encoding (`%20`, `%2F`, `%E4%BD%A0`) and the `+`-for-space shorthand are decoded on the way in and re-encoded with `encodeURIComponent` on the way out, so a round trip never corrupts your data. Empty values (`flag=`) and bare keys (`debug`) are preserved rather than thrown away.
Going the other direction, a JSON object serialises back into a canonical query string: arrays become repeated keys (or `key[]`, your choice), nested objects become bracket paths, and every value is URL-safe. Bad JSON gets a clear, bilingual error pointing at the problem instead of a blank screen. Everything runs locally — no request ever leaves the tab, which matters when your query string carries a session token or an internal redirect URL you would rather not log on someone else's server.
Tool details
- Input
- Text + Structured content
- The page exposes text boxes, numeric controls, file pickers, or structured inputs depending on the tool.
- Output
- Live result + Copy
- The result area focuses on usable output, with copy, download, or preview actions when supported.
- Privacy
- Browser-side processing
- The main tool logic does not call an external API, so inputs normally stay in the current tab.
- Save / share
- Shareable URL state
- Key settings are encoded in the URL so another person can reopen the same setup.
- Performance budget
- Initial JS <= 10 KB
- No WASM budget is declared, keeping the tool quick to open on mobile.
- Best fit
- Developer & DevOps · Developer
- Category and role tags drive related tools, internal links, and quick fit checks.
How to use
-
1. Input
Paste or drop your content into the tool panel.
-
2. Process
Click the button. All processing is local in your browser.
-
3. Copy / Download
Copy the result or download to disk in one click.
How Query String to JSON Converter fits into your work
Use it in the small gaps between coding, reviewing, debugging, and shipping.
Developer jobs
- Formatting, validating, shrinking, or inspecting code-adjacent text.
- Preparing snippets for documentation, tickets, commits, or handoff.
- Checking a small payload quickly without switching tools.
Developer checks
- Run irreversible transforms like minify or obfuscate on a copy.
- Keep secrets out of pasted snippets unless the tool explicitly stays local.
- Use your normal tests or linter before shipping transformed code.
Good next steps
These links move the current task into a more complete workflow.
- 1 URL Query Params Extractor Extract, deduplicate, inspect, copy, and export query parameters from one URL or many URLs locally. Open
- 2 JSON Formatter & Validator Format, validate, and minify JSON instantly — right in your browser. Open
- 3 URL Encoder / Decoder Encode and decode URL-unsafe characters — query strings, path segments, full URLs — instant, browser-only Open
Real-world use cases
Turn a captured API request into editable JSON
You copied a GET request out of the browser DevTools Network tab and the whole payload lives in the query string: `?fields=id,name&include=author&filter[status]=active&page[size]=20`. Reading that by eye is painful. Paste it here, flip on bracket notation, and you get a clean JSON tree — `filter.status`, `page.size`, the `fields` list — that you can actually read and edit. Change `page.size` to 50 in the JSON, copy the rebuilt query string, paste it back into your HTTP client, and fire the request again. No hand-counting ampersands.
Audit and clean a UTM-laden marketing link
A link from a campaign tool arrives as `?utm_source=newsletter&utm_medium=email&utm_campaign=spring&ref=&gclid=abc123`. Parse it to JSON and the empty `ref=` jumps out immediately, and `gclid` is plainly the click ID you want to strip before re-sharing. Delete those two keys in the JSON pane, copy the minimal query string, and you have a clean link. Building UTMs from scratch instead? The UTM Builder writes them for you; this tool is for taking apart and fixing the ones you already have.
Debug a redirect that keeps dropping a parameter
A login redirect is supposed to carry `?return_to=/dashboard&plan=pro&promo=WELCOME` but users land without the promo. Paste the URL the server actually produced, parse to JSON, and compare it side by side with the JSON of the URL you expected. If `promo` is missing from the parsed object, the bug is upstream of the redirect; if it is present but the value is `WELCOME%2F`, you have a double-encoding problem — the re-encoded output here makes that obvious.
Reshape form data for a different backend
One service expects flat keys (`name=ada&role=admin`) while another wants nested brackets (`user[name]=ada&user[role]=admin`). Parse the flat string to JSON, restructure the object into a `user` block in the JSON editor, then rebuild with bracket notation on. You have migrated the encoding without touching a single percent sign by hand, and the live preview confirms the new string before you paste it anywhere.
Hand a teammate a shareable, pre-filled state
You are debugging a search page whose state lives entirely in the query string: `?q=opus&sort=recent&tags=ai&tags=tools`. Get it into the exact shape you want here, then copy the page's share link — the query-string input rides along in the URL, so your teammate opens the tool already showing the same parsed JSON. Pair it with a Slack message and they see the repeated `tags` array rendered correctly, no setup on their end.
Common pitfalls
Forgetting to turn on bracket notation when your string actually uses brackets. With the option off, `user[name]=ada` parses to a single flat key literally named `user[name]` — which is correct if the bracket is part of the real key, but surprising if you expected nesting. Check the toggle before reading the JSON.
Assuming numeric-looking values become numbers. A query string has no types: `page=2` parses to the string `"2"`, not the number `2`, because re-encoding a guessed number could silently change data (leading zeros, big integers). If your backend needs real numbers, cast them after parsing.
Sharing a query string that contains a secret. The input is stored in the page URL for the share feature, so a session token or signed redirect in your string ends up in the access log of wherever you paste the link. For anything sensitive, copy the JSON or query string text directly instead of using the share link.
Privacy
Parsing, serialising, and JSON formatting are all plain JavaScript that runs inside your browser tab. No query string, no JSON, and no record of what you converted is ever sent to a server. Your option choices (bracket notation, array style) are saved only in this browser's localStorage. The one caveat: for the "share link" feature, your query-string input is encoded into the page URL, so if you paste that link somewhere the destination's access log will see the string. For a query string carrying a token, session id, or signed redirect, copy the text directly rather than sharing the URL.
FAQ
Tool combos
Folks in your role tend to reach for these alongside this tool.
- 555 Timer Calculator Astable f = 1.44/((R1+2R2)C) + monostable t = 1.1RC — pick R1, R2, C in Ω/kΩ and µF/nF, read frequency, duty cycle and pulse width — browser-only
- Add Line Numbers Number every line of pasted text — set start, step and separator, zero-pad to align, skip blanks, or strip numbers back off — browser-only
- AES Text Encryptor Encrypt & decrypt text with a password — AES-256-GCM + PBKDF2 via WebCrypto — 100% in your browser, nothing uploaded
- Affine Cipher Encoder & Decoder Encrypt and decrypt the ax+b affine cipher with live modular-inverse check, browser-only