A typical code 39 barcode has the following structure:
To calculate the optional checksum digit, follow the following steps.
| CODE39 CHAR TABLE | |||||||
| Ch | Val | Ch | Val | Ch | val | ch | Val |
| 0 | 0 | A | 10 | N | 23 | - | 36 |
| 1 | 1 | B | 11 | O | 24 | . | 37 |
| 2 | 2 | C | 12 | P | 25 | sp | 38 |
| 3 | 3 | D | 13 | Q | 26 | $ | 39 |
| 4 | 4 | E | 14 | R | 27 | / | 40 |
| 5 | 5 | F | 14 | S | 28 | + | 41 |
| 6 | 6 | G | 16 | T | 29 | % | 42 |
| 7 | 7 | H | 17 | U | 30 | ||
| 8 | 8 | I | 18 | V | 31 | ||
| 9 | 9 | J | 19 | W | 32 | ||
| K | 20 | X | 33 | ||||
| L | 21 | Y | 34 | ||||
| M | 22 | Z | 35 | ||||
The code 39 symbology can be extended to encode all 128 characters in the ASCII table. In the full ASCII mode, the symbols $ / % and + are used as precedence codes with the 26 letters as shown below. Since the same symbol now can be interpreted as one character in Extended Code 39 mode and two characters in Code 39 mode, the readers must be set to extended mode to read the data correctly. We listed the mapping chart at the left. Code39 extended is sometimes called Code39 Full ASCII.