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 browser•Nothing is uploaded to a server•Instant 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
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
01001000 01100101 01101100 01101100 01101111
Hello
ASCII in three bases
If a decode looks close but wrong, comparing a few groups against this table usually shows the offset immediately.
| Character | Binary | Hex | Decimal |
|---|---|---|---|
| (space) | 00100000 | 20 | 32 |
| ! | 00100001 | 21 | 33 |
| " | 00100010 | 22 | 34 |
| # | 00100011 | 23 | 35 |
| $ | 00100100 | 24 | 36 |
| % | 00100101 | 25 | 37 |
| & | 00100110 | 26 | 38 |
| ' | 00100111 | 27 | 39 |
| ( | 00101000 | 28 | 40 |
| ) | 00101001 | 29 | 41 |
| * | 00101010 | 2A | 42 |
| + | 00101011 | 2B | 43 |
| , | 00101100 | 2C | 44 |
| - | 00101101 | 2D | 45 |
| . | 00101110 | 2E | 46 |
| / | 00101111 | 2F | 47 |
| 0 | 00110000 | 30 | 48 |
| 1 | 00110001 | 31 | 49 |
| 2 | 00110010 | 32 | 50 |
| 3 | 00110011 | 33 | 51 |
| 4 | 00110100 | 34 | 52 |
| 5 | 00110101 | 35 | 53 |
| 6 | 00110110 | 36 | 54 |
| 7 | 00110111 | 37 | 55 |
| 8 | 00111000 | 38 | 56 |
| 9 | 00111001 | 39 | 57 |
| : | 00111010 | 3A | 58 |
| ; | 00111011 | 3B | 59 |
| < | 00111100 | 3C | 60 |
| = | 00111101 | 3D | 61 |
| > | 00111110 | 3E | 62 |
| ? | 00111111 | 3F | 63 |
| Character | Binary | Hex | Decimal |
|---|---|---|---|
| @ | 01000000 | 40 | 64 |
| A | 01000001 | 41 | 65 |
| B | 01000010 | 42 | 66 |
| C | 01000011 | 43 | 67 |
| D | 01000100 | 44 | 68 |
| E | 01000101 | 45 | 69 |
| F | 01000110 | 46 | 70 |
| G | 01000111 | 47 | 71 |
| H | 01001000 | 48 | 72 |
| I | 01001001 | 49 | 73 |
| J | 01001010 | 4A | 74 |
| K | 01001011 | 4B | 75 |
| L | 01001100 | 4C | 76 |
| M | 01001101 | 4D | 77 |
| N | 01001110 | 4E | 78 |
| O | 01001111 | 4F | 79 |
| P | 01010000 | 50 | 80 |
| Q | 01010001 | 51 | 81 |
| R | 01010010 | 52 | 82 |
| S | 01010011 | 53 | 83 |
| T | 01010100 | 54 | 84 |
| U | 01010101 | 55 | 85 |
| V | 01010110 | 56 | 86 |
| W | 01010111 | 57 | 87 |
| X | 01011000 | 58 | 88 |
| Y | 01011001 | 59 | 89 |
| Z | 01011010 | 5A | 90 |
| [ | 01011011 | 5B | 91 |
| \ | 01011100 | 5C | 92 |
| ] | 01011101 | 5D | 93 |
| ^ | 01011110 | 5E | 94 |
| _ | 01011111 | 5F | 95 |
| Character | Binary | Hex | Decimal |
|---|---|---|---|
| ` | 01100000 | 60 | 96 |
| a | 01100001 | 61 | 97 |
| b | 01100010 | 62 | 98 |
| c | 01100011 | 63 | 99 |
| d | 01100100 | 64 | 100 |
| e | 01100101 | 65 | 101 |
| f | 01100110 | 66 | 102 |
| g | 01100111 | 67 | 103 |
| h | 01101000 | 68 | 104 |
| i | 01101001 | 69 | 105 |
| j | 01101010 | 6A | 106 |
| k | 01101011 | 6B | 107 |
| l | 01101100 | 6C | 108 |
| m | 01101101 | 6D | 109 |
| n | 01101110 | 6E | 110 |
| o | 01101111 | 6F | 111 |
| p | 01110000 | 70 | 112 |
| q | 01110001 | 71 | 113 |
| r | 01110010 | 72 | 114 |
| s | 01110011 | 73 | 115 |
| t | 01110100 | 74 | 116 |
| u | 01110101 | 75 | 117 |
| v | 01110110 | 76 | 118 |
| w | 01110111 | 77 | 119 |
| x | 01111000 | 78 | 120 |
| y | 01111001 | 79 | 121 |
| z | 01111010 | 7A | 122 |
| { | 01111011 | 7B | 123 |
| | | 01111100 | 7C | 124 |
| } | 01111101 | 7D | 125 |
| ~ | 01111110 | 7E | 126 |
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.