Code 39


Code 39 is one of the earliest and most widely used barcode. It is variable length, which means that you will be able to encode any number of characters in the barcode. It supports alphanumeric characters and is used in a wide variety of applications.

If you have a need for using barcodes in your organization and do not want to get into the details, Code 39 is one of the recommeded barcodes.

Code 39 barcodes begin and end with the '*' character. This character is also called the start/stop character. Code 39 is typically not used with a check character and is thus one of the barcodes that you will be able to use easily without an Encoder. A modulo 43 check character is available for use if security is required.

Code 39 ASCII Barcode

Although the Code 39 barcode only supports 43 characters, it is possible to employ a substitution mechanism based on industry specifications to encode all the 128 ASCII characters. The Code 39 barcode that employs this mechanism is known as the Code 39 Extended barcode or Code 39 ASCII barcode.

ConnectCode Code 39 barcode font is able to support this Code 39 ASCII barcode. However, as the substitution mechanism is not easy to perform manually, it is recommended to use this barcode through the Software Encoder or the supplied VB formulas.

ConnectCode Code39 Font

ConnectCode Code 39 barcode supports up to seven different heights. These barcodes with seven different heights are provided in seven fonts with different names. The barcodes name are appended with characters like "S1" or "S2" etc... with each one of them representing a different height. The list below illustrates the seven different fonts that is supplied for Code 39.
  • CCode39_S1
  • CCode39_S2
  • CCode39_S3
  • CCode39_S4
  • CCode39_S5
  • CCode39_S6
  • CCode39_S7
Additionally, ConnectCode also provides a font for Code 39 that includes human text. It is shown below.
  • CCode39_HS3

Code 39 Character Mappings

All characters supported by the barcode are as shown below. All of them have a simple a direct mapping.
Data Character Barcode Font Character Code39 Value
'0''0'0
'1''1'1
'2''2'2
'3''3'3
'4''4'4
'5''5'5
'6''6'6
'7''7'7
'8''8'8
'9''9'9
'A''A'10
'B''B'11
'C''C'12
'D''D'13
'E''E'14
'F''F'15
'G''G'16
'H''H'17
'I''I'18
'J''J'19
'K''K'20
'L''L'21
'M''M'22
'N''N'23
'O''O'24
'P''P'25
'Q''Q'26
'R''R'27
'S''S'28
'T''T'29
'U''U'30
'V''V'31
'W''W'32
'X''X'33
'Y''Y'34
'Z''Z'35
'-''-'36
'.''.'37
' '(space)' '(space)38
'$''$'39
'/''/'40
'+''+'41
'%''%'42
'*''*' (Start/Stop Character)


Code39 Check Character
(Modulo 43)

For example if the data "1234" is to be encoded as a barcode. The check character is calculated as follows.

ASCII Characters 1 2 3 4
Code 39 Values 1 2 3 4
Sum : 1 + 2 + 3 + 4 = 10
Modulo 43 : 10 % 43 = 10 (which maps to the character 'A')


The characters "*1234A*" can then be keyed in to the text editor with the appropriate font selected to generate a Code 39 barcode with check characters.

How to use the Code 39 barcode font

For example, to encode the data "123456", you can key in the following in your text editor and choose the Code 39 barcode font.

Input: *123456*

Output:



For example, to encode the data "45346345", you can key in the following in your text editor and choose the Code 39 barcode font.

Input: *45346345*

Output:


If you are using the Encoder, it will automatically put in the start/stop characters for you and allow you to choose the optional check character.