Skip to main content

URL Decoder

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

Runs in your browser — your data never leaves your deviceFree, no sign-up
Options
Decoded output

The decoded text will appear here.

How it works

Each %XX escape in the input is converted back to its byte value, and the resulting bytes are interpreted as UTF-8 text — so accented characters, emoji and non-Latin scripts decode correctly.

Malformed input (a % not followed by two hex digits, or an invalid UTF-8 sequence) produces a clear error message rather than silently corrupted output.

Features

  • Component and full-URL decoding modes
  • Unicode-safe output via UTF-8
  • Clear errors for malformed percent-encoding
  • Copy, download and upload actions
  • 100% client-side — nothing leaves your browser

How to use

  1. Paste the percent-encoded text or URL.
  2. Pick a mode: Component to decode everything, Full URL to keep URL structure characters.
  3. Press Decode and copy the result.

Example

Input:  caf%C3%A9%20%26%20bar
Output: café & bar

Frequently asked questions

Why does my encoded text fail to decode?
Decoding fails when a % is not followed by two hexadecimal digits (for example a truncated %C3), or when the escapes form an invalid UTF-8 byte sequence. This usually means the text was cut off mid-copy or encoded twice — try decoding one layer at a time.
What is the difference between the two decoding modes?
Component mode (decodeURIComponent) decodes all percent escapes. Full URL mode (decodeURI) leaves structural characters like : / ? # & = encoded, because in a complete URL they are separators rather than data. If your output still contains %3A or %2F, switch to component mode.
Why do I see %2520 or %253F in my input?
That is double-encoding: %25 is the encoding of % itself. The text was encoded twice — decode once to get %20 / %3F, then decode again for the original text.
Does it decode + as a space?
No. In standard URL encoding (RFC 3986), a plus sign is just a plus sign; spaces are %20. The + means space only in HTML form submissions (application/x-www-form-urlencoded). If your input comes from a form, replace + with %20 (or a space) before decoding.
Is my data sent to a server?
No. Decoding happens entirely in your browser with JavaScript. Nothing you paste is transmitted anywhere — you can verify this in your browser's network inspector.