
URL Decoder
Decode any percent-encoded URL with Qodex's URL Decoder. Convert values like %3A, %20, and %2F into readable characters. For encoding needs, check our URL Encoder, or handle Unicode with our UTF-8 Decoder and Base64 Decoder.
URL Decoder - Documentation
What is URL Decoding?
URL decoding is the process of converting encoded characters in a URL string back into their readable, original form. In a URL, certain characters (like spaces or special symbols) are replaced with percent-encoded values to ensure compatibility across all browsers and servers.
For example:
https%3A%2F%2Fexample.com%2Ffile%20name...becomes:
https://example.com/file nameHow Does URL Decoding Work?
When a URL is encoded, special characters are replaced with percent (%) signs followed by two-digit hexadecimal values. The decoder reads the string, identifies these %xx sequences, and converts them back to their ASCII or UTF-8 equivalents.
For example:
%20 = space ( )
%3A = colon (:)
%2F = slash (/)
This process is done using standard decoding functions available in every major programming language.
How to Use Qodex URL Decoder
Paste your percent-encoded URL or string.
Click "Decode".
Get the clean, readable text instantly in the output box.
Use "Copy" or download the result.
This tool works entirely in your browser and supports decoding full URLs, query strings, and encoded text snippets.
Percent-Encoding Reference Table
Below is a reference of the most commonly encountered percent-encoded characters in URLs, based on RFC 3986:
| Encoded | Decoded | Description |
|---|---|---|
| %20 | (space) | Space character |
| %21 | ! | Exclamation mark |
| %22 | " | Double quote |
| %23 | # | Hash / fragment identifier |
| %24 | $ | Dollar sign |
| %25 | % | Percent sign (literal) |
| %26 | & | Ampersand / query separator |
| %27 | ' | Single quote / apostrophe |
| %28 | ( | Opening parenthesis |
| %29 | ) | Closing parenthesis |
| %2A | * | Asterisk |
| %2B | + | Plus sign |
| %2C | , | Comma |
| %2F | / | Forward slash / path separator |
| %3A | : | Colon |
| %3B | ; | Semicolon |
| %3C | < | Less than |
| %3D | = | Equals sign |
| %3E | > | Greater than |
| %3F | ? | Question mark / query start |
| %40 | @ | At sign |
| %5B | [ | Opening bracket |
| %5C | \ | Backslash |
| %5D | ] | Closing bracket |
| %5E | ^ | Caret |
| %60 | ` | Backtick |
| %7B | { | Opening brace |
| %7C | | | Pipe |
| %7D | } | Closing brace |
| %7E | ~ | Tilde |
| + | (space) | Space in application/x-www-form-urlencoded |
URL Decoding in Different Programming Languages
Here is how to decode URLs in the most popular programming languages:
JavaScript
// Decode a full URI (preserves special URI characters) const decoded = decodeURI('https://example.com/path%20with%20spaces'); // Output: https://example.com/path with spaces
// Decode a URI component (decodes everything including :, /, ?) const param = decodeURIComponent('hello%20world%26foo%3Dbar'); // Output: hello world&foo=bar
Python
from urllib.parse import unquote, unquote_plusDecode percent-encoded URL
decoded = unquote('https%3A%2F%2Fexample.com%2Ffile%20name')
Output: https://example.com/file name
Decode form-encoded string (+ as space)
decoded_form = unquote_plus('hello+world%26foo%3Dbar')
Output: hello world&foo=bar
Java
import java.net.URLDecoder;import java.nio.charset.StandardCharsets;
String encoded = "https%3A%2F%2Fexample.com%2Ffile%20name"; String decoded = URLDecoder.decode(encoded, StandardCharsets.UTF_8); // Output: https://example.com/file name
PHP
// Decode percent-encoded string $decoded = urldecode('https%3A%2F%2Fexample.com%2Ffile%20name'); // Output: https://example.com/file name
// Decode without converting + to space $decoded_raw = rawurldecode('hello%20world%2B'); // Output: hello world+
Go
package mainimport ( "fmt" "net/url" )
func main() { decoded, err := url.QueryUnescape("https%3A%2F%2Fexample.com%2Ffile%20name") if err != nil { fmt.Println("Error:", err) return } fmt.Println(decoded) // Output: https://example.com/file name }
Reserved vs Unreserved Characters in URLs (RFC 3986)
Understanding which characters are reserved and which are unreserved helps explain why certain characters get percent-encoded in URLs.
Unreserved Characters (never need encoding)
These characters can appear in any part of a URL without encoding:
A-Z a-z 0-9 - _ . ~Reserved Characters (have special meaning in URLs)
These characters have specific roles in URL syntax. They must be percent-encoded when used outside their intended purpose:
| Character | Purpose in URLs |
|---|---|
| : | Separates scheme from authority (https:), port number |
| / | Path separator |
| ? | Starts query string |
| # | Starts fragment identifier |
| [ ] | IPv6 address literals |
| @ | Separates userinfo from host |
| ! | Sub-delimiter |
| $ | Sub-delimiter |
| & | Separates query parameters |
| ' | Sub-delimiter |
| ( ) | Sub-delimiters |
| * | Sub-delimiter |
| + | Sub-delimiter (also represents space in form data) |
| , | Sub-delimiter |
| ; | Sub-delimiter |
| = | Separates key from value in query parameters |
When a reserved character appears in a URL component where it is not serving its reserved purpose (for example, a literal & in a query parameter value), it must be percent-encoded as %26.
Practical Use Cases
Debugging URLs: Quickly inspect complex or broken query parameters.
Data Cleaning: Decode encoded data from forms, logs, or APIs.
Web Development: Decode strings before further processing in apps.
SEO Analysis: Understand human-readable URLs from encoded versions in analytics and crawl reports.
Security Reviews: Inspect suspicious links and obfuscated input for potential injection attacks.
Whether you are deciphering a jumbled string of percent signs and hex codes or unraveling a suspicious link, URL decoding transforms opaque encoded data into something you can read and analyze.
Related Tools
URL Encoder - Encode URLs for safe transmission
UTF-8 Decoder - Decode UTF-8 encoded text
Base64 Decoder - Decode Base64-encoded content
Pro Tips
URLs often contain multiple encodings. If you decode and still see %, run it again.
Do not decode values more than once unless you are sure it was double-encoded.
Use this with our URL Encoder for round-trip testing.
Decode query strings to separate parameters for debugging or analytics.
In form data (application/x-www-form-urlencoded),
+represents a space, not%20.
Frequently Asked Questions
What does %20 mean in a URL?
What is the difference between decodeURI and decodeURIComponent?
How to decode URL parameters in Python?
What types of encoded characters can this tool decode?
Can I decode multiple layers of encoding?
Is this tool safe to use with confidential data?
What happens if I paste a regular (non-encoded) URL?
What is the difference between %20 and + for spaces?
Related Articles

Test your APIs today!
Write in plain English — Qodex turns it into secure, ready-to-run tests.



