URL encode and decode

Make text safe for a URL, or turn percent-encoded text back into words.

Free, no sign-up.

URL encode and decode

What gets encoded

Encoding leaves letters, digits and - _ . ! ~ * ' ( ) as they are and writes everything else as % followed by two hex digits for each byte of its UTF-8 form. A space becomes %20, & becomes %26, / becomes %2F, and é, which is two bytes in UTF-8, becomes %C3%A9. So "a b&c=d" becomes a%20b%26c%3Dd and can sit inside a query string without breaking it.

Forms submitted by a browser write spaces as + instead of %20, which is why decoding here also turns + into a space. In a path, a + is just a plus sign.

The double-encoding trap

If text is encoded twice, the % signs get encoded too: %20 becomes %2520, and the page at the other end sees "%20" instead of a space. When you see %25 followed by two hex digits in a URL, something encoded an already encoded value; decode it once here to see what was meant.

More developer tools

Percent-encode text so it can go in a URL query string or path, or decode an encoded URL part to read it. Encoding follows the rules browsers use for a single URL component, and decoding also turns + into spaces, as form submissions do.

How it works

  • Paste the text — Plain text to encode, or an encoded part to decode.
  • Encode or Decode — Each has its own button.
  • Copy the result — Use the Copy button beside it.

Examples

  • Encode — café & bar → caf%C3%A9%20%26%20bar
  • Decode — hello+world%21 → hello world!

FAQ

  • Should I encode a whole URL? — No. Encode each part you insert, such as a search term, so its / ? & and = stay part of the text.
  • Why does decoding fail? — A % must be followed by two hex digits; a lone % can’t be decoded.
  • Is my text stored? — No. It runs in your browser; what you paste is never sent anywhere.