Binary to Text

Paste the blob somebody sent you and find out what it says — or why it will not decode

Runs 100% in your browserNothing is uploaded to a serverInstant results

Direction

Base

One group per

UTF-8 byte is what a computer means and round-trips anything. Character is what a puzzle means. Pure ASCII is identical either way.

Input

Output

Copied!

When a binary string refuses to decode, it is almost always one of four things

Decoding is where binary gets interesting, because encoding cannot really fail and decoding fails constantly. The string arrives from a puzzle, a forum post, a game, a tattoo photo or a homework sheet, and the four ways it goes wrong are worth knowing by sight.

The length is not a multiple of eight. Count the digits. If the total does not divide by eight, a digit was lost in the copy or the sender was using seven-bit groups, which was normal in the era when ASCII was seven bits and the eighth was a parity check. A stray leading zero disappearing from the front of a group is the single most common transcription error, because it looks like nothing.

It is not actually binary. If there is a digit above 1 anywhere, the string is decimal or hex. Long runs of digits with the occasional letter a to f are hex — switch the base rather than trying to fix the string. This page names the offending group rather than returning an empty box, because “nothing happened” tells you nothing about which of eight hundred characters was wrong.

The groups are the wrong width. Unseparated binary is only decodable if you know the width. Eight is the usual answer and the one assumed here. If eight produces plausible-looking gibberish — readable letters in the wrong order, or every character shifted — try reading it as code points instead, which is how binary written for a puzzle rather than for a computer is usually built.

The text was never ASCII. If the decode produces the right number of characters and half of them are replacement marks, the original was UTF-8 with multi-byte characters and something truncated it, or the groups were code points and you are decoding as bytes. The mode toggle is the fix; those two readings are genuinely different for anything above 127.

Five groups, one word

In
01001000 01100101 01101100 01101100 01101111
Out
Hello

ASCII in three bases

If a decode looks close but wrong, comparing a few groups against this table usually shows the offset immediately.

CharacterBinaryHexDecimal
(space)001000002032
!001000012133
"001000102234
#001000112335
$001001002436
%001001012537
&001001102638
'001001112739
(001010002840
)001010012941
*001010102A42
+001010112B43
,001011002C44
-001011012D45
.001011102E46
/001011112F47
0001100003048
1001100013149
2001100103250
3001100113351
4001101003452
5001101013553
6001101103654
7001101113755
8001110003856
9001110013957
:001110103A58
;001110113B59
<001111003C60
=001111013D61
>001111103E62
?001111113F63
CharacterBinaryHexDecimal
@010000004064
A010000014165
B010000104266
C010000114367
D010001004468
E010001014569
F010001104670
G010001114771
H010010004872
I010010014973
J010010104A74
K010010114B75
L010011004C76
M010011014D77
N010011104E78
O010011114F79
P010100005080
Q010100015181
R010100105282
S010100115383
T010101005484
U010101015585
V010101105686
W010101115787
X010110005888
Y010110015989
Z010110105A90
[010110115B91
\010111005C92
]010111015D93
^010111105E94
_010111115F95
CharacterBinaryHexDecimal
`011000006096
a011000016197
b011000106298
c011000116399
d0110010064100
e0110010165101
f0110011066102
g0110011167103
h0110100068104
i0110100169105
j011010106A106
k011010116B107
l011011006C108
m011011016D109
n011011106E110
o011011116F111
p0111000070112
q0111000171113
r0111001072114
s0111001173115
t0111010074116
u0111010175117
v0111011076118
w0111011177119
x0111100078120
y0111100179121
z011110107A122
{011110117B123
|011111007C124
}011111017D125
~011111107E126

Binary to Text questions

It decoded but the text is gibberish. What now?

Check the group width first — the commonest cause is a string built as 7-bit ASCII being read as 8-bit, which shifts everything after the first character. Then try code points mode, which reads each group as one whole character rather than one UTF-8 byte. If the gibberish is readable letters in a scrambled order rather than symbols, the string is text but it was reversed or shifted, and it is a cipher rather than an encoding problem.

Does it handle binary with no spaces?

Yes. Unseparated input is chopped into eight-digit groups, which is the right guess for the overwhelming majority of what people paste. Commas, line breaks and mixed whitespace all work as separators too. What cannot be guessed is a string of seven-bit groups run together with no separator, because nothing in the digits themselves says where one character stops.

Why does one emoji come out as four odd characters?

Because you are decoding as code points and the source was UTF-8 bytes. An emoji is four bytes in UTF-8, and reading those four bytes as four separate characters gives you four meaningless ones instead of the emoji. Switch to UTF-8 bytes mode and the four groups recombine into the single character they encode.