IBM 80-column Hollerith — type text to encode, hover columns to inspect, click holes to toggle
Reading and interpreting IBM Hollerith punch cards
An IBM 80-column punch card has 80 columns (left to right) and 12 rows. Columns are numbered 1–80; rows are numbered from top: 12, 11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Each column encodes one character.
The top three rows (12, 11, 0) are called zone rows. The bottom nine rows (1–9) are called digit rows. Characters are encoded by punching specific combinations.
A card reader detected holes as each column passed a row of wire brushes — completing an electrical circuit wherever a hole was present.
Herman Hollerith's original code was extended by IBM into a 12-row system. The scheme uses three zones:
Row 12 Letters A–I (12 + digit 1–9)
Row 11 Letters J–R (11 + digit 1–9)
Row 0 Letters S–Z (0 + digit 2–9)
No zone Digits 0–9 (single punch in that row)
A space character has no punches at all — an entirely unpunched column.
The IBM 80-column card measured exactly 7⅜" × 3¼" — chosen to fit inside a standard U.S. dollar-bill envelope of the 1920s.
Cards were made of stiff paper stock, typically 0.007" thick. A standard card deck of 2,000 cards weighed about 10 lbs.
The notched corner at the top-left was a physical orientation guide — operators could spot a misaligned card by sight.
The 80-column width of the punch card directly determined the default terminal line width — still 80 characters in most terminals today.
FORTRAN (1957) was designed around 80-column cards, reserving columns 1–5 for statement labels, column 6 for continuation marks, and columns 7–72 for code.
COBOL programs were similarly structured — column positions carried meaning enforced by the compiler itself.
Complete Hollerith character encoding table — row punch patterns for all supported characters
| Char | Punches | Zone |
|---|
Rows are numbered top to bottom: 12, 11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
Zone rows (12, 11, 0) at the top — also called the "Y", "X", and "0" zones in some documentation.
Digit rows (1–9) at the bottom — a single punch in row N encodes the digit N. Row 0 alone encodes the digit 0.
This app uses the simplified Hollerith/EBCDIC-compatible subset covering A–Z, 0–9, and space — the core characters of 1960s FORTRAN and COBOL programs.
Full EBCDIC added punctuation characters using multi-punch combinations in zone rows, but these were not standardized across all IBM card readers.
The card reader processed cards at up to 1,000 columns per second on high-speed models — about 12.5 cards/second for a full 80-column card.
From Jacquard looms to the legacy that still shapes every terminal you open today