Underneath every message is a number, and underneath every number, bits. This translator walks text ⇄ binary ⇄ hex in both directions with full Unicode support — type in either box and the other follows.
The encoding pipeline
"Hi" → H is Unicode U+0048 → UTF-8 byte 01001000 → done. ASCII characters ride in one byte; é takes two, 中 three, 🦍 four — UTF-8's variable-width design keeps English compact while reaching all 150,000+ Unicode characters. The per-character table shows each step for your actual text.
Hex: binary for human eyes
Sixteen values per digit means one hex character per 4 bits — a byte is exactly two. 01001000 compresses to 48. It's the same information at a quarter the width, which is why memory dumps, color codes and MAC addresses all speak hex. The format toggle switches the code box between the two representations of the same bytes.
Decoding with honest errors
Going backwards, the translator validates before decoding: stray characters are named, incomplete bytes are counted ("length must be a multiple of 8"), and byte sequences that aren't legal UTF-8 are refused rather than mangled into replacement characters. Debugging encoded data needs errors that point somewhere.
Bits beyond text
For pure numbers across bases — binary 1010 = decimal 10 = hex A — the number base converter handles arbitrary size via BigInt. Timestamps, the other famous byte-encoded values, decode in the Unix timestamp converter. Dots and dashes? That's the Morse translator.
UTF-8 throughout; table shows the first 60 characters.