URL Decoder
Decode %20, %C3%A9 and the rest back into plain text, so you can read what a URL or query parameter actually contains.
How it works
Each %XX sequence is read as a byte, and the resulting bytes are decoded as UTF-8. That two-step order is why %C3%A9 correctly becomes é rather than two broken symbols — the pair of bytes has to be decoded together.
An invalid sequence — a % not followed by two hex digits, or bytes that are not valid UTF-8 — cannot be decoded, and you get a message saying so rather than a silently mangled result.
The formula
Decoding
%XX → byte → UTF-8 text
Common values
%20 = space, %26 = &, %3D = =, %2F = /, %3F = ?
Worked examples
| Scenario | Working | Result |
|---|---|---|
| a%20%26%20b | Decode | a & b |
| caf%C3%A9 | Two bytes decoded together | café |
| %E2 | Incomplete UTF-8 sequence | Reported as invalid |
When you'd use it
- Reading a redirect URL buried inside another URL
- Working out what a tracking parameter actually says
- Debugging a form submission in a network log
- Cleaning up a link pasted from an email client
Common questions
Why does decoding fail with “URI malformed”?
The input contains a % that is not followed by two valid hex digits, or a byte sequence that is not valid UTF-8. A literal percent sign in text should itself be encoded as %25.
Should I decode a URL more than once?
Only if it was double-encoded, which happens when a URL carrying another URL is passed through an encoder twice. If one pass still leaves %25 sequences, run it again.
Is anything uploaded?
No. Decoding is done in your browser, which matters when the URL contains session tokens.

