URL Encoder and Decoder
Percent-encode a value, or read back one that is already encoded.
Runs entirely in your browser
Loading the tool…
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
- Paste your text or encoded string.
- Pick Encode or Decode, and choose whether the input is one value or a whole address.
- 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.