URL Decoder
Decode percent-encoded URLs and query strings back to readable text, with exact errors for malformed sequences.
URL Decoder: the tool
Input
Decoded
The result appears here.How to use URL Decoder
- Paste the encoded URL, query string or value.
- Keep Decode + as space on for query strings and form data. Turn it off for paths, where + is a literal plus.
- Turn on Keep invalid sequences if the text contains stray % characters that are not escapes, such as 100%.
- A malformed sequence is reported with its position. Use Go to error to jump to it.
Example
An encoded query string. With the default options the + signs are decoded to spaces.
q=caf%C3%A9+%26+cr%C3%A8me&lang=fr&price=%E2%82%AC5
q=café & crème&lang=fr&price=€5
About this tool
Percent-decoding replaces each %XX with the byte it stands for and then reads the bytes as UTF-8. Several escapes in a row can make one character: %E2%82%AC is the euro sign, three bytes long.
The decoder is strict by default. A % that is not followed by two hexadecimal digits, or a run of escapes that is not valid UTF-8, is reported with its position instead of being silently altered, which makes it a useful way to find a broken link. The lenient option leaves such sequences untouched.
Decoding happens in your browser, so URLs containing tokens, session identifiers or internal host names are not sent anywhere.
Frequently asked questions
Does + mean a space?
In a query string or form body, yes. In the path of a URL, no: + is just a plus. That is why the option exists. JavaScript's decodeURIComponent never converts +.
Why do I get "Incomplete escape"?
A % must be followed by two hexadecimal digits (0-9, A-F). A text such as 100% or %zz is not a valid escape. Fix it, or enable Keep invalid sequences to leave it as it is.
What does "not valid UTF-8" mean here?
The escapes decode to bytes that do not form valid UTF-8 text. Older systems sometimes percent-encode text in Latin-1, where é is %E9 on its own. That byte alone is not valid UTF-8.
Can I decode a whole URL, not only a value?
Yes. Reserved characters such as : / ? and & are left as they are, and only the escapes are decoded. Keep in mind that a decoded URL may no longer be a valid address.
Is my URL uploaded?
No. Decoding runs locally in your browser tab.
More developer tools
- %20URL EncoderPercent-encode text for URLs: a single component, a full URL, or form data. Unicode is encoded as UTF-8.
- b64Base64 DecoderDecode Base64 and Base64URL to text. Whitespace, missing padding and data URI prefixes are handled, and errors name the exact character.
- <>HTML DecoderDecode HTML entities such as &, é and € back to characters, using the full HTML5 entity table.
- { }JSON Formatter & ValidatorFormat, validate and minify JSON. Errors point to the exact line and column, and nothing you paste leaves your browser.