Understanding URL Encoding and Percent-Encoding
What this tool does
A URL can only carry a limited set of characters safely. Anything outside the unreserved letters, digits, and a handful of symbols must be rewritten as percent-encoding — a % sign followed by the byte value in hexadecimal. This tool turns ordinary text into that encoded form, and it also runs the reverse, turning sequences like %20 and %26 back into the characters they stand for.
Two encoding types cover the situations you actually meet. Standard encoding uses JavaScript's encodeURIComponent: every character except letters, digits, and - _ . ! ~ * ' ( ) is escaped, including structural characters like :, /, ?, #, and &, which is what you want for an isolated piece such as a parameter value. Form encoding follows the application/x-www-form-urlencoded rule a browser uses when it submits a form, and writes a space as + instead of %20.
When to use it
Reach for Standard encoding whenever a value goes inside a query string — a search term, an email address, or a redirect target that itself contains ?, &, or =. Encoding it stops those symbols from being read as URL structure and breaking the link. Because every structural character is escaped, encode the pieces of an address one at a time — encoding a finished URL would also escape its slashes and question mark, which is only right when that URL is itself a value inside another one. Form encoding matches the body of a POST request or a hand-built form payload, where spaces are written as + rather than %20. Decoding is just as common: pasting an encoded link from a log, an analytics report, or a redirect chain and reading where it actually points.
A concrete example
Take the text hello world & café. Under Standard encoding a space becomes %20, the ampersand becomes %26, and café — because é is stored as two UTF-8 bytes — becomes caf%C3%A9. Under form encoding that same space is written as +, giving hello+world. A summary line counts how many characters changed and what share of the text that is.
Notes and edge cases
Reserved characters (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) have meaning inside a URL. Both types escape : / ? # [ ] @ $ & + , ; = and leave ! ' ( ) * as they are, so encode a value before it goes into a query string, not the finished URL. Encoding is defined over UTF-8 bytes, so any non-ASCII character expands into several %XX groups. Avoid encoding a URL twice — a stray % that is already part of an escape turns into %25 and the link stops resolving. When in doubt, decode first to check whether the text is raw or already escaped.