How to decode a URL
- Paste the encoded URL or text, for example
https%3A%2F%2Fexample.com%2F%3Fq%3Dcaf%C3%A9. - Press Decode. Percent sequences are turned back into characters using UTF-8, so
%C3%A9becomes é and%20becomes a space. - In Component or Form mode, plus signs are treated as spaces, as in HTML form submissions. Choose Full URL to keep them.
- Copy the result, or press Use as input to decode again if the text was encoded twice.
Double encoding and broken sequences
Encoded URLs often pass through several systems, and each may encode them again. If you see %2520, the text was encoded twice: %25 is an encoded percent sign. Decode it twice to get back to the original.
Logs and analytics exports also contain truncated or invalid sequences, such as a stray % or a cut-off multi-byte character. Most decoders fail completely with a "URI malformed" error. This one decodes everything it can and leaves only the broken parts as they are, with a warning, so you can still read the URL.
To see each query parameter separately, switch to the Parse URL tab, which lists every key and value fully decoded. Everything runs in your browser and nothing is uploaded.
FAQ
What does %20 mean in a URL?
%20 is an encoded space. The number after % is the character code in hexadecimal: 20 hex is 32, the code for a space.
Why is + not decoded to a space?
Only form encoding (application/x-www-form-urlencoded) uses + for spaces. In Full URL mode a + is kept, because in paths it is a literal plus sign.
How do I decode a URL in code?
JavaScript: decodeURIComponent(s). Python: urllib.parse.unquote(s), or unquote_plus for form data. PHP: urldecode($s).