Parse a URL without losing parameters
Paste a complete URL, a path containing ?, or a raw query string. The tool
places every key-value pair in an editable row and preserves three details that
are commonly lost when a query is converted to a plain object:
- the original parameter order;
- multiple occurrences of the same key;
- empty keys or values.
You can then edit, add or remove rows and copy the rebuilt URL, the query
without ?, or duplicate-safe JSON.
Verifiable example
This input contains two tags, a space, a literal plus and an empty value:
https://example.com/search?tag=astro&tag=seo&q=Tools+in+a+Tab&literal=a%2Bb&empty=#results
It produces these rows in the same order:
| Key | Value |
|---|---|
tag |
astro |
tag |
seo |
q |
Tools in a Tab |
literal |
a+b |
empty |
empty string |
The rebuilt URL retains the #results fragment. JSON is exported as a list of
{ "key", "value" } objects rather than a plain object, because a plain
object could retain only one of the two tag values.
Encoding rules used by the tool
The query is interpreted as application/x-www-form-urlencoded, the format
used by URLSearchParams. In this context, + represents a space and %2B
represents a literal plus. Reserved characters inside a key or value are
encoded again when the output is built.
That is not the same operation as encoding a complete URL. Use the
URL encoder when you need to transform a
component, path, or complete address without editing its parameter list. The
guide to repeated query string parameters
shows how to handle them with getAll(), append(), and data structures that
do not discard information.
What it validates—and what it cannot decide
The tool reports incomplete percent escapes and decoded bytes that are not valid UTF-8. It accepts only HTTP and HTTPS as absolute URL schemes and limits work to 100,000 characters and 1,000 parameters to protect the tab.
It cannot decide which parameters an API accepts, whether a signature is
valid, whether order matters to a server, or how a framework models arrays.
tag=a&tag=b, tag[]=a&tag[]=b, and tag=a,b are different contracts. The
tool preserves the actual input rather than guessing what the receiver expects.
Privacy
The input, editable rows, and output remain in browser memory. They are not added to the Tools in a Tab address, saved in local storage, or sent to a server.