Convert binary to text

Paste any sequence of binary 1s and 0s and get the matching text back. The binary to text converter splits the input on whitespace, parses each chunk as a base-2 number, and emits the matching character via String.fromCharCode. Chunks can be 8-bit bytes or any other width that the parser accepts. The transform runs in your browser; nothing uploads.

Input
Line 1:1 LF cloud_done Saved locally
Result Binary to Text
0 lines 0 chars

Binary to text, plain and predictable

Binary to text decoding takes a string of 1s and 0s, splits it on any run of whitespace, and reads each chunk as a base-2 integer. Each integer becomes a single character via the browser native String.fromCharCode. The standard width is 8 bits per character (one byte), but the decoder happily accepts shorter or longer chunks: a 7-bit chunk decodes ASCII, a 16-bit chunk decodes a UTF-16 code unit, and a 21-bit chunk would decode a Unicode scalar value above the BMP.

Whitespace inside the input is treated as a delimiter, not as data. That means a stream like 01001000 01101001 decodes the same way as 01001000\n01101001 or 01001000\t01101001. Continuous strings without spaces are also accepted; the decoder splits them into 8-bit chunks from the left. If a chunk is not parseable as binary (contains a digit other than 0 or 1, for example), the output panel shows [invalid binary] so you can fix the source.

Empty input emits an empty string. Leading and trailing whitespace is trimmed before decoding. For the inverse direction, see text to binary. If you want hex instead of binary, see hex to text.

How to use convert binary to text

  1. 1Paste a binary stream into the input panel on the left.
  2. 2The decoded text appears in the output panel on the right as you type.
  3. 3Click Copy in the output header to copy the result.
  4. 4Click Download to save the result as a plain-text file.
  5. 5If the output reads [invalid binary], check that every chunk contains only 0 and 1.

Keyboard shortcuts

Drive TextResult without touching the mouse.

Shortcut Action
Ctrl FOpen the find & replace panel inside the input Plus
Ctrl ZUndo the last input change
Ctrl Shift ZRedo
Ctrl Shift EnterToggle fullscreen focus on the editor Plus
EscClose find & replace, or exit fullscreen
Ctrl KOpen the command palette to jump to any tool Plus
Ctrl SSave current workflow draft Plus
Ctrl PRun a saved workflow Plus

What this tool actually does

Whitespace is the chunk delimiter

The decoder collapses every run of whitespace (spaces, tabs, newlines) into a single space, trims the result, and splits on space to get the chunk list. That means single-spaced, double-spaced and line-broken input all decode to the same text. Mixed delimiters work too.

Char codes via String.fromCharCode

Each chunk is parsed with parseInt(chunk, 2) and passed straight to String.fromCharCode. That means values 0 to 65535 decode to a UTF-16 code unit. Values above 65535 do not survive without a surrogate pair, so above-BMP characters need explicit pairing.

Variable chunk width

The decoder accepts any chunk width, not just 8 bits. A 7-bit chunk decodes ASCII (1001000 -> H). An 8-bit chunk decodes Latin-1 / single-byte UTF-8. A 16-bit chunk decodes a UTF-16 code unit directly. The widths can even differ between chunks in the same input.

Invalid input shows a clear marker

If a chunk contains a digit other than 0 or 1, or fails to parse for any other reason, the output panel shows [invalid binary] instead of partial text. Fix the source and the output refreshes on the next keystroke.

Runs entirely in your browser

No upload, no server-side processing, no log of what you pasted. The decode runs on every keystroke via a single JavaScript pass. Long streams of a few hundred kilobytes still decode in under a second.

Worked example

Five 8-bit chunks decode to the five characters of Hello via String.fromCharCode.

Input
01001000 01100101 01101100 01101100 01101111
Output
Hello

Settings reference

Behaviour Effect on output
Chunk delimiter Any run of whitespace (space, tab, newline). Collapsed to a single space before split.
Chunk width Any width accepted. 7-bit ASCII, 8-bit Latin-1, 16-bit UTF-16 code units all decode.
Decoder Each chunk parses with parseInt(chunk, 2); the integer feeds String.fromCharCode.
Empty input Emits an empty string.
Leading/trailing whitespace Trimmed before split.
Invalid chunk Output shows [invalid binary]; no partial text is emitted.
Above-BMP characters Need an explicit surrogate pair; a single 21-bit chunk does not survive String.fromCharCode.

FAQ

Does it accept input without spaces between bytes?
It accepts the input, but it cannot guess the chunk width. A continuous stream like 0100100001101001 needs to be re-spaced first. Run a regex like (.{8}) with capture-and-replace in your editor to insert a space every 8 characters before pasting here.
What chunk width does the decoder use?
Whatever your input gives it. The decoder splits on whitespace and parses each chunk independently. So 1001000 (7 bits, ASCII H) and 01001000 (8 bits, also H) both decode the same. You can mix widths in the same input.
Why does the output read [invalid binary]?
A chunk in the input contains a character other than 0 or 1 after whitespace is stripped. Look for stray digits, hex characters, or commas in the source. The output refreshes the moment the input is valid binary again.
Is the binary sent anywhere?
No. The decode runs entirely in your browser via JavaScript. Nothing is uploaded, nothing is logged, no record of your text exists on our servers.
How do I go the other way?
Paste your text into text to binary. That tool converts each character to its 8-bit binary form, with options to pad bytes and to insert a space between chunks.