/

Query String Parser

Processed Client Side

Parse URLs and query strings into key-value pairs. Inspect, decode, and copy individual parameters.

Input · 1 lines
1 lines · 107 chars
Length: 107Lines: 1Size: 107 BytesCursor: 1:1
7 parameters
7 params
Protocolhttps:
Hostexample.com
Path/search
KeyValue (decoded)
qhello world
langen
page2
tagsa,b
sortdesc
utm_sourcegoogle
utm_mediumcpc

Bookmark this tool now — skip the search next time you need it.

About Query String Parser

This tool runs entirely in your browser. Whatever you paste is processed on your own device and is never uploaded, logged, or sent to any server.

The Query String Parser splits a URL, or a bare query string, into a table of parameters you can actually read. Paste a long tracking link, an OAuth callback, or a request pulled out of a log, and every key and value is listed separately with percent-encoding already decoded, above a breakdown of the protocol, host, path, and fragment. Duplicate keys are kept as separate rows instead of being collapsed, so array-style parameters stay visible. Any single value copies with one click, and the whole query string can be copied back correctly re-encoded. Parsing uses the browser URL and URLSearchParams APIs, so it decodes exactly the way your code will.

Key features

  • Accepts a full URL or a bare query string, with or without the leading question mark
  • Every parameter listed in a table with its value decoded, so %20, %2F, and + all resolve
  • Protocol, host, path, and fragment broken out above the table
  • Duplicate keys preserved as separate rows, so a repeated parameter stays two values rather than one
  • One-click copy on any individual value
  • Copy QS rebuilds the entire query string with every value correctly re-encoded
  • A live count of parameters, so you can see at a glance how many a link is carrying
  • Parsed with the browser URL and URLSearchParams APIs, giving decoding identical to what your application sees
  • Updates as you type and runs entirely in your browser, so URLs holding tokens are never uploaded

How to use it

  1. Paste a URL or a bare query string into the left pane.
  2. Read the table on the right, where each parameter appears with its decoded value.
  3. Check the breakdown above it for the protocol, host, path, and fragment.
  4. Copy a single value with the icon on its row, or use Copy QS for the whole rebuilt query string.

Tips & common mistakes

  • A plus sign in a query string means a space, not a plus. That is why hello+world reads as two words in the table; a literal plus has to be written as %2B.
  • Parameters after a # are part of the fragment, not the query string, so they never appear in the table. OAuth implicit flows put tokens there, so paste the fragment on its own to inspect it.
  • Copy QS re-encodes every value, which is the quickest way to repair a hand-edited URL where a value contains a raw ampersand or space.
  • Repeated keys are a convention rather than a standard. Some frameworks read a repeated parameter as a list, some keep only the last value, and some expect square brackets in the name, so check which one your API is.
  • Query strings end up in server logs, proxy logs, and analytics, so never put a password, token, or personal data in one.
  • Parameter order rarely matters to a server but usually matters to a cache, since two URLs that differ only in order are two separate cache entries.
  • To encode or decode a single value on its own, use the URL Encode and Decode tool.
  • Building the query string from scratch? Percent-encode individual values first with URL Encode / Decode.

Related tools

Browse all 9 Web / API tools

Frequently asked questions

10

Paste a full URL or just the query string into the left pane and every key and value is listed in a table on the right as you type, with percent-encoding already decoded. The leading question mark is optional.

Yes. Sequences such as %20 and %2F are decoded in the table, and a plus sign is decoded as a space, exactly the way a browser and your server-side framework will read it.

It copies the whole query string rebuilt from the table, with every key and value correctly re-encoded. That is the fastest way to repair a hand-edited URL where a value contains a raw space or ampersand.

They are kept as separate rows rather than collapsed, so a repeated parameter stays visible as two distinct values. How a server interprets that is up to the framework: some read a list, some keep only the last one.

Anything after a # is the fragment, not the query string, and it is never sent to the server. It is shown in the breakdown above the table but not parsed into parameters. OAuth implicit flows put tokens there, so paste the fragment on its own to inspect it.

Yes. A bare string such as page=2&sort=desc parses the same way as a full URL, with or without a leading question mark. When there is no URL, the protocol and host lines are simply omitted.

The table is read-only, so remove what you do not want from the input on the left and use Copy QS to take the rebuilt string. That is the usual way to strip utm tracking parameters off a link.

It is the part of a URL after the question mark, carrying data to the server as key and value pairs. Pairs are separated by ampersands and each key is joined to its value with an equals sign, which is why characters like spaces and ampersands inside a value have to be percent-encoded.

Rarely to a server, which reads them by name, but often to caches and analytics, which usually treat two orderings of the same parameters as two different URLs. Keeping a consistent order improves cache hit rates.

No. Parsing uses the browser URL and URLSearchParams APIs locally, so a callback URL containing an access token or session identifier never leaves your device.