PDF417 is a 2-dimensional stacked bar code created by Symbol Technologies in 1991. It is one of the most popular 2D codes because of its ability to be read with slightly modified handheld laser or linear CCD scanners. PDF stands for Portable Data File and 417 represents the 17 modules of 4 bars and spaces that make up each code. Each symbol also has start and stop bar groups that allow the code to be easily identified.
| Encodable Character Set |
All 128 ASCII Characters (including extended) |
| Code Type |
Continuous, Multi-Row |
| Symbol Height |
3 - 90 Rows |
| Symbol Width |
90X - 583X |
| Bidirectional Decoding |
Yes |
| Error Correction Characters |
2 - 512 |
| Maximum Data Characters |
1850 text |
|
2710 digits |
|
1108 bytes |
Symbol Structure
All PDF417 barcode symbols are made up of stacks of vertically aligned rows. Each code can contain anywhere from 3 to 90 rows and that will each contain the following components:
1. Leading quiet zone
2. Start pattern
3. Left row indicator symbol character
4. 1 - 30 data symbol characters
5. Right row indicator symbol character
6. Stop pattern
7. Trailing quiet zone
 |
The easily identifiable Start and Stop patterns on the PDF417 bar code make it one of the easiest 2D bar codes to identify in an image. These patterns along with the stacked format of the bar code is also what enables the PDF417 to be decoded by linear imaging scanners and even some laser bar code scanners. These factors along with its large data capacity contribute is what makes the PDF417 one of the most popular 2D bar codes in the world. |
Character Encodation
Each PDF417 symbol character is 17
modules long. As shown below each character is made up of a series of four bars and four spaces of varying lengths. This character structure allows 929 different symbol character values (0 - 928) to be encoded.
Each of these characters is referred to as a cluster. There is a formula using the length of each black bar in each cluster that yields a value of either 0,3 or 6 for every PDF417 character cluster.
When data is encoded, each row uses the symbol characters from only one cluster. The same cluster value repeats every third row so that Row 1 uses cluster 0, Row 2 uses cluster 3, Row 3 uses cluster 6, Row 4 uses cluster 0 and so on...
 |
Using different cluster values on adjacent rows facilitates decoding with linear scanning devices whose scan line might cross multiple rows simultaneously. |
The data region of each row is surrounded by Left and Right Row Indicators which provide the following information for each row:
- row number
- number of rows (3 - 90)
- number of columns in the data region (1 - 30)
- error correction level (0 - 8)
Data Compaction Modes
The PDF417 bar code has three data compaction modes that allow data to be more efficiently packed into each code. The three modes of data compaction are:
- Text Compaction (TC) mode
- Byte Compaction (BC) mode
- Numeric Compaction (NC) mode
These modes can either be used by themselves in a code or intermixed within one symbol.
Text Compaction Mode contains four sub-modes:
- Alpha (capital letters)
- Lower Case (lower case letters)
- Mixed (numbers and some symbols)
- Punctuation (punctuation and some symbols)
This structure allows a value of 0-29 to be assigned to frequently occuring characters. This increases the efficiency of the data compaction by allowing two characters to be encoded in a single symbol character.
Byte Compaction Mode converts a sequence of bytes into codewords through a base 256 to base 900 conversion. This compaction allows 6 bytes of data to be encoded in 5 PDF417 codewords.
Numeric Compaction Mode is normally used when there are more than 13 consecutive digits in a row and utilizes a base 10 to base 900 data conversion. This allows 2.93 digits to be encoded into a single PDF417 symbol character.
Start and Stop Patterns
PDF417 codes have unique start and stop patterns. Both patterns are bar-space sequences defined below:
Start Pattern = 81111113 (ending with a space)
Stop Pattern = 711311121 (ending with a bar)
Quiet Zones
A PDF417 requires a quiet zone that is free of any printing (white) around the entire perimeter of the code. The minimum size of the quiet zone is twice the size of the
minimum element width or module.
Symbol Dimensions
The significant dimensional parameter that determines the size of every PDF417 is 'X' which represents the nominal width of each narrow element (module). As long as the X dimension is constant throughout a symbol, a PDF417 may be printed to any size that satisfies avaliable printing and scanning processes.
The row height will also determine the height of a symbol. It is recomended to use a minimum row height between 3X and 4X depending on the level of error correction being used. A higher level of error correction will enable a smaller height.
The size of a PDF417 bar code can be calculated using the following formula:
Width = ((17 * # of columns) + 69) X + 2 (size of quiet zone)
Height = (# of rows) (row height) + 2 (size of quiet zone)
Error Detection and Correction
Error correction codewords provide the capability to both detect and correct errors in PDF417 bar codes. The Reed-Solomon Error Control Code algorithm is used to compute the error correction codewords. Each symbol contains a minimum of 2 error correction codewords and the highest level (8) will contain 512 codewords. There are nine levels (0 - 8) of error correction that can be chosen at the time of code creation. The amount of codewords starts at 2 for level 0 and doubles for each level all the way up to 512 codewords for level 8. I don't want to create a table for this so you'll have to do the math. It's not hard.
There are two types of errors that the error correction codewords can address:
1. Rejection errors (erasures) - missing, unscanned or undecodable symbol character where the position but not value are known.
2. Substitution errors (errors) - misdecoded or mislocated symbol charater where both the position and value are unknown.
The error correction capacity of any PDF417 can be determined by the following formula:
| # of erasures + 2 (# of errors) = # of error correction codewords - 2 |
The table below provides recomended error correction levels based on the amount of data codewords in a PDF417 symbol. Higher levels of error correction are recomended for tough applications that are likely to incur significant symbol damage.
# of Data Codewords |
Error Correction Level |
| 1 - 40 |
2 |
| 41 - 160 |
3 |
| 161-320 |
4 |
| 321 - 863 |
5 |
Transmitted Data
The data symbols in a PDF417 bar code are translated into 8-bit bytes according to the compatcion modes that are used. All of the start and stop symbol characters, row indicators, symbol length descripto, mode switching symbol characters,and error correction symbol characters are not transmitted.

Average PDF417 bar code

Truncated PDF417 bar code

Driver's License PDF417 bar code

FedEx PDF417 bar code

USPS PDF417 bar code
|
Manufacturing part tracking
Postal
Lotteries
Package Tracking
Manifests
|
Bills of Lading
ID Cards
Registrations
Asset Tracking
Patient Bracelets
|
Medication
Tradeshow Lead Tracking
Automotive Inventory
Vehicle ID
|
ISO PDF417 bar code symbology specification (ISO/IEC 15438:2006)
AIM Global PDF417 bar code specifications