URL Decoder

Paste a link, a query string or a value full of %2F, %3D and %C3%A9 and read it as plain text right away. Form data with + for spaces, double-encoded strings and links copied from analytics tools are all handled.

  • Free
  • No upload
  • No sign-up

URL encoder and decoder

Percent-encode text for links and query strings, or decode %20-style text back.

Component encodes every reserved character (/ ? & = #), for a single query value or path part. Full URL keeps the URL structure readable.

Runs entirely in your browser. Your data, files and text are never uploaded.

Turning %XX sequences back into text

Every %XX sequence is a byte written in hexadecimal. The decoder collects consecutive bytes and reads them as UTF-8, so %C5%BE becomes the single letter ž and %F0%9F%98%80 becomes an emoji, instead of the strange à and Å characters you get from tools that decode byte by byte.

Tracking links, redirect parameters and log files often contain a whole address hidden inside another one, for example ?url=https%3A%2F%2Fshop.example%2Fcart. Component decoding reveals it in one step. If the output still shows %25 or %20, the text was encoded twice; press "Use result as input" and decode it again.

Choose Full URL when you want to keep the structure of a link intact: escaped reserved characters such as %2F (slash) and %26 (ampersand) stay as they are, so the decoded link still points to the same place. HTML forms send spaces as +, so switch on "Treat + as a space" for submitted form data and most query strings.

How to use the URL Decoder

  1. Paste the encoded link, query string or value into the input field.
  2. Leave Component selected to decode everything, or pick Full URL to keep slashes and ampersands escaped.
  3. Turn on "Treat + as a space" if the text comes from a submitted form or a search query.
  4. Copy the decoded text, or press "Use result as input" to decode a double-encoded string once more.

Frequently asked questions

Why do I see %25 after decoding?

%25 is an encoded percent sign, which means the text was encoded twice. Decode the result one more time to get the original.

Why does the decoder report malformed input?

A % must be followed by two hexadecimal digits, and the bytes must form valid UTF-8. A truncated copy or a literal % sign in the text breaks this, and the message points to the spot.

Should + become a space?

Only in data sent by HTML forms and in many query strings. In paths and most other places a + is a real plus sign, so the option is off unless you turn it on.

Is the decoded link opened or visited?

No. The text is only converted in this browser tab; nothing is fetched, opened or sent anywhere.