URL Encoder and Decoder

Percent-encode a value, or read back one that is already encoded.

Runs entirely in your browser

Advertisement

Loading the tool…


  

Advertisement

A URL may only contain a restricted set of ASCII characters. Everything else, from spaces and accents and emoji to the punctuation that gives a URL its structure, has to be written as % followed by two hex digits of UTF-8. That is percent encoding, and it is why a space in a link arrives as %20.

The two modes matter. Component encodes everything unsafe, including / ? : & =, which is what you want for a single query value or path segment. Whole address leaves those structural characters alone so a complete URL stays usable. Encoding a full URL in component mode is the classic mistake: it turns the whole thing into one unusable string.

How to use it

  1. Paste your text or encoded string.
  2. Pick Encode or Decode, and choose whether the input is one value or a whole address.
  3. Copy the result.

Questions

When do I need component mode instead of whole address?

Use component mode for anything you are putting *into* a URL: a search term, a filename, a redirect target. Use whole-address mode when the input is already a complete URL and you only want the illegal characters fixed.

Why is a space sometimes %20 and sometimes +?

%20 is correct everywhere. The + shorthand is only valid in the query string of HTML form submissions (application/x-www-form-urlencoded). The decoder here has a switch for it, because pasted form data is full of them.

What happens to accents and emoji?

They are encoded as their UTF-8 bytes, so é becomes %C3%A9 and 😀 becomes %F0%9F%98%80. Decoding reverses it exactly, provided the bytes really were UTF-8.

Your data stays on your device

Everything above runs inside your browser as WebAssembly compiled from Rust. Nothing you type is uploaded, logged or stored on a server. There is no server. You can load this page once, go offline, and it still works.