What percent-encoding does
URLs may only contain a limited set of characters. Percent-encoding (URL encoding) lets you safely put spaces, accented letters, emoji and reserved punctuation into a URL by replacing them with % followed by the two hex digits of each UTF-8 byte. This tool encodes and decodes in both directions, with a scope switch for the two situations that matter.
How it works
There are two encoding rules, matching the two JavaScript builtins:
Component (encodeURIComponent): escapes everything except
A-Z a-z 0-9 - _ . ! ~ * ' ( )
so & = ? / # : @ are all percent-encoded.
Full URI (encodeURI): additionally leaves the reserved
delimiters ; , / ? : @ & = + $ # untouched
so a complete URL keeps working.
For any character outside the safe set, the tool first encodes it to UTF-8 and then percent-encodes each resulting byte. Decoding reverses this, reading %XX triplets, reassembling the UTF-8 bytes, and rendering the original characters.
Example and notes
The query value Geo Café & co should use Component scope, producing Geo%20Caf%C3%A9%20%26%20co — note the ampersand becomes %26 so it is not mistaken for a parameter separator, and the é expands into two bytes %C3%A9. If you instead encode an entire URL such as https://x.com/a b?q=1, use Full URI scope so the ://, /, ? and = are preserved. Decoding rejects malformed escapes like %2 or %ZZ with a clear error rather than silently corrupting the text.