URL Decoder — Read Percent-Encoded Links and Query Strings

Paste an encoded link or query value to turn its % codes back into readable text, with + read as a space and an option to decode twice for values that were encoded more than once.

Live demo · real result from this tool

Decoded

https://example.com/search?q=café+au+lait&lang=fr

Processed on your device — nothing is uploaded.

How to use the URL decoder

  1. Paste the encoded link or value into Encoded URL or value.
  2. Keep Treat + as a space (query strings) ticked for query strings and form data, or untick it for URL paths.
  3. Tick Decode twice (for %25-encoded values) if the result still shows % codes.
  4. Copy the Decoded text.

What it does and when to use it

Encoded links are hard to read. A tracking link, a login redirect or a URL copied from a browser’s address bar can be a wall of % codes. Decoding shows you what it really says, which helps when you:

  • Check where a redirect or “continue” link will actually send you.
  • Read the search terms, campaign tags or filters in a query string.
  • Debug an API request whose parameters look wrong.
  • Read form data captured in server logs.
  • Find out whether a value was encoded twice by mistake.

To encode a value, use the URL Encoder. If the string is made of letters, digits, - and _ with no % signs, it may be Base64URL instead, so try the Base64 Decoder. For a token in a URL, the JWT Debugger can read it.

How it works

The decoder scans the text for % followed by two hex digits and turns each one back into a byte. Runs of bytes are then read as UTF-8, so multi-byte characters such as é or emoji come back whole. If + as a space is on, each + becomes a space first. A % that is not followed by two hex digits is kept as a literal % sign.

With Decode twice, the result is decoded a second time, without turning + into spaces again. If you did not tick it but the result still contains % codes, the tool shows a hint. Everything runs in your browser, so links with private details stay on your device.

Worked examples

A query value. “caf%C3%A9+au+lait” decodes to café au lait. The two codes %C3%A9 form é, and each + becomes a space.

Spotting double encoding. “100%2520off” decodes once to “100%20off”, and the tool adds the hint that it was probably encoded twice.

Decoding twice. “100%25%2520off” with Decode twice ticked gives 100% off. The first pass gives “100%%20off” and the second turns %20 into a space.

A stray percent sign. “50%+off” decodes to 50% off. The % is kept because it is not followed by two hex digits, and the + becomes a space.

Limits and tips

  • Decoding can turn data back into structure. After decoding, an & or = inside a value looks the same as one that separates parameters, so decode values one at a time when you need precision.
  • Text is read as UTF-8. Very old links encoded in another character set may not decode cleanly.
  • Decoding a link does not visit it. It is a safe way to check a suspicious link before you click.

Frequently asked questions

What does %20 mean in a URL?
It is a space. Spaces are not allowed in URLs, so they are written as % followed by the byte value in hex, which is 20 for a space. In query strings a space may also appear as a +.
Why does my decoded text still contain % codes?
The value was probably encoded twice. %2520 is %20 with its % sign encoded again as %25. This often happens when a URL is placed inside another URL. Tick Decode twice, and the tool will also suggest it when it spots leftover codes.
Should + be turned into a space?
In query strings and form data, yes, which is why that option is on by default. In a URL path, + is a real plus sign, so untick the option when you decode a path.
What happens with a % sign that is not followed by two hex digits?
It is left as it is, instead of causing an error. So "50%+off" decodes to "50% off". Many decoders give up on input like this, which often comes from links typed by hand or cut short in an email.
Does it decode non-English characters?
Yes. Groups of percent codes that form a UTF-8 character are joined back together, so %C3%A9 becomes é and %F0%9F%91%8B becomes 👋.

Written by the ToolsRift team · Last updated

Pages are drafted with AI assistance and checked by automated tests. How we write and check pages.

Was this tool useful?

Report a problem

Start typing to search every tool.

↑ ↓ to moveEnter to openEsc to close