Decode URL encoded text (percent encoding)
Decode URL encoded text instantly with our free online URL decoder tool. This decoder helps web developers and API users convert percent-encoded URLs back into readable text for debugging and analysis. Simply paste your URL-encoded string and get the decoded output in real-time.
URL decoding reverses percent-encoding, converting %XX sequences back to their original characters. This is necessary when processing URLs from logs, extracting parameters from request URLs, or displaying human-readable versions of encoded URLs.
The decoder finds %XX patterns (where XX is a hexadecimal byte value), converts them to bytes, and interprets the byte sequence as UTF-8 text. Plus signs (+) in query strings are converted to spaces. Invalid sequences should be handled gracefully or reported as errors.
Decoding converts %XX hexadecimal pairs to bytes, then interprets as UTF-8. Multi-byte UTF-8 characters produce sequences like %E2%82%AC (€). The + to space conversion is specific to application/x-www-form-urlencoded format (query strings). Path segments only use %XX encoding, never +.
Decode URLs in web server logs for readability.
/search?q=hello%20world becomes /search?q=hello worldDecode parameter values from URL query strings.
Show human-readable URLs in user interfaces.
Decode URLs when debugging API requests.
// Decode URI component
const decoded = decodeURIComponent('hello%20world');
// Result: "hello world"
// Handle + as space (query string convention)
function decodeQueryValue(str) {
return decodeURIComponent(str.replace(/\+/g, ' '));
}
// Parse entire query string
const params = new URLSearchParams('name=John+Doe&city=S%C3%A3o+Paulo');
params.get('city'); // "São Paulo"
// Handle malformed encoding gracefully
function safeDecode(str) {
try {
return decodeURIComponent(str.replace(/\+/g, ' '));
} catch (e) {
return str; // Return original if invalid
}
}URLSearchParams handles decoding automatically. For manual decoding, handle + to space conversion and malformed sequences.
from urllib.parse import unquote, unquote_plus, parse_qs
# Decode URL component
decoded = unquote('hello%20world') # "hello world"
# Decode with + as space (form data)
decoded = unquote_plus('hello+world') # "hello world"
# Parse entire query string
params = parse_qs('name=John+Doe&city=S%C3%A3o+Paulo')
# {'name': ['John Doe'], 'city': ['São Paulo']}unquote_plus handles + as space, unquote treats + as literal. parse_qs decodes entire query strings.
Use URL decoding when processing URLs from external sources: parsing query parameters, analyzing logs, displaying URLs to users. Essential for any URL manipulation in web applications.
Spaces aren't allowed in URLs. They must be encoded as %20 or + (in query strings). This is correct behavior. Browsers display the decoded version in the address bar for readability but transmit the encoded version.