URL decode
Paste a percent-encoded string, like a query-string value or a tracking URL, and read it in plain text. The + convention for spaces is handled too, and nothing leaves your browser.
Text is processed by your own browser and never leaves your device: this page has no server to send it to.
How it works
Each %XX escape is converted back to its byte and the result is read as UTF-8, so multi-byte characters like ñ or emoji come back intact. A + sign is treated as a space first, matching how form data is encoded, then the percent escapes are decoded.
Frequently asked questions
Why does decoding fail on my string?
A lone % that is not followed by two hex digits is malformed and the decoder rejects it. Check for truncated input, or input that was never percent-encoded to begin with.
My string seems double-encoded. What do I do?
Decode it twice. Seeing %2520 instead of %20 is the classic sign: something encoded the % itself. Run the output through the decoder again until it stops changing.
Does it handle + as a space?
Yes. In query strings the historical form encoding writes spaces as +, so the tool converts + to a space before decoding the percent escapes.