UTF-8 is the dominant encoding for representing Unicode text as raw bytes, using between one and four bytes per character depending on the code point. This tool takes text, breaks it down into its raw UTF-8 bytes, and writes each byte out as a percent-escaped hex pair like %E2%9C%93 — every single byte gets escaped, not just the ones outside the ASCII range. That's different from ordinary URL-encoding, which only escapes reserved or unsafe characters and leaves plain ASCII letters and digits alone. Decoding reverses the process, turning a percent-escaped byte sequence back into the original text.
Standard URL encoding (like encodeURIComponent) only escapes characters that are unsafe or reserved in a URL, leaving letters, digits, and a few symbols untouched. This tool instead escapes every byte of the UTF-8 representation, including plain ASCII letters, so you can see the exact byte-level structure.
UTF-8 uses a variable number of bytes per character — 1 byte for basic ASCII, up to 4 bytes for characters like emoji or many non-Latin scripts. Each of those bytes is shown as its own %XX hex group in the encoded output.
If the percent-escaped input doesn't form valid UTF-8 byte sequences, decoding fails and the tool shows an error banner instead of garbled or incorrect text.