URL percent-decoding (also called URI decoding) converts the %XX escape sequences found in web addresses back into the characters they represent. This tool decodes any percent-encoded string, handles multi-byte UTF-8 correctly, and can also encode plain text in reverse — all in your browser.
How it works
Percent-encoding replaces a byte with a percent sign followed by that byte’s value in two hexadecimal digits. For example a space (ASCII 32, hex 20) becomes %20, and an ampersand (ASCII 38, hex 26) becomes %26. Characters outside the ASCII range are first turned into their UTF-8 byte sequence and then each byte is encoded — so é, whose UTF-8 bytes are 0xC3 0xA9, is written as %C3%A9.
Decoding reverses this: every %XX group is read as one byte, the resulting byte stream is interpreted as UTF-8, and the original text is reconstructed. The tool uses the browser’s native decodeURIComponent, which throws a clear error if a percent sign is not followed by two valid hex digits or if the bytes are not legal UTF-8.
Plus signs and spaces
In application/x-www-form-urlencoded data — the format used by HTML form submissions and many query strings — spaces are written as a plus sign rather than %20. Strict URI decoding leaves + untouched, so enable the plus-as-space option when working with form or query-string values to get the expected result.
Example
The encoded query value caf%C3%A9%20%26%20tea decodes to café & tea. Here %C3%A9 is the UTF-8 for é, each %20 is a space, and %26 is the ampersand. Everything is computed locally and nothing is transmitted to any server.