Turn any text into 8-bit binary groups, then read raw bits as UTF-8 text again. Strict validation catches malformed bytes before they corrupt output.
Every group here is exactly 8 bits wide, and that rule is what makes the round-trip trustworthy. The Text to Binary Converter runs your input through a UTF-8 encoder to obtain genuine bytes, then prints each one zero-padded. Reading UTF-16 code units instead, which an earlier build did, produced groups wider than 8 bits the moment any character above U+00FF appeared, and the decoder then rejected text the encoder had just written.
Decoding applies the same rule in reverse. Groups are split on whitespace, each is checked for exactly eight characters drawn from 0 and 1, and the assembled bytes pass through a strict UTF-8 decoder rather than a lenient one. That strictness is the feature. A lenient decoder converts a corrupt sequence into replacement characters and lets you believe the decode succeeded.
Under the panes a line reports the conversion in both units, reading 12 characters → 14 bytes when your input holds a couple of accented letters. Both directions run against the string in the page, so nothing is posted to a server.
Leave the toggle on Text → Binary and type Hi. The Binary Output pane fills with 01001000 01101001. H is 72 in decimal, which is 64 plus 8, so exactly two bits are set. i is 105. Press the swap arrow, paste those 16 bits back, and Hi returns. Add a euro sign to the input and the byte count climbs by three rather than one, because € is stored as 11100010 10000010 10101100.
1001000 and the pane answers Invalid binary group: "1001000". Each byte must be exactly 8 bits (0s and 1s).These bytes aren't valid UTF-8 text. A lone 11000010 lead byte with nothing following it does exactly that.63 characters → 63 bytes