URL Decoder

Decode percent-encoded URLs and query strings back to plain text.

  • Runs in your browser
  • Free, no sign-up
Paste encoded text to start

About the URL Decoder

Links copied from emails, analytics reports, server logs or redirect addresses are often full of codes like %20, %3A and %C3%A9. Paste such a link or text into the URL Decoder and it turns the codes back into readable characters: spaces, slashes, accented letters and emoji.

When the input contains a query string, the parameters are listed in a table with their names and decoded values, so a long tracking link becomes easy to read. Links that were encoded twice or more, such as hello%2520world, can be decoded repeatedly until nothing is left to decode.

The decoder is forgiving. Codes that are not valid UTF-8 and stray % signs are kept and reported instead of causing an error. Everything runs in your browser.

How to use it

  1. Paste the encoded textPaste a link, a query string or any percent-encoded text. Sample loads a search link with an encoded French phrase.
  2. Read the resultThe decoded text appears on the right as you paste. The status line says whether anything was decoded.
  3. Check the parametersIf the input has a query string, the Query parameters table lists each name and its decoded value.
  4. Handle + and double encoding"Treat + as a space" is on by default. Turn on "Decode again until fully decoded" for links that were encoded more than once.
  5. Copy the resultCopy the decoded text or download it as a text file.

Key features

UTF-8 decoding

%C3%A9 becomes é, %E2%82%AC becomes € and %F0%9F%91%8D becomes 👍.

Query parameter table

Every name and value in the query string, decoded and listed one per row.

Plus signs as spaces

Form-encoded text uses + for spaces. Turn the option off when + means a real plus sign.

Repeated decoding

Unwrap double- or triple-encoded links in one step, up to ten rounds, with the count shown in the status line.

Tolerant of errors

Invalid sequences and lone % signs are kept instead of stopping the decoder, and the status line tells you about them.

Private by design

Nothing is uploaded. Links that contain personal data or tokens stay on your device.

Examples

Decoding a search link

The Sample button loads:

https://example.com/search?q=caf%C3%A9%20au%20lait&lang=fr&ref=home%2Bmenu

The decoded result is https://example.com/search?q=café au lait&lang=fr&ref=home+menu, and the parameter table shows:

NameValue
qcafé au lait
langfr
refhome+menu

Note that %2B is decoded to a real + sign, which is not turned into a space.

Reading a redirect address

https://example.com/login?next=%2Faccount%2Forders%3Fpage%3D2&lang=en

The table shows next = /account/orders?page=2 and lang = en. The decoded text contains two question marks, which is fine for reading but no longer a valid link, so keep using the encoded version in your browser.

Double-encoded text

hello%2520world was encoded twice. By default, one round of decoding gives hello%20world. With "Decode again until fully decoded" on, you get hello world and the status line says "decoded 2 times".

A link encoded three times works the same way:

https%25253A%25252F%25252Fexample.com

becomes https://example.com, decoded 3 times.

Plus signs

For C%2B%2B+tips+for+beginners, the default gives C++ tips for beginners. With "Treat + as a space" off, you get C+++tips+for+beginners, because only the encoded plus signs were real ones.

Problems the decoder reports

InputResult and status
caf%E9caf� · 1 sequence was not valid UTF-8
100% sure100% sure · Nothing to decode, 1 lone % sign left as is

Tips

  • Paste tracking links from ads and newsletters to see their UTM parameters in plain words. The table makes it easy to spot a wrong campaign name.
  • If you still see %20 or %3A after decoding, the text was encoded twice. Turn on "Decode again until fully decoded".
  • Turn off "Treat + as a space" for paths and for values such as phone numbers, where + is a real character.
  • A � character in the result means the text was encoded in an older character set such as Latin-1, not UTF-8. The original letter cannot be recovered automatically.
  • To take a URL apart into protocol, host, path, parameters and fragment, use the URL Parser.

Common mistakes and limits

  • Using the decoded link in a browserDecoding can turn encoded ?, & and # inside values into real URL syntax, which changes what the link means. Use decoded text for reading and the original for linking.
  • Decoding too many times"Decode again" keeps going while codes remain. If the original text really contained something like %20, as in a page about URL encoding, the extra rounds change it.
  • Expecting the table to follow the + settingThe Query parameters table always reads + as a space, as browsers do for query strings, even when the option is off.
  • Pasting Base64 or HTML entitiesThis tool decodes percent codes only. Use the Base64 Decoder for Base64 and the HTML Decoder for entities like &.
  • Expecting Latin-1 codes to workOld links can use %E9 for é. That is not valid UTF-8, so it shows as �. Re-encode the text from the original source if you can.

Frequently asked questions

What does URL decoding do?
It turns percent codes back into characters. Each %XX stands for one byte, and the bytes are read as UTF-8, so %20 becomes a space and %C3%A9 becomes é.
Why does my link contain %20 and %3A?
Characters such as spaces, colons and slashes have special meanings in URLs, so they are encoded when they appear inside a value. %20 is a space, %3A a colon, %2F a slash and %3F a question mark.
Should + be decoded as a space?
In query strings and form data, yes, which is why the option is on by default. In paths and other parts of a URL, + is a real plus sign. A plus sign in data is always written as %2B.
What is double encoding?
Encoding text that is already encoded. The % of %20 becomes %25, giving %2520. It happens when a link passes through several systems. Turn on "Decode again until fully decoded" to undo it.
Why is there a � in my result?
The bytes were not valid UTF-8, usually because the text was encoded in an older character set. The status line says how many sequences were affected.
What happens to a % sign that is not a code?
It is left as it is, and the status line counts it as a lone % sign. Text like "100% sure" is not changed.
Can I see the parameters of a long link?
Yes. Whenever the input contains a ? followed by a query string, or is a query string such as name=Ana&city=Paris, the Query parameters table lists every name and value.
Is my link sent anywhere?
No. Decoding runs in your browser, so tokens, email addresses and other details in your links stay on your device.