Baudot / ITA-2 Encoder

Encode ASCII text to Baudot/ITA-2 5-bit teleprinter code

Free Baudot ITA-2 encoder and decoder. Convert text to the 5-bit Baudot-Murray (ITA-2) code used by teleprinters and TTY, with automatic LTRS and FIGS shift handling, and decode 5-bit groups back to text. Runs entirely in your browser. It runs free in your browser on Gera Tools, with nothing uploaded.

Last updated Source: Gera Tools

What is Baudot code?

Baudot code is an early 5-bit character encoding for teleprinters, devised by Emile Baudot and later refined by Donald Murray. The standardised form, ITA-2, became the dominant teleprinter and Telex code for much of the 20th century.

Baudot code, in its standardised ITA-2 form (the Baudot-Murray code), packs each character into just five bits. It powered teleprinters, Telex networks, and amateur radio teletype (RTTY) for decades. This tool encodes text to ITA-2 5-bit groups and decodes them back, handling the all-important shift states automatically.

Where Baudot/ITA-2 appears today

Although Baudot has been superseded by ASCII, UTF-8, and virtually every modern encoding, it retains genuine relevance in several places. Amateur radio operators using RTTY (radioteletype) still transmit ITA-2 over shortwave. Older TTY (teletypewriter) systems for the hearing-impaired used Baudot in earlier implementations. Some legacy industrial telemetry systems and time-signal encoders use Baudot-derived protocols. Historians and archivists working with 20th-century telegraph records encounter ITA-2 routinely. If you are learning about character encodings or historic data communications, this encoder lets you test the real algorithm on real input.

How it works

Five bits provide only 32 distinct codes — not enough for 26 letters plus 10 digits plus punctuation and control characters. ITA-2 overcomes this with two shift states. Most code values mean one thing in the letters (LTRS) set and another in the figures (FIGS) set. For example the code 10000 is T in letters mode and 5 in figures mode.

Two reserved codes switch between the states: 11111 selects LTRS and 11011 selects FIGS. When encoding, the tool tracks the current shift and emits a shift code only when the next character belongs to the other set, exactly mirroring how a real teleprinter minimises wasted characters. Space, carriage return, and line feed share the same code in both sets, so they never trigger a shift.

Decoding

Decoding reads each 5-bit group in order. A LTRS or FIGS code updates the current shift state; any other group is looked up in the active set’s table and appended to the output. Groups that are not exactly five binary digits are flagged so malformed input is visible.

Example

GERA 42 encodes (in letters mode first) to:

11111 11010 00001 01010 00011 00100 11011 01010 10011

The leading 11111 is the LTRS shift, then G E R A and a space follow, the 11011 switches to FIGS, and 4 2 are sent. Decoding the groups reproduces GERA 42 exactly. Everything is computed locally in your browser.

Shift state traps to watch for

One practical difficulty when working with Baudot manually is that the shift state is stateful — it carries over from one character to the next. If you drop a FIGS or LTRS code from a stream, every character that follows is misinterpreted until the next explicit shift code appears. This is why real teleprinters periodically emitted “idle” shift codes to resynchronise.

When decoding a stream with transmission errors, the tool will show the misread characters rather than inventing a correction — which is the correct behaviour, since there is no way to know where a corrupted stream went wrong without additional context. For studying transmission errors or building decoders that handle corruption, seeing the raw misread output is more useful than a silent best-guess.

Character limitations of 5-bit encoding

ITA-2 supports only 58 printable codes across two shift states. Lower-case letters are not available (everything is uppercase), and most accented characters, mathematical symbols, and language-specific characters have no representation. The encoder converts lower-case input to upper-case silently and reports any character it cannot represent, so you always know what was dropped.