%20, %3D, etc.) back to characters.URLs may only contain a safe set of ASCII characters. Any character outside this set — spaces, Unicode, reserved characters like &, =, and # — must be percent-encoded: each byte of the character's UTF-8 representation is replaced by a % followed by two hex digits. This tool encodes and decodes URL components and full URLs, with options for both encodeURIComponent (component) and encodeURI (full URL) semantics.
encodeURI encodes a full URL — it leaves the URL structure characters intact (:, /, ?, #, &) and encodes only characters that are unsafe in any URL position. encodeURIComponent encodes everything except unreserved characters (A–Z, a–z, 0–9, -, _, ., ~) — designed for encoding individual query parameter keys and values before assembling a URL. Using the wrong one is a common source of broken links and API call failures.
%20, %2B, %3D+ vs %20 space convention based on context%20 is the standard percent-encoding of a space character. The + convention is specific to application/x-www-form-urlencoded (HTML form POST bodies and query strings) where + is interpreted as a space. In path segments, + is a literal plus sign, not a space.
Unreserved characters that never need encoding: A–Z, a–z, 0–9, -, _, ., ~. All other characters must be percent-encoded when used in positions where they are not their "reserved" structural role.
Unicode characters are first converted to their UTF-8 byte sequence, and then each byte is percent-encoded. The emoji 😀 is U+1F600 → UTF-8 bytes F0 9F 98 80 → URL: %F0%9F%98%80.
Domain names are encoded using Punycode (RFC 3492) — not percent-encoding. The domain 例子.com becomes xn--fsqs375a.com in Punycode. URL path and query parameters use percent-encoding; domain names use Punycode.
See also the URL Parser, URL Extractor, and the HTML Encoder.