Encode and decode Base64, base64url and MIME with UTF-8-safe text for Arabic and emoji
URL Encoder & Decoder
Percent-encode and decode URLs in RFC 3986, encodeURIComponent, encodeURI and form (+ for space) modes, with URL parsing, query parameter table and punycode domain conversion.
Workspace
Modes differ in which characters stay unencoded; details are in “How the result is calculated”.
Result
URL components
Query parameters (decoded)
International domain names (IDN ↔ punycode)
How the result is calculated
Text is converted to UTF-8 bytes and every byte outside the allowed set becomes an uppercase %XX. Sets: RFC 3986 keeps only A-Z a-z 0-9 - . _ ~; encodeURIComponent also keeps ! * ' ( ); encodeURI additionally keeps the structural characters ; , / ? : @ & = + $ #; form (WHATWG) keeps A-Z a-z 0-9 * - . _ and turns space into +. When decoding, the bytes are checked as valid UTF-8 and a note appears if %XX sequences remain (double encoding). International domains are decoded with Punycode (RFC 3492); the reverse direction uses the browser URL parser.
ß and joiners), so ASCII conversion depends on the browser URL parser. In encodeURI mode escapes of reserved characters are deliberately left encoded. Secrets in URLs (tokens, passwords) are never sent to a server, but do not paste them in public places.FAQ
What is the difference between encodeURI and encodeURIComponent?
encodeURI leaves URL structure characters (/ ? & = #) because it encodes a whole URL; encodeURIComponent encodes them because it is meant for a single value such as a query parameter.
Why does a space become +?
In form encoding (application/x-www-form-urlencoded) a space is written +, while in a URL path it is %20. Choose the matching mode.
What is double encoding?
Encoding already-encoded text again, so %20 becomes %2520. The tool warns when %XX sequences remain after decoding.


