Decode URL-encoded strings back to their original format. Converts %XX sequences back to their original characters.
What is URL Decoder?
URL decoding reverses URL encoding (percent encoding), converting %XX sequences back to original characters. URLs can only contain a limited set of ASCII characters safely, so any character outside that set — spaces, special symbols, non-ASCII text — is encoded as % followed by two hexadecimal digits. Decoding is essential when receiving URL-encoded data: query parameters from APIs, form submissions (application/x-www-form-urlencoded), URL path segments, encoded strings in data files, and debugging web application routing issues. This tool uses decodeURIComponent, which decodes all percent-encoded characters including those that are part of URL structure (/, ?, &, =).
How to Use
- Paste URL-encoded text (containing %XX sequences) in the input field.
- Click 'Decode' to convert to the original human-readable format.
- Review the decoded output — if it still contains % sequences, it may be double-encoded.
- Copy decoded text for further processing using the Copy button.
- Use 'Load Sample' to see an example of URL decoding.
Why Use This Tool?
Tips & Best Practices
- %20 represents a space character — modern URL encoding uses %20 instead of the older + convention.
- %26 represents an ampersand (&) — critical in query strings where & separates parameters.
- %3D represents an equals sign (=) — used in parameter values where = would be misinterpreted as a key-value separator.
- Double-encoded strings need two decode passes — look for %25 (an encoded %) to identify double encoding.
Frequently Asked Questions
When do I need URL decoding?
When receiving encoded data: query parameters from web requests, API responses with encoded values, URL-encoded JSON in data files, or debugging encoding issues. Any data that passed through URL encoding needs decoding before use. This includes webhook payloads, redirect URLs, and form submissions.
When should I NOT use URL decoding?
Do not URL-decode when: you are constructing a URL and the encoding is intentional; you need to preserve URL structure characters (/, ?, &, =) — use decodeURI instead of decodeURIComponent; you are processing data that was not URL-encoded (applying decoding to plain text will corrupt it); or you are validating URL format (decoding changes the string).
What happens if decoding fails?
Invalid % sequences (like %XY where XY aren't valid hex, or incomplete %X) cause errors. The decoder rejects malformed input. Double-check the encoded string — it may have been corrupted or truncated during transmission. Common issues include missing the second hex digit or using lowercase hex where uppercase is expected.
Can strings be double-encoded?
Yes — sometimes strings get encoded twice (e.g., %2520 for originally %20). Double-encoded strings need two decode passes. Look for patterns like %25 (encoded %) to identify double encoding. Decode once, then check if the result still has % sequences — if so, decode again.
What about plus signs?
In old URL encoding standards (application/x-www-form-urlencoded), + represented spaces. Modern encoding uses %20 for spaces. This tool uses decodeURIComponent which handles %20, not + as space. If your data uses + for spaces (common in form submissions), replace + with %20 before decoding.
How are non-ASCII characters decoded?
Multi-byte UTF-8 sequences decode correctly. café encoded as caf%C3%A9 decodes back to café. Chinese characters, emojis, accented letters all work. The decoder handles UTF-8 automatically — no manual byte handling needed.
Real-world Examples
Decoding API query parameters
API requests often encode special characters in query strings. Decode them to see the actual parameter values being sent.
search?q=hello%20world%21&sort%3Ddesc&filter%3Dprice%3E100
search?q=hello world!&sort=desc&filter=price>100
Decoding a URL-encoded redirect URL
OAuth and SSO flows often pass redirect URLs as encoded query parameters. Decode to see the actual destination URL.
redirect_uri=https%3A%2F%2Fexample.com%2Fcallback%3Fcode%3Dabc123
redirect_uri=https://example.com/callback?code=abc123