Duplicate parameter pollution
A proxy might use the first value while an application uses the last. Preserve every occurrence and align duplicate handling across security and business layers.
Ordered entries · Repeated keys · Empty values
Extract query text from a hierarchical scheme:// URL, remove a leading question mark, or parse raw query text while retaining order, duplicates, empty values, and original accepted-field spellings. Nothing is opened.
tag red
tag blue
empty ""
Duplicates stay separateEmpty does not mean absent
Inspect the parameter sequence
Paste a hierarchical absolute URL containing ://, a value beginning with ?, or a raw query. Requiring the authority marker keeps scheme-shaped raw fields such as foo:bar=baz in raw-query mode. Inspect up to 10,000 non-empty fields within a 200,000 UTF-16-code-unit limit.
Loading the query string parser…
Enable JavaScript to inspect ordered parameters. The form-encoding and duplicate-key guide remains readable below.
A list, not a plain object
A query string commonly contains name/value entries separated by ampersands. Within an entry, the first equals sign separates the encoded name from its encoded value. The same name can appear more than once, an entry can have an empty value, and the order can be meaningful to a particular application even though many servers treat it as insignificant.
LiveParse uses browser URLSearchParams semantics, which are based on the WHATWG application/x-www-form-urlencoded parser. Before percent-decoding, each literal plus sign is interpreted as a space. A plus that belongs to the data therefore needs the encoded form %2B. Percent-encoded UTF-8 sequences become Unicode text.
The result is an ordered list of pairs rather than a single-value JavaScript object. That distinction prevents repeated names from being overwritten. For tag=red&tag=blue, both entries remain available in their original parsed order. For empty=&flag, both names remain present with empty decoded values.
The lossless pair view records each accepted field's original encoded name and value and whether = appeared. The grouped map keeps every decoded value in an array. The rebuilt query is intentionally canonical: equivalent spellings can change, a bare key becomes a key followed by equals, and spaces serialize as plus. Empty separator-only segments are reported but omitted. Keep the complete original input when signatures or forensic evidence depend on characters outside accepted fields.
scheme:// URL, a leading-? value, or raw query text.= presence recorded in lossless pairs.Read every occurrence before grouping
utm_source=newsletterutm_sourcenewslettertag=redtagredtag=bluetagblueq=caf%C3%A9+teaqcafé teaempty=emptyempty stringKeep context and sequence
Use a hierarchical scheme:// URL, query text beginning with ?, or a raw query string. For opaque schemes, host, path, or relative resolution, use the full URL parser.
Look for repeated names, empty names or values, plus signs, encoded delimiters, and parameters whose position differs from the expected request.
Confirm whether the receiving framework keeps the first value, last value, every value, or rejects duplicates. URLSearchParams parsing cannot determine that business rule.
Decoded pairs do not settle application semantics
A proxy might use the first value while an application uses the last. Preserve every occurrence and align duplicate handling across security and business layers.
A missing key, a bare key, and key= are not always the same to application logic, even though URLSearchParams gives the latter two an empty string value.
Parsing raw C++ under form rules yields spaces. A producer must serialize that value as C%2B%2B when plus signs are data.
Reordering entries or normalizing their serialization can change an HMAC or signed URL. Follow the protocol's exact canonicalization algorithm rather than a generic sort.
Choose the tool by the layer you need
Use this page when the job is to inspect a form-style parameter sequence. Use the URL Parser when an absolute or relative URL must be interpreted as scheme, host, path, query, and fragment. Use the strict URL Decoder when malformed percent triplets or invalid UTF-8 must be reported rather than recovered.
URLSearchParams is designed for interoperable browser form behavior rather than forensic validation. LiveParse therefore performs a strict validation pass first: malformed triplets, invalid percent-encoded UTF-8, and unpaired UTF-16 surrogates stop the operation. It then uses URLSearchParams for form decoding, while the pair output keeps the original encoded field spellings.
No mode on this page checks that UTM values are accepted by an analytics platform, that a signed URL is authentic, that an OAuth state parameter matches a session, or that a redirect target is allowed. Those are destination-specific validations.
Encode each query name and value with form rules instead of concatenating raw ampersands, equals signs, spaces, or plus signs.
Open the URL encoder →Parameters frequently contain private data
Query strings from callback links, server logs, support tickets, and analytics exports may include email addresses, search terms, invite codes, signed expirations, object identifiers, session values, or OAuth authorization data. Parsing takes place in this browser tab and does not send the input to an API or visit a pasted address.
Local processing cannot retract data already recorded in browser history, proxy logs, analytics systems, screenshots, or clipboard managers. Redact secrets before copying parsed output into a public issue, chat, documentation example, or prompt. A parameter being readable does not mean it is safe to disclose.
The 200,000-code-unit bound is for responsive inspection, not for constructing requests of that size. Actual request-target limits vary widely, and long query data may be rejected or truncated before it reaches an application. Use request bodies and an appropriate protocol when a large structured payload must be transmitted.
Questions answered
A query string parser splits form-style query text into an ordered sequence of decoded name and value entries. It handles ampersand separators, percent-encoded bytes, plus-as-space behavior, repeated names, and empty values according to browser URLSearchParams semantics.
Yes. Iteration follows the parsed list order, so this tool displays entries in that order rather than sorting them. A receiving application may still sort, group, or ignore parameters, so order should not be treated as a universal business rule.
Each occurrence remains a separate ordered entry. For tag=red&tag=blue, the parsed sequence contains two tag entries. Do not collapse them to one value unless the destination application's documented rules require that transformation.
An entry such as empty= has an empty decoded value and remains present. A bare name such as flag also has an empty decoded value, but LiveParse lossless pair JSON records whether the equals sign appeared and retains each accepted field's original encoded spelling.
URLSearchParams uses application/x-www-form-urlencoded rules, where a literal + in the encoded input represents a space. A data value that actually contains plus must encode it as %2B. General URL components outside form-style query parsing do not always use this rule.
Yes. Although URLSearchParams alone has recovery behavior, LiveParse first validates every non-empty field and rejects malformed percent triplets, invalid percent-encoded UTF-8, and unpaired UTF-16 surrogates. It then uses URLSearchParams for form-style decoded values.
No. Query parsing runs in the current browser tab. The tool does not upload the text, navigate to a pasted address, resolve a hostname, fetch remote content, follow redirects, or validate an analytics destination.
The parser accepts at most 200,000 UTF-16 code units and 10,000 non-empty fields in one operation. Empty segments between separators are counted and reported but not returned as pairs. Real browsers, proxies, servers, and applications can impose much smaller request-target limits.