The Virtual Keypunch – Make Your Personal Punch Card



Type and download your personal punch cards — the Web2.0 of “big iron” age!

“The Virtual Keypunch” is a free service related to Google60 – Search Mad Men Style.
Get yourself a “real business” card, or even print gift-cards for your geeky friends.

Scan and parse a card-image at The Virtual Card Reader!
New: Batch punch, read and process cards using the Virtual Card Read-Punch!

All scripts and images © 2012 N. Landsteiner, mass:werk – media environments,


•  JavaScript, html5, CSS, hand-crafted bytes & pixels
•  Font-images based on “M+ M Type-1 Regular” font by the M+ Fonts Project – <>
•  The splash-screen utilizes a photo by Marcin Wichary– <>


Just type your text and hit the “enter” key to get your personal punch card for free.
Please mind that only the limited character-set of an original keypunch (type IBM 029) is supported. All other characters will be automatically translated to the most related character available. (Sorry, like with the original, only western/latin characters are supported.)

There are two character-sets suppored on the Virtual Keypunch:

The page fades from the splash-screen some seconds after loading. You may return to the splash-screen by clicking the logo at the very top.

Requirements: Any browser supporting the html5-canvas-element.

Card Types:
The following types of cards are available: Standard, FORTRAN Statement, COBOL, DATA and SYMBOLIC.

The FORTRAN card provides special fields in columns
•  1–5 ......... "Statement Number", also used to indicate a comment by the character "C",
•  6 ............. "Continuation", used to identify a card as a continuation of the previous card/statement,
•  7–72 ....... 66 columns to hold the FORTRAN statement(s),
•  73–80 .... "Identification", used for sorting or collation, ignored by the FORTRAN compiler.

The first tab-stop in FORTRAN-mode is at column 5 (before column "Continuation"), any other tab-stop is at every 6 columns, providing another stop just at the beginning of the identification field.
To advance on a fresh card to the start of a normal FORTRAN statement, hit <TAB> twice.

The COBOL card provides special fields at columns
•  1–6 ......... Line sequence number,
•  7 ............. Continuation mark, comment (asterisk), debug mark, or form-feed,
•  8–11 ....... Area "A", division names, section names, paragraph names, FD entries, 01 level numbers must go here,
•  12–72 ..... Area "B" for more program text
•  73–80 .... "Identification" (OS-sequence number), used for sorting or collation, ignored by the compiler.

Suitable tab-stops are provided in COBOL-mode to advance to the next field.
Inside area "B" tab-stops are at every 10th punch column.

Card identificators / OS-sequence numbers (columns 73–80) used for programs were usually of the following form:
•  Columns 73–75: program/problem number,
•  Columns 76, 77: page number of coding sheet,
•  Columns 78–80: card number.

The "Standard" card is just a plain card without special markings. The DATA card is quite similar with imprints for the usual 10-columns data fields. For these cards tab-stops are provided at every 10th column.

The SYMBOLIC card is a card for vintage assembler coding and the PYTHON card is a bit of modern retro fiction.

Multiple Punches / Overpunching:
Press the “MULT PCH” key (keyboard equivalent: ESC) to enter multiple-punch-mode.
Now enter any number keys (09) for the regarding rows, or the hyphen (-) for row 11, or the ampersand (&) for row 12. (Rows 11 and 12 are located between the printing zone at the very top and row 0; see the illustration below.)
Release “MULT PCH” to advance to the next column.

Note: Using the virtual keyboard you may also use ":" for "&" in “MULT PCH”-mode, so all zones may be addressed by the first row of keys without any modifiers.

Punch Card Zones and the IBM 029 Code (“Hollerith Code”):
(use "&" – "9" for multiple-punch-mode)

__________________________________________________________________ /&-0123456789 ABCDEFGHIJKLMNOPQR/STUVWXYZ ¢.<(+|!$*);¬,%_>?:#@'=" 12 Y / x xxxxxxxxx xxxxxx 11 X| x xxxxxxxxx xxxxxx 0| x xxxxxxxxx xxxxx 1| x x x x 2| x x x x x x x 3| x x x x x x x x 4| x x x x x x x x 5| x x x x x x x x 6| x x x x x x x x 7| x x x x x x x x 8| x x x x xxxxxxxxxxxxxxxxxxxxxxx 9| x x x x |_____________________________________________________________________ Blank/Space is an empty column. For IBM/360 column binary format equivalents see below.  

•  q=<text> – the card will be automatically punched with the given text. •  t=<text> – synonym for parmeter “q”.
E.g., Get Don Draper's card by this link.
•  b=<base64-encoded-text> – optionally the text may be base64-encoded in order to not disclose the message early.
This method is used by “The Virtual Keypunch” for its forward-links.
•  c=<card-type> – the only value currently recognized is "fortran" for a FORTRAN statement card.

Note: The “MULT PCH” key is represented internally by the form-feed-character (ASCII 12, URI-escaped %0C).

•  Any URL ("www...", "http://...") detected in the text will be presented as a separate link in the resulting dialog. Therefor a link to a card may be used to foward a URL. Case will be preserved in linked cards in order to provide working URLs, even if the text will be printed upper-case only. (If a URL is found to be all upper-case, it will be transformed to its lower-case equivalent.)

•  Also, an e-mail-address and/or Twitter-name in the text will be presented as a mailto-link or a link to the regarding Twitter-profile respectively. So you may provide a link to an entire v-card with working links.

•  A search-link to Google60 will be generated for any text prefixed by "SEARCH", or "SEARCHDATA", or "SEARCHTERM", followed by ">", ">>", a colon (":"), and/or any number of spaces/blanks.

•  A card containing just an arithmetic expression preceded by "EXEC", "EXECUTE", "EVAL", "CALC", a question mark, or a simple equation sign will yield a respective result in the results dialog.

•  The "-e" Falg Trick: Use the path-prefix "/-e/" to submit a calculation directly in the URL.
For example, call*25.5 to execute the term "2 + 3 * 25.5" and receive a nicely formatted card together with the respective result.

•  You may also print a lace card with:*lace
(Mind the leading asterisk! Synonyms: *whoopee, *doily. If you don't know what a lace card is, use the search to learn more about it.)

Advanced Usage

•  IBM/360 Column Binary Format
“The Virtual Keypunch” supports the IBM/360 column binary format in both LittleEndian (standard) and BigEndian byte-order, for manual input and when called with a URL-parameter as well.

The IBM/360 column binary format uses 2 bytes to represent 12 bits to be printed in a vertical column of the card. The following table gives the encoding scheme for the bytes as they appear in reading direction in LittleEndian-order:

________Byte 1________ ________Byte 2________ Position/row: J K Y X 0 1 2 3 L M 4 5 6 7 8 9 Punches: * * * * * * * * * * * * Bit number: 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 Dec value: 32 16 8 4 2 1 32 16 8 4 2 1 Hex value: 20 10 8 4 2 1 20 10 8 4 2 1

Note: Rows J, K, L, and M are ignored, rows X and Y are also known as rows 11 and 12 and located between the printing zone at the very top and row 0 (see row numbers on the card). Binary 0 is a blank column.

•  Binary Mode By Manual Input:
Press the “BINARY” key on the visual keyboard or use TAB + SHIFT on a real keyboard. Enter a 4-digits hexadecimal number for the pattern to be punched and confirm the dialog either by hitting “Enter” or by pressing the button “Enter”. Please mind that only valid hexdecimal numbers are accepted, the Virtual Keypunch will issue a “bing” otherwise.

•  Binary Mode With URL-Parameters:
(Use "q" or "t" for plain-text, "b" for base64-encoded input, see above).
The vertical tabulation character (ASCII 11, VT, URI-escaped %0B) is used to switch from character mode (default) to binary and back again. To indicate BigEndian byte-order (“swapped binary”), this must be followed by an ampersand ("&", URI-escaped %26).
The binary part itself must consist of a stream of words of 4 hex characters representing a 2-byte number each, any white-space is ignored.

Example: The following will make a nice gift card  (URI-encoded, white-space added for clarity):
%0B ("\") => switch to binary
0004 0004 0014 0014 021C 023C 033D 173D
3F3F 173D 033D 023C 021C 001C 0014 0014
0004 0004
%0B ("\") => switch back to character-mode ("+" = space, alt.: %20)


Please note that “The Virtual Keypunch” does not replicate the keyboard of an original keypunch and its specific operations but rather uses the keyboard layout of a teletype.
For a detailed description of a real keypunch see the manuals below.

Further Reference

For operations and usage of the IBM Model 29 and the IBM Model 129 keypunchs see the following manuals:

•  IBM 29 Card Punch / Reference Manual (GA24-3332-6) – (PDF, 8.5 MB)
•  IBM 129 Card Data Recorder / Operator's Reference Manual (GA22-6968-0) – (PDF, 10.7 MB)
•  IBM 129 Card Data Recorder / Machine Description (GA22-6980-1) – (PDF, 2.4 MB)

For a quick overview see also:
•  The Compleat Idiot's Guide to the IBM Model 29 Keypunch – (archived copy)


•  “Google60 – Search Mad Men Style” – <>
•  “The Virtual Card Reader” – revert punch cards to text – <>
•  Visit Marcin Wichary's photostream on Flickr for great photos and some of the best images on computer history.


Copyright 2012 Norbert Landsteiner, mass:werk – media environments.
All rights reserved. No copying, no unauthorized providing or hosting.