🔣Percent Encoding Converter

Convert string to percent-encoding

How to use the percent-encoding converter

Percent-encoding takes a character that cannot travel literally inside a URL or a form value, splits it into UTF-8 bytes, and writes each byte as a percent sign plus two hex digits. Only letters, digits, hyphen, underscore, period and tilde are unreserved; everything else has to be escaped. A single accented letter becomes two groups and most CJK characters become three, because that is how many bytes UTF-8 needs for them.

Three encode modes are offered. Standard encoding follows the browser default, which still leaves the exclamation mark, apostrophe, parentheses and asterisk untouched because an older specification treated them as safe. Strict encoding escapes those four as well so the output matches RFC 3986. Mismatched signatures in OAuth-style request signing usually come down to exactly this difference. Form encoding applies the strict rules and then writes spaces as plus signs, the way HTML forms submit them.

The table under the result lists only the characters that actually changed, with duplicates removed, and shows each one's code point, percent form and UTF-8 byte count, so you can see what made the string longer. Decoding turns percent sequences back into characters and reports a clear message when the notation is malformed.

Frequently Asked Questions

What is the difference between standard and strict encoding?

Standard encoding leaves the exclamation mark, apostrophe, parentheses and asterisk as they are, while strict encoding escapes those four as well. APIs that build request signatures usually expect the strict form.

Should a space become %20 or a plus sign?

%20 is correct inside a URL path or query. A plus sign only means space in HTML form submissions, so use the form encode button only when you need that format.

Why does one character turn into three groups?

UTF-8 needs three bytes for most CJK characters, and percent-encoding writes one group per byte. The table under the result shows the byte count for each character.