Percent-encode a query value, a whole URL or form data, line by line if you like, with double-encoding warnings.
URL Decoder
Turn %20, %C3%A9 and friends back into readable text. Paste a full URL to see its parts and every query parameter, decoded.
Decoded locally in your browser — URLs are never sent anywhere
How it works
Each %XX sequence is converted back to a byte. Runs of bytes are read as UTF-8, so %C3%A9 becomes “é”. If a sequence is malformed or the bytes aren’t valid UTF-8, you get the exact position instead of a generic error.
If the input is a complete http(s) or ftp URL, it’s also broken into protocol, host, port, path, fragment and every query parameter, each decoded. Repeated parameters (?tag=a&tag=b) are all listed.
Example
In the sample URL, q=caf%C3%A9%20%26%20braai decodes to q = café & braai. But ref=summer%252Fsale decodes only to summer%2Fsale: it was encoded twice. Turn on “Decode every layer” to get summer/sale and see both steps.
Form data such as name=Thandi+Nkosi needs “Treat + as a space” to become Thandi Nkosi.
Frequently asked questions
What does “decode every layer” do?
Some URLs are encoded more than once — %2520 is an encoded %20. With this option the decoder keeps decoding while percent sequences remain (up to five times) and shows each layer, so you can see what happened.
Should + become a space?
Only for form-encoded data (application/x-www-form-urlencoded), such as query strings submitted by HTML forms. In other parts of a URL, + is a literal plus sign. The option is off by default.
Why do I get an error?
A % that isn’t followed by two hex digits (for example “100%”), or bytes that don’t form valid UTF-8. The decoder tells you the position and can highlight it.
Is the URL I paste sent anywhere?
No. Decoding and parsing happen in your browser. That matters because URLs often carry session tokens, tracking IDs, emails and API keys.
Related tools
Build campaign-tracking URLs with UTM parameters so you can see which links bring visitors.
Decode Base64 to text, preview images, detect file types and download the original file — with precise errors.
Generate random v4 or time-ordered v7 UUIDs in bulk, in the format you need.
Related guides
JSON, Base64, URL encoding and HTML entities explained
What JSON, Base64, percent-encoding, HTML entities, UUIDs and Unix timestamps are for — and the common mistakes developers make with each.
CSS colour formats explained: HEX, RGB, HSL, HWB and OKLCH
What each CSS colour format means, when to use it, why OKLCH is useful for palettes, and how to check colour contrast for accessibility.
JWTs explained: structure, claims, decoding vs verifying, and common mistakes
How JSON Web Tokens work, what each part and claim means, why decoding isn't verifying, and the mistakes that cause real security bugs.