Parse and build query strings

Free query-string parser and builder for web developers and integrators. Paste a full URL or just a query string (with or without the leading "?") and you get a table of key/value pairs you can edit; the URL rebuilds itself with proper RFC 3986 percent-encoding. Useful for analysing an OAuth redirect, dissecting a long utm_* analytics URL, decoding a tracking pixel's params, building a deep link for a marketing email, or turning a query string into a JSON object you can drop into a fetch() call. Array notation (foo[]=1&foo[]=2) and repeated keys both round-trip cleanly.

How to use

1
Paste a URL

Or just a query string with or without "?".

2
Edit in the table

Click any key or value, type, and the URL updates.

3
Add or remove rows

Need a new parameter? Click "Add row".

4
Copy the result

Copy as full URL, query only, or JSON.

Decode any query string into a visual table and rebuild it after editing — keys and values auto-encoded

URL or query string

Options

Parameters

Key
Value
Full URL
Query string only
JSON
Don't know what to try?
400+ free tools — open a surprise
🎲 Surprise me

Features

Visual table editor Bidirectional Auto encode/decode Three outputs Array support Sort by key

Typical uses

  • Read a tracking URL (utm_source, utm_campaign, etc.) and see what parameters it carries.
  • Add a new tracking parameter to a marketing URL without hand-editing.
  • Convert a query string to a JSON object for pasting into JavaScript or a fetch() call.
  • Sort a long URL's parameters alphabetically so two URLs can be compared.
  • Build a properly-encoded URL from scratch by adding rows in the table.

Why this one

Most query-string tools dump the parsed key/value as raw text and force you to paste it back. We keep both the URL bar and the table live-synced — edit either, the other follows. Array notation, repeated keys and percent-encoded values all round-trip cleanly per RFC 3986 form-style encoding (spaces as +, reserved chars as %xx). No signup, no install — useful when you are debugging from someone else's machine.

Common questions

What is the difference between "?" and "#" in URLs?

Everything between "?" and "#" is the query string (sent to the server, indexed by Google). Everything after "#" is the fragment (kept by the browser, never sent to the server). This tool parses the query string only.

How is foo[]=1&foo[]=2 different from foo=1&foo=2?

On the wire they are equivalent — both send two values for "foo". The "[]" suffix is a PHP/Rails convention so the server-side framework parses them into an array automatically; without it those frameworks keep only the last value. Express.js, Flask and Django accept either form. Pick the one your backend prefers.

Does this work with hash routers (#?key=value)?

If you paste the full URL with the hash, the tool keeps the path/hash intact and only operates on the query portion before "#". If your app uses hash-based routing with query inside the hash, the tool will not auto-detect that — paste just the inner query string instead.

My value has special characters — will they survive a round-trip?

Yes. Keys and values are percent-encoded on output and decoded on input. Note the historical quirk: in the query string, spaces are encoded as "+", but in the URL path they must be "%20". The tool handles both correctly — if you paste a path with "%20" you get the literal space back; values you type get "+" in the query portion, which every modern server decodes identically.

Mobile?

Yes — the table collapses to stacked rows on narrow screens.

💡 Want us to improve this tool just for you?

We can — and it's free! Just send us a quick message with your idea. If you'd like to discuss it in detail, leave your email and we'll get back to you. You can stay anonymous.

How do you rate this tool?

Thank you for your rating!
Want to share more? Leave a comment!
Thank you! Your comment will appear after moderation.
Published Updated