URL Decoder
Encoding & EscapingDecode a percent-encoded URL back to plain text
Percent-encoded
Decoded
https://example.com/search?q=hello world&lang=en
About the URL Decoder
A percent-decoder that updates live as you paste. Drop in a URL-encoded string — a query parameter, a full URL, anything with %XX escapes — and get plain text back instantly, with a clear error message if the input isn't validly encoded.
Useful for reading a query string pulled from server logs, an OAuth redirect URL, or a webhook payload where the readable value is buried behind percent escapes — decode it once here instead of mentally converting %20s and %3Fs by hand.
How to Use the URL Decoder
Paste a percent-encoded string into the input panel.
View the decoded plain text, or a clear error if it isn't validly encoded.
Copy the decoded result.
Frequently Asked Questions
Is my text sent anywhere?
No. Decoding happens entirely in your browser using standard JavaScript — nothing you paste is sent to a server.
What does this tool actually undo?
It reverses percent-encoding — %XX sequences like %20 (space) or %3F (?) — regardless of whether the original text was produced with encodeURIComponent or encodeURI. Both produce the same kind of escapes; this just unescapes them back to plain text.
Why do I get an error on some input?
A percent-encoded string is invalid if it has a "%" not followed by two hex digits, or an escape sequence that doesn’t form valid UTF-8. That usually means the text wasn’t actually percent-encoded, or got double-encoded/truncated somewhere along the way — the error message here tells you decoding failed rather than silently returning garbage.
Can I decode a value that was encoded twice?
Run it through the decoder twice — once to undo each layer of encoding. A double-encoded value still decodes fine on the first pass; it just leaves you with a still-encoded string that needs a second pass.