Understanding URL & Percent Encoding
Percent-encode a URL or decode one back, in your browser. Component scope encodes every character RFC 3986 reserves; Full URL scope keeps ://, / and ? intact. A malformed escape is named and located rather than throwing the whole string away, and the query inspector splits an address into its parts and decodes each parameter once. Nothing is uploaded.
Percent-encoding is how a URL carries a character it is not allowed to spell. The character's UTF-8 bytes are written as % followed by two hex digits, so a space becomes %20 and é becomes %C3%A9. Which characters need it depends entirely on where in the URL they sit, which is the one thing most encoders hide from you and the reason this one asks for a scope before it converts anything.
Two things here work differently from the browser functions underneath. Component scope keeps only the unreserved set — letters, digits, - . _ ~ — so ! ' ( ) * come out encoded, where encodeURIComponent leaves them alone. And decoding reads the escapes as bytes against a UTF-8 validator instead of handing the string to decodeURIComponent, which answers every failure with the same three words. A truncated character, a stray continuation byte, an overlong form and a surrogate half each get their own sentence and their own position in the input.
The query inspector reads what you pasted, decoding each parameter exactly once. Once is the whole trick: decode the query first and then parse it and a %26 inside a value turns into a real & that splits one parameter into two, and a second pass over %2520 quietly hands you a space the server never saw. Long payloads are common here — a stringified JSON parameter is worth pasting into our JSON Formatter, and a base64 blob into the Base64 Encoder Decoder. Everything runs in the page. Access tokens, private UUIDs like the ones from our UUID Generator, and customer identifiers stay on your machine, because there is no request for them to travel in.