Percent-encoding is how arbitrary text and bytes are made safe to carry inside a
URL. This tool converts any string into RFC 3986 %XX escapes and back again,
handling full Unicode through UTF-8 so the round trip is always lossless.
How it works
Encoding walks the UTF-8 bytes of your input. Any byte whose character is in the unreserved set is emitted as-is; every other byte becomes a percent sign followed by its two-digit uppercase hex value:
unreserved = A-Z a-z 0-9 - . _ ~
"a b!" -> "a%20b%21"
"é" -> "%C3%A9" (two UTF-8 bytes)
Decoding scans for a % followed by exactly two hex digits, collects those raw
bytes, then re-interprets the byte stream as UTF-8 to rebuild the original text.
Example and notes
The string name=José & co encodes to name%3DJos%C3%A9%20%26%20co. Note that
the reserved characters =, &, and the space are all escaped, which is exactly
what you want when placing a value inside a single query parameter. If you only
need to protect a whole URL’s structure rather than one component, fewer
characters need escaping, but encoding the full component set is always safe.