100% local — your data never leaves your browser

URL Decode — Read the Parameters of a Link

Decode percent-encoded text back to readable form. The plus sign is kept as a plus, which is right for URLs and wrong for form data — told apart here.

Instant Private Zero cookies

URL-encoded input

Text output

What this tool does

Every %XX sequence becomes the byte those two digits name, and the resulting bytes are read as UTF-8 text. caf%C3%A9 gives café, because the accented letter is two bytes.

Uppercase and lowercase hexadecimal both work.

The plus sign is the thing to know

A plus stays a plus. That is correct — and it is probably not what you expected, so it is worth being precise about why.

Two encodings look alike and disagree on exactly one character:

  • percent-encoding, used in a URL path and a modern query string, writes a space as %20 and treats + as a literal plus;
  • form encoding (application/x-www-form-urlencoded), what an HTML form submits, writes a space as +.

This tool applies the first, matching decodeURIComponent in a browser.

Nothing in the string says which one produced it. A tool that guessed would corrupt the other case: a plus is a legitimate character in an email address, a phone number, a search term. Turning every plus into a space would destroy those values as surely as leaving them alone inconveniences form data.

So if your input came from a form, replace + with %20 first. One find-and-replace, and the result is correct.

What it refuses

A percent sign not followed by two hexadecimal digits. 100% cannot be decoded — there is no byte to produce, and inventing one would be worse than an error. The correctly encoded form is 100%25.

A %XX sequence that is not valid UTF-8 is also refused rather than replaced with a placeholder, so you find out that the input was damaged rather than reading text that was never there.

Private by design

Everything runs locally in your browser with JavaScript. Your data is never uploaded, which makes the tool safe for sensitive content, and it keeps working offline.

Frequently asked questions

My spaces came back as plus signs. How do I fix it?
Replace `+` with `%20` before decoding. Your input uses form encoding, where a plus means a space; this tool follows percent-encoding, where a plus is a plus. Both conventions are real and neither can be detected from the string alone.
Why not just decode plus as space and be done?
Because a plus is also a legitimate character in a value — in an email address, a phone number, a search term. Turning every one of them into a space would corrupt data that was encoded correctly.
Why does 100% fail to decode?
Because a percent sign starts an escape and must be followed by two hexadecimal digits. Here it is followed by nothing, so there is no byte to produce. Encoding it as `100%25` is the correct form.

Related converters