URL Decoder
Decode percent-encoded URLs back into readable text.
Was this tool helpful?
Thanks for the feedback!
URL Decoder turns percent-encoded text such as %20, %26 or %E0%A4%A8 back into readable characters. Use it to read a long tracking link, see what a search or redirect parameter really contains, or recover a Hindi or emoji message from a shared link.
What happens when you press Decode
- Every
+is replaced with a space, because HTML forms encode spaces that way in query strings. - Each
%XXsequence is turned back into its byte, and the bytes are read as UTF-8, so multi-byte sequences become the original character again.
Characters that were never encoded pass through unchanged, so you can paste an entire link rather than just the encoded part.
Examples
| Encoded input | Decoded output |
|---|---|
city%3DPune%26area%3DKothrud | city=Pune&area=Kothrud |
q=masala+dosa | q=masala dosa |
note=1%2B1 | note=1+1 |
%E0%A4%A8%E0%A4%AE%E0%A4%B8%E0%A5%8D%E0%A4%A4%E0%A5%87 | नमस्ते |
The second and third rows show the difference between a literal plus and an encoded one: + stands for a space, while %2B is an actual plus sign. The last row is six Devanagari characters, each stored as three bytes.
A handful of codes turn up far more often than the rest, and recognising them lets you read many links without decoding at all: %20 is a space, %2F a slash, %3A a colon, %3F a question mark, %3D an equals sign, %26 an ampersand, %40 the @ in an email address, %23 a hash and %25 the percent sign itself. Lowercase hex such as %2f means the same thing and decodes just as well.
Checking where a link really goes
Links from emails, ads and login pages often carry another URL inside them, for example:
https://example.com/login?next=https%3A%2F%2Fexample.com%2Forders%3Fstatus%3Dpending
Decoding shows that the next parameter points to https://example.com/orders?status=pending. Reading the decoded version is a quick way to see where a link will send you before you click it, which is worth doing with unexpected "verify your account" or "claim your refund" messages.
Errors and double encoding
- Malformed input. A percent sign that isn't followed by two hexadecimal digits, as in "100% pure", or an encoded character that was cut off halfway, produces an error instead of a result. Remove or fix the stray
%, or write a literal percent sign as%25, and decode again. - Still seeing %20 after decoding? The text was encoded twice.
discount%2520codedecodes todiscount%20code; decode that result once more to getdiscount code. - Plus signs that should stay plus signs. Because every
+becomes a space, an unencoded phone number like+919876543210comes back with a leading space instead of the plus. In correctly encoded data, a real plus is written%2B.
To go the other way, the URL Encoder converts text into this format, and links built with the UTM Link Builder can be pasted here to read their parameters.