Decode a single percent-encoded URI component back to its original value, treating the plus sign as a space by default as HTML form submissions do.
Show calculation steps
Processed privately in your browser — nothing you paste is uploaded, logged or stored.
Reading a value out of a URL
Decoding turns each percent-escape back into the byte it represents, then interprets those bytes as UTF-8 text. Two steps again, and the second is where a decode produces mojibake if the original was encoded from another character set.
Worked example
caf%C3%A9 → café (C3 A9 is é in UTF-8) caf%E9 → invalid (E9 is é in Latin-1, not valid UTF-8) a%26b → a&b the ampersand was data
Double encoding
%2520 decodes to %20, not to a space, because the percent sign itself was encoded. Seeing %25 in a URL almost always means a value was encoded twice by two layers that each thought they were the first. Decoding once shows you exactly that.
Plus signs
In a form-encoded body, + means a space. In a URL path it means a literal plus. The two conventions share a syntax, which is why decoding a form value with a plain URI decoder turns spaces into plus signs or vice versa.
Limits
Invalid escapes are reported rather than dropped, since a malformed URL is usually the thing you are investigating. Decoding is local to your browser, which matters because URLs so often carry session tokens.
How to use the URI Component Decoder
- Paste the encoded component.
- Leave "Treat + as a space" on for values taken from form submissions or query strings.
- Click "Decode component".
Frequently asked questions
When should the plus-as-space option be off?
When the value came from a URL path segment rather than a query string. In a path, a plus is a literal plus character, so converting it to a space would corrupt the value.
Can I use this on a whole URL?
You can, and it will decode every escape it finds. Just remember that the result may no longer be a usable URL if it originally contained encoded structural characters – which is precisely why they were encoded.