URL Encode / Decode
Percent-encode a value, a whole URL, or a form body — and see exactly what changes. Offline.
Your data is processed entirely in your browser and is never uploaded.
Tool workspace
Options
For query strings & form bodies. Encode always follows the mode.
×100%
Same string, three different answers
Percent-encoding looks uniform, but the three modes disagree on exactly the characters that cause bugs. Pick the one that matches where the string is going.
| Component | Whole URL | Form | |
|---|---|---|---|
| space | %20 | %20 | + |
reserved / : ? & = | encoded | kept | encoded |
tilde ~ | kept | kept | %7E |
| use when | a query value or path segment | an entire link | a form / x-www-form-urlencoded body |
Non-ASCII always expands to its UTF-8 bytes — é is two (%C3%A9), an emoji is four. The readout reports bytes, not characters, so the expansion number is honest.
Quick answers
Is my input sent anywhere?
No. Encoding and decoding run entirely in your browser. Nothing you paste leaves your machine.
Component vs whole URL — which do I want?
If you're encoding a single value to drop into a query string, use Component — it encodes the reserved characters so they can't break the URL. If you already have a full URL and just want the unsafe characters escaped, use Whole URL, which leaves the structure intact.
Why is there a plus sign instead of %20?
That's form encoding (and many real query strings), where a space is written as +. The "decode + as space" toggle reads it back correctly; turn it off to keep + literal.
What does the footprint show?
Each teal chip is a character that the current mode encodes, shown as its percent-bytes; plain characters pass through untouched. It's the encoding's effect on your exact string, made visible — and in decode mode it shows the encoded structure you're unpacking.