Code 39

Code 39 is a barcode that can encode uppercase letters (A to Z), digits (0 to 9), decimal point, some special characters (- $ / + %) and space. Some standards, implemented on the top of code 39, are capable to encode the full ASCII set[1]. The barcode itself does not contain a check digit but a single erroneously interpreted bar does not generate another valid character. Since there is no need to generate a check digit, it can easily be integrated into existing printing system by adding a barcode font to the system or printer and then printing the raw data in that font.

This applet converts user input into Code 39. If your input cannot be represented in Code 39, the applet shows red crossing lines.

Code 39 label (symbol) needs comparatively much space. This makes difficult or impossible to label smaller goods or other objects. However, Code 39 is still widely used and can be decoded with virtually any barcode reader.

Code 39 (also known as 3 of 9 bar code) is a variable length, discrete, alphanumeric bar code. Its character set contains 43 meaningful characters. Each character is composed of nine elements: five bars and four spaces. Three of the nine elements are wide (binary value 1), and six elements are narrow (binary value 0). An additional common character (*) is used for both start and stop delimiters.

Code 39 was developed by in 1974. Their original design included two wide bars and one wide space in each character, resulting in 40 possible characters. Setting aside one of these characters as a start and stop pattern left 39 characters, which was the origin of the name Code 39 [2]. Punctuation characters were later added which deviated from this pattern, expanding the character set to 43 characters. Code 39 was later standardised as ANSI MH 10.8 M-1983 and MIL-STD-1189[3].

When using a Code 39 font, some software/hardware combinations have problems encoding the space character correctly and instead print a physical space. This can sometimes be resolved by replacing all spaces with the character = (equal sign). The correctly encoded space character will then show up in the actual barcode.[4]

The width ratio between narrow and wide can be chosen between 1:2 and 1:3.


The * character presented below is not a true encodable character, but is the start and stop symbol for Code 39. The asymmetry of the symbol allows the reader to determine the direction of the barcode being scanned. This code is traditionally mapped to the * character in barcode fonts and will often appear with the human-readable representation alongside the barcode.

In standard Code 39, each supported symbol is directly replaced by its agreed barcode pattern. Extensions to this standard like Code 39 mod 43[5] use the additional conversion, encoding directly unsupported ASCII characters with more than one Code 39 character.

This code is also known as "USS Code 39","Code 3 of 9", "USD-3" and "Alpha39", "Type 39" and "Code 3/9", .

External links


  1. 1 Extended Code 39
  2. 2 Allais, D. C. (2006). AIDC Memoirs, available at
  3. 3 MIL-STD-1189 Standard Department of Defense Barcode Symbology
  4. 4
  5. 5 Wikipedia article on code 39, come content reused uder CC-BY-SA


This web page reuses material from Wikipedia page Code_39 under the rights of CC-BY-SA license. As a result, the content of this page is and will stay available under the rights of this license regardless of restrictions that apply to other pages of this website.