EthicalFusion

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

  1. Every + is replaced with a space, because HTML forms encode spaces that way in query strings.
  2. Each %XX sequence 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 inputDecoded output
city%3DPune%26area%3DKothrudcity=Pune&area=Kothrud
q=masala+dosaq=masala dosa
note=1%2B1note=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%2520code decodes to discount%20code; decode that result once more to get discount code.
  • Plus signs that should stay plus signs. Because every + becomes a space, an unencoded phone number like +919876543210 comes 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.

Frequently asked questions

Why does the decoder show an error for my text?
There is a % sign that isn't part of a valid %XX code, or an encoded character was cut off. Fix or remove the stray percent sign and decode again.
Why did plus signs turn into spaces?
In form-encoded query strings a + stands for a space, so the decoder converts it. A genuine plus sign should appear as %2B in encoded text.
How do I decode a URL that was encoded twice?
Run it through the decoder again. Each pass removes one layer, turning %2520 into %20 and then into a space.
Can it decode Hindi or other non-English text?
Yes. Multi-byte UTF-8 sequences are combined back into the original characters, including Devanagari and emojis.
Is it safe to decode a suspicious link?
Yes. Decoding only shows the text and doesn't open the link, which makes it a useful way to inspect where a link leads before clicking.

Related tools

People also used

Embed this tool on your site

Paste it into any blog or website. Free, with a credit link.