Query String Parser & Builder

Parse a URL query into an editable table, then rebuild and copy it.

Ad placeholder (leaderboard)
Enjoying the tools? Go Pro for £4.99 (one-time) and remove all ads — forever, on this device. Remove ads — £4.99

Parse, edit and rebuild any query string

This developer tool does a full round trip on a URL query string. Paste a link and it splits the query into a clean table of keys and decoded values — with percent-encoding and + spaces already decoded so you read the real content. Then you can edit every row, add new parameters, delete ones you do not want, and the tool rebuilds a correctly encoded query string live, ready to copy back into a link, a redirect, or an API request. It is built for debugging links, auditing analytics and UTM tracking tags, tidying up messy share URLs, and constructing request strings by hand.

How it works

The parser accepts three input shapes: a full URL, a string starting with ?, or a bare key=value query string. It first strips any #fragment, keeps only the part after the first ? when present, and feeds the rest to the browser’s built-in URLSearchParams API. That API splits on &, separates each key from its value at the first =, and URL-decodes both sides — turning %20 and + into spaces and %2F into /. Each pair becomes one editable row, and repeated keys are kept as separate rows rather than merged.

When you edit the table, the rebuild step runs in reverse: every key and value is re-encoded with encodeURIComponent, joined with = and &, and a leading ? is shown. A toggle chooses whether spaces become + or %20. A second output renders the parameters as JSON, collapsing any repeated keys into an array — handy when you need the data in a structured form. Everything runs locally in your browser, so even private or signed URLs stay on your machine.

Example

Paste this URL:

https://example.com/search?q=hello+world&page=2&sort=desc&tags=a&tags=b

You get five editable rows:

KeyDecoded value
qhello world
page2
sortdesc
tagsa
tagsb

Notice that hello+world decodes to hello world, and the two tags parameters each get their own row. Change page to 3, delete the second tags row, and the rebuilt query becomes ?q=hello+world&page=3&sort=desc&tags=a. The JSON view shows tags as an array when both rows are present. Everything is calculated in your browser — nothing is uploaded.

Ad placeholder (rectangle)