URL Decoder

Turn percent-encoded text back into readable characters.

Reverse
Input
URL input
Output
Result
Options

Correct for query strings; turn off for path segments.

About this tool


Decoding converts percent-escapes back into the characters they represent, turning an unreadable URL into something you can actually inspect. It is the fastest way to see what a redirect chain is carrying, or what a tracking parameter actually contains.

Malformed input is common (truncated escapes from a bad copy-paste, or a literal percent sign that was never encoded), so errors here name the specific problem rather than failing silently.

How to use it

  1. Paste or upload your urlDrop a file onto the input pane, use the file picker, or paste the text directly.
  2. Adjust the options if neededThe defaults suit most input; open Options to change the behaviour.
  3. DecodePress Decode, or use Ctrl+Enter (Cmd+Enter on macOS).
  4. Copy or downloadCopy the result, or download it as a .txt file.

Worked examples


Each example below is executed against this tool by the test suite, so what you see is what the tool actually produces.

An encoded query value

Input

search%20terms%20%26%20more%3F

Output

search terms & more?

UTF-8 escapes

Input

caf%C3%A9%20%F0%9F%8E%89

Output

café 🎉

Two escapes form the é and four form the emoji.

What to watch for


The details that decide whether a conversion is correct, and where information can be lost without any error being raised.

Percent-escapes and UTF-8 reassembly
Each %XX pair becomes one byte, and consecutive bytes are reassembled as UTF-8 text. So %C3%A9 becomes é from two escapes, and a four-escape sequence becomes a single emoji. Decoding is byte-based, which is why an incomplete multi-byte sequence produces an error rather than a partial character.
Plus signs and form encoding
In a form-encoded query string a + means a space, but in a URL path it is a literal plus. The default here converts + to a space, which is what you want when inspecting query parameters. Turn it off when decoding a path segment, or a value where + is meaningful, such as a phone number or an email address using plus-addressing.
Malformed escapes are reported precisely
A % must be followed by exactly two hexadecimal digits. Input like %ZZ or a trailing % is invalid, and the error points at the offending sequence. The usual causes are a truncated copy, or an unencoded literal percent sign that should have been written as %25.
Double-encoded values need decoding twice
If the result still contains visible escape sequences, the value was encoded more than once, %2520 decodes to %20, which then decodes to a space. Run the tool again on its own output until the text stops changing.

Limitations


  • Cannot tell a form-encoded query from a URL path, so the + handling is a choice you make.
  • Double-encoded input requires running the tool more than once.
  • Processing happens in your browser, so very large inputs are bounded by available memory. Files above roughly 10 MB are handled but will feel slower, and multi-hundred-megabyte files are better suited to a command-line tool.

Questions


Why did my plus sign become a space?
Because form-encoded query strings use + for a space, and that is the default. Turn off "Treat + as space" when the plus is literal, as in a path segment or a plus-addressed email.
Why do I still see %20 in the output?
The value was double-encoded: the original % was itself encoded as %25. Decode the output a second time.
What causes "malformed escape sequence"?
A % not followed by two hex digits, usually a truncated paste, or a literal percent sign that should have been %25.