Binary Code Translator01001000 01101001

Convert text ⇄ binary code. Switching views keeps your input, the encoding is always stated, and your data never leaves the browser.

INPUT
Waiting Paste something and the type is detected automatically
0 characters
Encoding & format (expand as needed)
Paste tolerance: line breaks, commas and 0x prefixes are ignored; the output header always states the exact settings used.
TRY AN EXAMPLE

Text encoding vs number bases — two different things. The text "42" is two characters and encodes to 00110100 00110010 in ASCII/UTF-8 (a "4" glyph and a "2" glyph). The number 42 is a value, written 101010 in binary. The tool detects which one you mean; the Bases view converts numbers, the Binary view converts text.

ONE INPUT, THREE OUTPUTS — THE SAME "Hi" (01001000 01101001)

QR code

Scanning returns exactly the chosen string — Hi with "Original text" selected, or the 0/1 characters with "Binary characters" selected. It encodes what you pick and never converts silently.

Open in the tool → Image · QR

Dot matrix

Black = 1, white = 0, read row by row, plus three corner markers so the grid can be located again. QR scanners cannot read it — bring it back with Read dot matrix….

Open in the tool → Image · Dot matrix

Signal tone

An FSK-modulated tone (ggwave, about 4.3 s) you can play and download as WAV — then restore into the input box with Read WAV…. Microphone receiving is planned, not in this version.

Open in the tool → Sound
How to read binary code, step by step

Reading binary text means undoing an encoding: the bits were produced by taking each character, turning it into a number, and writing that number in base 2. You reverse that in three steps.

The complete example: decode 01001000 01101001

StepWhat you doResult
1. Group into 8-bit bytesSplit the bits into blocks of eight01001000 | 01101001
2. Get each byte's valueRead each byte as a base-2 number (place values 128 64 32 16 8 4 2 1)01001000 = 72  ·  01101001 = 105
3. Map values to charactersLook the values up in the ASCII table72 = H  ·  105 = i
ResultHi

Worked arithmetic for step 2: 01001000 → 0×128 + 1×64 + 0×32 + 0×16 + 1×8 + 0×4 + 0×2 + 0×1 = 72.

Decode it yourself in the tool

01001000 01101001
Input type: binary · encoding: UTF-8 · grouped in 8-bit bytes

Binary numbers vs encoded text — don't mix them up

The bit string 101010 and the text encoding of "42" are different things:

  • The number 42 is a value. In base 2 it is 101010, in base 16 it is 2A. No character encoding involved.
  • The text "42" is two characters. Each character gets a byte: "4" → 00110100, "2" → 00110010, so the text is 00110100 00110010.

If someone hands you bits and says "decode this", they almost always mean encoded text (8 bits per character). If they say "what's this number in binary", they mean the value. Our converter detects which case your input is and states its interpretation in the result header — you can override it with the type selector.

ASCII and UTF-8: how they relate

ASCII defines 128 characters (values 0–127) and fits in 7 bits; files store one character per byte, so a leading 0 is added (H = 72 = 01001000). UTF-8 keeps every ASCII character at exactly the same byte value — English text looks identical in ASCII and UTF-8 — and uses 2–4 bytes per character for other scripts. For example the Chinese character 好 is 11100101 10100101 10111101 (3 bytes). That's why "each character is 8 bits" is only true for ASCII-range characters.

When decoding goes wrong — and what to do

1. Illegal characters in the bits

01001x00 contains an x. Nothing but 0, 1 and separators belongs in a bit string. Fix: remove or correct the character and check the source again — don't delete the position, replace it with the correct bit.

2. Incomplete length — bits don't divide by 8

01001000 0110100 has 15 bits. 15 is not a multiple of 8, so the byte boundaries cannot line up and any "decoding" is meaningless. What the remainder tells you: only that the length is wrong — e.g. 19 bits leaves remainder 3, so you are missing or have 3 extra bits somewhere. It cannot tell you which line lost them; you have to compare against the source, line by line. Our converter refuses to decode in this case, reports the remainder, and flags lines whose length differs from the majority.

Common mistake: "remainder 2, so line 2 lost 2 bits." No — the remainder says nothing about the location. A length check is a detector, not a locator.

3. Encoding mismatch

Some messages use 7-bit ASCII (7 bits per character, no leading zero). Decoded as 8-bit, the boundaries land in the wrong places and you get garbage or a "not valid UTF-8" error. Fix: if the total bit count divides evenly by 7 but not by 8, try the 7-bit ASCII option (the converter offers it in the error message). Multi-byte UTF-8 that starts mid-character fails the same way — realign to the start of the message.

Practice with verified examples → · Look up characters in the alphabet table →

Binary code alphabet — A–Z, 0–9 and symbols in 8-bit binary

This table shows how ASCII characters are written in binary. Each character maps to a decimal ASCII value from 0–127, and that value is written with 8 bits (padded with leading zeros). Click any row to copy its 8-bit binary code.

Scope note: this is the ASCII representation. UTF-8 uses these same single-byte values for A–Z, a–z, digits and symbols, but other writing systems (e.g. Chinese) take multiple bytes — not every piece of text is a sequence of 8-bit ASCII codes. See How to read binary code for details.

The full table

CharacterDecimal (ASCII)Binary (8-bit)Hex
A650100000141
B660100001042
C670100001143
D680100010044
E690100010145
F700100011046
G710100011147
H720100100048
I730100100149
J74010010104A
K75010010114B
L76010011004C
M77010011014D
N78010011104E
O79010011114F
P800101000050
Q810101000151
R820101001052
S830101001153
T840101010054
U850101010155
V860101011056
W870101011157
X880101100058
Y890101100159
Z90010110105A
a970110000161
b980110001062
c990110001163
d1000110010064
e1010110010165
f1020110011066
g1030110011167
h1040110100068
i1050110100169
j106011010106A
k107011010116B
l108011011006C
m109011011016D
n110011011106E
o111011011116F
p1120111000070
q1130111000171
r1140111001072
s1150111001173
t1160111010074
u1170111010175
v1180111011076
w1190111011177
x1200111100078
y1210111100179
z122011110107A
0480011000030
1490011000131
2500011001032
3510011001133
4520011010034
5530011010135
6540011011036
7550011011137
8560011100038
9570011100139
space320010000020
!330010000121
?63001111113F
.46001011102E
,44001011002C
-45001011012D
:58001110103A
;59001110113B
'390010011127
"340010001022
(400010100028
)410010100129
+43001010112B
/47001011112F
=61001111013D
<60001111003C
>62001111103E
@640100000040
#350010001123
$360010010024
%370010010125
&380010011026
*42001010102A

Tip: a row is highlighted on hover — click it to copy the 8-bit binary code.

How to convert your own name

Take the name ANN and look up each letter:

  1. A → ASCII 65 → 01000001
  2. N → ASCII 78 → 01001110
  3. N → ASCII 78 → 01001110

So ANN = 01000001 01001110 01001110 in 8-bit ASCII (3 bytes).

Try it with your own name

Type any text — the binary below is computed live in your browser with UTF-8, the same encoding the tool uses.

Where the values come from

ASCII assigns 65–90 to A–Z, 97–122 to a–z and 48–57 to 0–9. The lowercase letters are exactly 32 more than uppercase (A=65, a=97), which flips one specific bit — that's why a is 01100001 while A is 01000001.

Next: how to read a whole binary string →

Binary code examples you can verify

Every example below states the exact input, its type and encoding, and the correct result. Each was computed with standard UTF-8 encoding — not just by this site's own code — and every card opens the converter with that exact input and view preloaded.

One idea worth keeping: the number 42 and the text "42" are different inputs with different encodings. Both examples are below so you can compare them side by side.

Hi

01001000 01101001
2 bytes · UTF-8

Hello

01001000 01100101 01101100 01101100 01101111
5 bytes · UTF-8

I love you

01001001 00100000 01101100 01101111 01110110 01100101 00100000 01111001 01101111 01110101
10 bytes · UTF-8

Happy birthday

01001000 01100001 01110000 01110000 01111001 00100000 01100010 01101001 01110010 01110100 01101000 01100100 01100001 01111001
14 bytes · UTF-8

11100101 10100101 10111101
1 Chinese character · 3 bytes in UTF-8 (not 8-bit ASCII)

42

101010
The number 42 as a value (bases view): binary 101010 · hex 2A · octal 52

"42"

00110100 00110010
The text "42" — two characters, 2 bytes. Compare with the number above: same input meaning, different encoding.

Check them yourself

For any English text you can verify by hand with the alphabet table: look up each character's value and write it as 8 bits. For characters beyond ASCII (like 好) the UTF-8 encoding takes multiple bytes — the tool states the byte count in its result header so you can tell at a glance which case you're in. See How to read binary code for the full method.

What does a QR code contain?

A QR code encodes exactly the string you choose: encode Hi and scanning returns Hi; encode the binary characters 01001000 01101001 and scanning returns that string, which the receiver then decodes once more. In the Image view you pick between the two explicitly — the tool never converts silently.

Can signal tones be restored? What about dot matrices?

Signal tones use FSK modulation (ggwave, MIT license): the downloaded WAV can be restored to text with this tool's “Read WAV”. Live microphone receiving is planned and not in this version.

A dot matrix encodes the current bit string row by row with black = 1, white = 0. Matrices generated by this tool can be read back; QR scanners cannot read them, and restoring arbitrary images is not supported.

FAQ

Is my data uploaded? No. All conversion happens locally in your browser; QR codes, dot matrices and signal tones are generated on your device.

Why does it say “bits cannot be divided by 8”? The bit string is missing or has extra bits; decoding it anyway would only produce garbage. Check it against the source — this tool never pads silently.

Which bases are supported? Decimal, binary, octal and hexadecimal, with arbitrary precision and negative numbers (the view switches automatically based on the input type).