See the Bytes Behind Your Text
UTF-8 is how nearly all text is stored and transmitted — over 98% of web pages use it. It is a variable-length encoding: a character takes between one and four bytes depending on which character it is. This tool shows you exactly which bytes your text becomes, and turns bytes back into text. Everything runs in your browser.
Why is my text more bytes than characters?
Because only the original ASCII characters fit in a single byte. The word
café is four characters but five bytes, because é is encoded as
C3 A9. That gap is the cause of a lot of real bugs: a database column
declared as 20 bytes will not hold 20 accented characters, and an SMS or API
limit counted in bytes runs out sooner than the character count suggests.
| Character | Bytes | UTF-8 | Range |
|---|---|---|---|
A | 1 | 41 | ASCII, U+0000–U+007F |
é | 2 | C3 A9 | Latin, Greek, Cyrillic, Hebrew, Arabic |
中 | 3 | E4 B8 AD | Most of the rest, including CJK |
😀 | 4 | F0 9F 98 80 | Emoji and other supplementary planes |
This is also why an emoji sometimes counts as two characters in JavaScript: the language stores strings as UTF-16, where a four-byte UTF-8 character needs two 16-bit units. The byte count above is the UTF-8 one, which is what files and networks use.
What can I paste in to decode?
Hex bytes in whatever shape you have them — uppercase or lowercase, separated by
spaces or newlines, or one continuous run. 48 65 6C 6C 6F,
48656c6c6f, and a column of bytes one per line all decode to
Hello.
What does the � character mean?
That is U+FFFD, the replacement character, and it means the bytes you pasted are not
valid UTF-8. It usually appears when a sequence is cut short — C3
starts a two-byte character but nothing follows it — or when the bytes are really
in some other encoding such as Latin-1. It is a signal, not a failure: the decoder
substitutes it and carries on rather than giving up on the rest of your input.
How is this different from the Hex to Text Converter?
The transformation is the same one; the framing and the output casing differ. This page prints uppercase bytes and is about encoding — how many bytes a character costs and why. The Hex to Text Converter prints lowercase and is about hex as a format, with a reference table of common byte values. Use whichever matches what you are pasting into next. For a compact, text-safe encoding of binary data instead, see Base64 Encode & Decode, and for escaping text for a URL, URL Encode & Decode.
Last reviewed: August 2026