URL Query Parameter Parser
Break a URL into its components, then inspect, edit, sort and export every query parameter — without leaving your browser.
Paste any URL (or just a raw query string like page=3&sort=desc) and the parser splits it into
protocol, host, port, path, query and fragment. Every query parameter lands in an editable table: fix a typo,
change a value, drop a tracking parameter, sort keys alphabetically or remove duplicates — then copy the
result back as a rebuilt URL, a bare query string, JSON, a JavaScript object, a Python dict or a cURL command.
1 · Paste a URL or query string
2 · URL components
Parse a URL to see its components here.
3 · Query parameters
Edit keys and values inline — every export below updates live. Values are shown decoded.
4 · Export
Rebuilt URL
—
Query string
—
JSON
—
JavaScript object
—
Python dict
—
cURL command
—
How query strings work
Everything after the ? in a URL is the query string: a list of
key=value pairs separated by &. Browsers and frameworks decode it into the
parameters your code sees. A few rules trip people up regularly:
- Encoding. Query strings officially use application/x-www-form-urlencoded: spaces become
+, and everything outsideA–Z a–z 0–9 - _ . ~becomes a%XXescape. Many APIs also accept percent-encoded spaces (%20) — both forms are valid, which is why the export above lets you pick. - Duplicate keys are legal.
?tag=a&tag=bis a perfectly valid query string. Frameworks usually expose it as a list (tag: ["a", "b"]) or let the last value win — which is why the duplicate flag and de-dupe buttons exist. Note that JSON, JavaScript and Python objects can only hold one value per key, so those exports keep the last occurrence. - Bare keys mean empty values.
?verboseis the same as?verbose=— a flag with an empty string value. This tool re-serialises bare keys askey=so the intent stays explicit. - The fragment never reaches the server. Everything after
#is used only by the browser (anchors, SPA routing). It is excluded from cURL exports automatically and optional in the rebuilt URL. - Length limits are real but generous. Modern browsers handle query strings of several thousand characters; the practical ceiling is usually the server (nginx defaults to 8 KB for request headers). If a URL keeps getting rejected, move large data into the request body instead.
Need the other half of this job — encoding or decoding individual values and whole URLs — see the URL Encoder / Decoder.
Suggested
Luke Keam | techgeek.biz