URL Decode — Decode URL-Encoded Strings Online
Decode URL-encoded strings back to plain text. Handles percent-encoding, plus-to-space conversion, and multi-byte UTF-8 sequences — runs in your browser.
URL encoding is the escape mechanism that makes the web work. Every character that has a special meaning in a URL — spaces, question marks, ampersands, equals signs, hashes, and every non-ASCII letter — is replaced by a percent sign followed by the two-digit hexadecimal value of the byte. The encoding makes URLs safe to transmit through any channel (plain text, HTML attributes, JSON strings, SMS messages) without the risk of the URL being broken by the surrounding context’s parsing rules. Decoding is the reverse: take the encoded string and recover the original text. The process is a lookup table, but the edge cases are what make a decoder useful: the +-vs-%20 distinction for spaces, double-encoding recovery for URLs that passed through multiple encoding layers, and correct handling of multi-byte UTF-8 sequences.
The URL Decode tool handles the full Percent-Encoding specification as defined in RFC 3986. The default mode decodes every %XX and + in the input — the right pick for a single query parameter value or a fragment of encoded text. The full-URL mode preserves the URL structure — scheme, authority, path, query delimiter (?), and fragment delimiter (#) — and decodes only the percent-encoded characters within each component. The double-decode toggle applies the decoder repeatedly, recovering strings that were encoded twice (a common situation when a URL containing encoded values is itself encoded for embedding in another URL). The output is the original text, ready for display, storage, or further processing.
How to use
Paste the encoded string
Paste a URL-encoded string from a query parameter, a form submission, or a redirect URL. The decoder converts percent-encoded sequences (`%20`, `%3D`, `%C3%A9`) back to their original characters and replaces `+` with spaces.
Choose decode options
Toggle between decoding the full URL (which preserves the URL structure — scheme, host, path, query) and decoding only the query-string component (which decodes every `%XX` and `+`). The full-URL mode keeps forward slashes and colons intact.
Copy the decoded output
Copy the decoded text. The output is plain text or a readable URL, depending on the mode. Use the companion URL Encode tool to re-encode if you are round-tripping data through a URL.
Frequently asked
What is percent-encoding?
Percent-encoding (also called URL encoding) replaces reserved and non-ASCII characters with `%` followed by the two-digit hexadecimal value of the byte. A space becomes `%20`, an equals sign becomes `%3D`, and é becomes `%C3%A9` (the two-byte UTF-8 encoding of U+00E9).
Why do some encoded strings use `+` instead of `%20`?
The `application/x-www-form-urlencoded` content type — used by HTML forms — encodes spaces as `+` instead of `%20`. This is a legacy convention from the early web. The decoder handles both: `+` becomes a space, `%20` becomes a space.
Does it handle double-encoding?
Yes — toggle 'decode repeatedly' to apply the decoder multiple times until the output stops changing. This recovers strings that were encoded twice (`%25` → `%` → decoded character). The toggle is useful for debugging URLs that went through multiple encoding layers (form → redirect → URL shortener).
Can it decode the entire query string into key-value pairs?
Use the companion Query String Parser tool for structured key-value decoding. The URL Decode tool decodes the raw string. For structured access to individual query parameters by name, the query-string parser is the right tool.
Limitations
- No broken-encoding repairThe decoder expects valid percent-encoding. Malformed sequences (`%ZZ`, `%G`, `%`) are left as-is in the output. For repairing garbled text caused by incorrect encoding interpretation, use the Charset Converter tool.
- No Unicode normalisationThe decoder produces the exact bytes after percent-decoding. It does not apply Unicode normalisation (NFC/NFD) to ensure canonical representation. Two visually identical strings may have different underlying codepoint sequences.
- No Base64 detectionURL-encoded data that is also Base64-encoded (common in JWT tokens and some API payloads) is decoded only at the URL-encoding layer. The Base64 layer remains encoded. Use the Base64 Decode tool for the second layer.
Platform notes
- macOS
- The terminal equivalent is `python3 -c 'import urllib.parse; print(urllib.parse.unquote("string"))'`. The browser tool adds the double-decode toggle and the full-URL preservation mode.
- Linux
- `printf '%b' "$(sed 's/+/ /g;s/%/\\x/g')"` is a common shell one-liner for URL decoding. The browser tool handles multi-byte UTF-8 sequences correctly — a common failure mode for shell-based decoders.
- Web
- Runs entirely in the browser. The encoded string is processed locally — no data is transmitted to a server for decoding.