URL Decoder
Decode percent-encoded URLs back to readable text in your browser. For inspecting OAuth callbacks, deep links, or debug-parsing query strings.
About URL Decode
URL decoding reverses percent-encoding: every "%XX" sequence becomes the byte with hex value XX, and UTF-8 byte sequences reassemble into their original characters. This decoder uses decodeURIComponent, which handles the full RFC 3986 encoded-character set and decodes UTF-8 multi-byte sequences correctly. Typical decoding flow: you have a copy-pasted URL from a browser address bar where everything is percent-encoded and you want to read the actual parameters; you're inspecting an OAuth callback URL with a long state parameter and need to see what your app encoded into it; you're reading a log line with a URL and the non-ASCII characters are unreadable; you want to verify what a frontend sent by decoding the raw query string on the backend side. When decoding fails: malformed percent sequences (%ZZ where Z isn't a hex digit), truncated sequences (% at the end with no following digits), invalid UTF-8 byte sequences that can't reassemble into characters. The decoder will throw URIError, which is a signal the input isn't valid percent-encoding. Common cause: a URL that was encoded twice (double-encoding produces %25XX instead of %XX), which you fix by running the decoder twice.
Features
- Encode special characters for safe URL transmission
- Decode percent-encoded URLs back to readable text
- Handle all special and unicode characters
- Copy encoded or decoded output instantly
How to Use
- Paste your URL or text into the input field
- Select "Encode" or "Decode" mode
- View the result instantly
- Copy the output using the copy button
Frequently Asked Questions
Why am I getting URIError on valid-looking input?
Usually a stray % that isn't followed by two hex digits ("100%" would produce URIError on the trailing %), or an invalid UTF-8 byte sequence (%E9 alone isn't valid UTF-8, it needs continuation bytes). Trim the input to just the percent-encoded portion and try again.
What's double-encoding and how do I fix it?
Double-encoding is when a URL gets percent-encoded twice, producing strings like %2520 (which is %20 with its % re-encoded as %25). The fix is to decode twice. If you run the decoder once and the output still has %XX sequences in it, decode again. Three-times encoding is rare but possible.
Should I decode + as a space?
Depends on context. In query strings from HTML form submissions, + means space (application/x-www-form-urlencoded convention). In URL paths or fragments, + is a literal plus sign. decodeURIComponent treats + as literal; browsers handle the form-data form separately. If you're decoding a form submission, pre-replace + with space before decoding.
Can I decode a URL that came from an email?
Yes, but emails sometimes break long URLs across lines or insert soft-wrap markers (= at end of line in quoted-printable). Remove those first. Also check if the email client already decoded some characters — pasting a half-decoded URL into this tool will fail on sequences that are already plain text.