Loading the interactive tool… It runs in your browser — if it doesn't appear, enable JavaScript.
Convert text into binary and back, and the same for hexadecimal, octal and decimal. Binary output is grouped into 8-bit bytes and hex into pairs; when decoding, whitespace between groups is optional.
Characters are converted through their UTF-8 bytes rather than their character codes. That's what makes it correct for anything beyond basic Latin: tools that read character codes directly break on emoji, which are stored as surrogate pairs and come back as two broken halves. Here every character round-trips, and invalid byte sequences produce a clear error rather than a string of replacement characters.
Frequently asked questions
How do I convert text to binary by hand?
Take each character's byte value and write it in base 2, padded to 8 digits. Capital A is 65 in ASCII, which is 01000001. It gets more involved beyond ASCII: characters outside the basic Latin range use two to four bytes each under UTF-8, which is why this tool encodes properly rather than one byte per character.
Why do emoji break in other binary translators?
Because they convert JavaScript character codes rather than UTF-8 bytes. An emoji is stored as a surrogate pair — two code units that are meaningless individually — so converting each in turn produces values that don't decode back to anything. This tool encodes the real UTF-8 bytes, so emoji survive the round trip.
Does the spacing between bytes matter when decoding?
Only as a separator. Binary is read in whitespace-separated groups, so "01001000 01101001" works. Each group must fit in one byte — a value over 255 is reported as an error rather than being silently truncated.
What's the difference between binary, hex and octal here?
Only the base used to write the same bytes. One byte is 8 binary digits, 2 hex digits, or up to 3 octal digits. Hex is the compact form programmers usually work in; binary is what people mean when they say "binary code".