encoders decodersJavaScript
URL Decoder Online Tool

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 name

How 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

  1. Paste your percent-encoded URL or string.

  2. Click "Decode".

  3. Get the clean, readable text instantly in the output box.

  4. 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:

EncodedDecodedDescription
%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_plus

Decode 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 main

import ( "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:

CharacterPurpose 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.

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?

%20 is the percent-encoded representation of a space character. When a URL contains a space, it gets encoded as %20 to ensure the URL remains valid across all browsers and servers. For example, "my file.html" becomes "my%20file.html" in a URL.

What is the difference between decodeURI and decodeURIComponent?

decodeURI() decodes a full URI but preserves characters that have special meaning in URLs (like :, /, ?, #, &). decodeURIComponent() decodes everything, including those special characters. Use decodeURI for complete URLs and decodeURIComponent for individual query parameter values.

How to decode URL parameters in Python?

Use urllib.parse.unquote() to decode percent-encoded strings, or urllib.parse.unquote_plus() to also convert + signs to spaces (common in form data). Example: urllib.parse.unquote("%2Fpath%20to%20file") returns "/path to file".

What types of encoded characters can this tool decode?

This tool decodes all percent-encoded sequences in URLs, such as %20 (space), %3A (colon), %2F (slash), %26 (ampersand), %3F (question mark), %40 (at sign), and more. It works with full URLs, query strings, and standalone text fragments.

Can I decode multiple layers of encoding?

Yes. Some URLs are double-encoded (e.g., %2520 becomes %20, then a space). You can run the decoded output again through the tool to resolve multiple layers.

Is this tool safe to use with confidential data?

Yes. All decoding is done in your browser using JavaScript. Your data never leaves your device or gets sent to any server. It is completely private and secure.

What happens if I paste a regular (non-encoded) URL?

If the input has no percent-encoded characters, the tool will return the same text unchanged. It only decodes characters that match a valid %xx hex format.

What is the difference between %20 and + for spaces?

Both represent spaces, but in different contexts. %20 is used in URL paths and general percent-encoding. The + sign represents a space specifically in application/x-www-form-urlencoded format (HTML form submissions). The decodeURIComponent function does not convert + to space, while unquote_plus in Python does.

Test your APIs today!

Write in plain English — Qodex turns it into secure, ready-to-run tests.