URL Decoder
Free online URL decoder. Decode percent-encoded URLs and query strings back to readable text with real-time output, error detection, and one-click copy.
Features
Everything you need, nothing you don’t.
- Decodes percent-encoded URLs and strings in real time as you type
- Handles %20 spaces, %26 ampersands, and all percent-encoded characters
- Detects and reports invalid percent sequences with clear error messages
- One-click copy decoded output to clipboard
- Expand either pane to fullscreen for working with long URLs
- No data leaves your browser - everything runs client-side
Related Tools
Frequently asked questions
What is URL decoding?
URL decoding (percent-decoding) reverses the percent-encoding process - it converts percent-encoded sequences like %20 back to their original characters (in this case, a space). It is used when reading query parameters, form submissions, or any data that was URL-encoded before transmission.
When do I need to URL-decode a string?
You typically need to URL-decode a string when reading query parameter values from a URL, parsing form data received from an HTTP request, debugging API calls by inspecting encoded request payloads, or reading logged URLs that contain encoded characters.
What does "invalid percent-encoded string" mean?
A percent character (%) must always be followed by exactly two hexadecimal digits (0-9, A-F). If the input contains a % that is not followed by two valid hex digits - or is at the end of the string - the decode will fail. Fix or remove the invalid % characters and try again.
What is the difference between %20 and "+"?
Both represent a space character, but in different contexts. %20 is the standard percent-encoding for a space in URLs (RFC 3986). The + character represents a space only in the application/x-www-form-urlencoded format used by HTML forms. This tool uses decodeURIComponent, which correctly decodes %20. A + is left as a literal plus sign.
Can I decode a full URL with query parameters?
Yes. Paste the full encoded URL and this tool decodes all percent-encoded sequences in one pass. The decoded output may contain characters like &, =, and / that are structural parts of the URL, reflecting the decoded values rather than individual parameters.
How is URL decoding different from Base64 decoding?
URL encoding replaces unsafe characters with %XX hex sequences and is used for safe transport in HTTP URLs and form data. Base64 encoding converts binary or arbitrary text to a set of 64 safe ASCII characters and is commonly used in authentication tokens, email attachments, and data URIs. They are separate encoding schemes for different use cases.
How do I decode a Proofpoint encoded URL?
Proofpoint Email Protection rewrites links in emails into a tracking URL that starts with urldefense.com or urldefense.proofpoint.com. These URLs contain the original destination percent-encoded inside the u= query parameter. To decode one: copy the full Proofpoint URL, paste it here, and look for the u= value in the decoded output. Then decode that value separately to get the original URL. Alternatively, extract the u= parameter value and paste just that portion.
How do I decode a Microsoft SafeLinks URL?
Microsoft Defender for Office 365 (formerly ATP) rewrites links in emails to SafeLinks URLs that start with *.safelinks.protection.outlook.com. The original URL is percent-encoded in the url= query parameter. Paste the full SafeLinks URL here, locate the url= value in the decoded output, and that is the destination address. To go directly to the original link, copy the url= value and paste it into your browser.
URL Decoding in Other Contexts
How percent-encoding works across HTML, HTTP, and common programming languages.
HTML and HTTP URL Decoding
Percent-encoding is the same standard whether a URL comes from an HTML <a href> attribute, an HTTP Location header, or a browser address bar. Copy any encoded URL from an HTML source file or HTTP response and paste it above - the decoder handles all of them identically.
URL Decoding in Python
Use urllib.parse.unquote() from the standard library:
from urllib.parse import unquote, unquote_plus
# Standard percent-decoding (%20 -> space)
unquote('hello%20world%21') # 'hello world!'
# Form-encoded decoding (+ -> space, then %XX)
unquote_plus('hello+world%21') # 'hello world!' URL Decoding in Java
Use java.net.URLDecoder from the standard library:
import java.net.URLDecoder; import java.nio.charset.StandardCharsets; String encoded = "hello%20world%21"; String decoded = URLDecoder.decode(encoded, StandardCharsets.UTF_8); // Result: "hello world!" // Note: URLDecoder also converts + to spaces (HTML form decoding). // For strict %XX-only decoding, use URI.create(encoded).getPath() instead.