Ever typed a non-English word into an address bar and found it turned into a string like %ED%95%9C%EA%B8%80 when copied? Here's why.
A URL was originally ASCII-only
The URL standard (RFC 3986) only permits letters, digits, and a handful of symbols to appear literally. A non-ASCII character or a space has to be converted to UTF-8 bytes first, then each byte represented as % followed by two hex digits โ percent-encoding.
Reserved characters
Characters like ?, &, =, #, and / carry special meaning in a URL's structure (separating a query string, marking a fragment, and so on), so putting one of them into a value as literal data requires encoding it, or the URL won't parse as intended.
Where this comes up in practice
This is common when passing a search term containing non-English text or a symbol like & as a query parameter to an API, handling a URL with a space in the filename, or decoding an encoded URL from another service back into human-readable form.