USPS Barcode FAQ & Tutorial

Barcode Information | Tutorials | Examples

The information provided here describes how to create and implement the various types of automation used by the United States Postal Service (USPS). Information about barcode generation, printing, and verification is provided for Postnet, Planet, GS1-128, EAN-128, FIM, OCR-A, and USPS Intelligent Mail® Barcode (aka OneCode Solution 4-State Customer Barcode)


Note: While the USPS accepts the Postnet barcodes to assist in mail routing, it no longer offers bulk discounts for POSTNET. Therefore, POSTNET and PLANET are legacy barcodes that should not be used. Intelligent Mail IMb is the replacement.

The POSTNET (Postal Numeric Encoding Technique) barcode type was developed by the U. S. Post Office to encode zip code information. POSTNET barcodes on U.S. mail improve the speed, accuracy, and delivery of mail. Some U.S. Post Offices also offer a discount for sending bulk mail that contains the POSTNET barcode. However, the USPS requires the Intelligent Mail barcode to qualify for automation discounts since January 2009. For this reason, IDAutomation has implemented unique encoding in IDAutomation Postnet Fonts, which allow printing of Postnet, Planet, and Intelligent Mail barcodes with the same font, to meet these requirements.

All IDAutomation Barcode Products support the printing of Postnet such as the Barcode Components, Label Software, and the USPS IMb Font Package, which includes over 30 encoders for easy integration, including support for Microsoft Access, Crystal Reports, Oracle Reports, and FileMaker.

Determining the Data to Encode:

To create a proper Postnet Barcode with IDAutomation barcode products, a single string of numbers must be entered that is made up of the following:

  Zip Code512345
  Zip +441234
  DPBC number212
Complete string from example data above: 12345123412
After the string is obtained, it is encoded with IDAutomation’s products.

POSTNET barcodes can be printed as a 5-digit POSTNET barcode, ZIP+4 POSTNET barcode, or a Delivery Point Barcode, which is also referred to as DPBC. If unsure as to which method to use, contact the local post office for assistance.

  • The 5-digit POSTNET barcode consists of the start/stop character, 5 digit ZIP code data, check digit and the start/stop character, for a total of 32 bars.
  • The ZIP+4 POSTNET barcode consists of the start/stop character, 9-digit ZIP code data, check digit and the start/stop character, for a total of 52 bars.
  • The DPBC POSTNET barcode consists of the start/stop character, 9-digit ZIP code data, two DPBC numbers, check digit and the start/stop character, for a total of 62 bars. The two DPBC numbers are usually the last two digits of the street address, PO Box or route number. If the plan is to use DPBC, examine chapter 5 of the USPS Domestic Mail Manual for information on handling abnormal addresses.

Generating a barcode:


The size of both POSTNET and IMb must be between 22 and 24 bars per inch. The size may be adjusted by setting the narrow bar width. Additional font widths are provided with IDAutomation IMb Barcode Fonts for this purpose.

Location of the symbol:

The POSTNET barcodes must be printed on specific areas of mail, usually directly below the address. For more information about the formatting and placement of POSTNET barcodes or FIM symbol placement, refer to Chapter 5 of the USPS document Domestic Mail Manual and USPS Publication 25 or contact the local post office Automation Specialist for assistance.

Intelligent Mail & OneCode Barcodes

USPS Intelligent Mail (Aka: OneCode, the 4-State Customer Barcode, 4CB, and USPS4CB) includes a height-modulated barcode designed for use in high-speed, automated, mail sorting machines that allow both PLANET and POSTNET barcode information to be combined into a single barcode to track mailings, request address-quality services (including updated address-change information) and return-mail service. The unique encoding used in IDAutomation Postnet Barcode Fonts allows the printing of Postnet, Planet, and Intelligent Mail barcodes with the same font.

Note: The OneCode Solution is also known as the Intelligent Mail Customer Barcode. The encoding of each is the same. In IDAutomation products, the selection of OneCode will create the same barcode as the Intelligent Mail Customer Barcode.

PLANET Barcode Formatting

The USPS Planet barcode is designed to track both inbound and outbound letter mail. The Planet barcodes complement the existing Postnet barcodes. The Planet barcodes are required by the U. S. Post Office to use their Confirm service. USPS Intelligent Mail OneCode Confirm should be considered for new implementations of this barcode type because it combines Postnet and Planet data into a single barcode symbol.

CONFIRM provides confirmation that customers received the mail, allowing mailers to synchronize telemarketing programs with direct mail campaigns or augment other advertising media with their mailings.

Confirm is built on the PLANET Code, a 12-digit barcode:

  • The first two digits represent the service (21=Origin Confirm or 22=Destination Confirm).
  • The next nine digits identify the mail piece (see Figures 2 and 3 in section 5, from the manual, for more detail).
  • The 12th digit is a checksum digit that helps USPS detect errors.
  • For more information about printing and generating PLANET barcodes, please visit here.

Contact the USPS manager of the Planet program at the post office to receive more information on the formatting and placement of PLANET barcodes.

USPS EAN-128 | GS1-128

The United States Postal Service uses the EAN-128 barcode (also known as Code 128 and GS1-128) for special services such as delivery confirmation. When used for the USPS, the IDAutomationC128L font provided in the Code 128 Barcode Font Advantage Package and the Postnet Barcode Font Advantage Package should be printed at 16 points, which will produce a height of .75″ and an X dimension of .013″ as required. The IDAutomationC128M font may also be used at 18 points to achieve a greater X dimension (a wider barcode) with the same height.

Other products that support the printing of the Code 128 symbology include IDAutomation Barcode Components, Label Software and the Image Generator. For information about formatting USPS GS1-128 (UCC/EAN128) barcodes with IDAutomation products, refer to the USPS portion of the Code 128 Barcode FAQ.

OCR-A Font Typeface

OCR-A is not a barcode, but a font that enables text to be easily read by OCR (Optical Character Recognition) scanners at the post office. When used for the USPS, the IDAutomationOCRa font provided in the OCR Font Advantage Package and the USPS IMb Font Package should be printed at 9 points. This size is required for USPS scanners to automatically read the address when the barcode is unavailable or not readable.

FIM – Facing Identification Mark

The Facing Identification Mark (FIM) is a type of barcode with vertical and horizontal bars used to identify business reply, courtesy reply and OCR-readable mail. This barcode type is only provided in the USPS Intelligent Mail IMb Font Package and should be printed at 36 points.

Reading, Scanning, and Verifying USPS Barcodes

Before sending the printed barcodes to the post office, IDAutomation suggests verifying the result with a verifier, which is provided in the form of a hand-held 2D barcode image reader.

Check Character Calculation Examples

IDAutomation provides several font tools, macros, and source code samples that are free to use with IDAutomation barcode fonts, and will automatically format the data to the fonts. Additionally, IDAutomation Barcode Components automatically perform all necessary calculations. Therefore, manual check digit calculations are usually not necessary.

To manually calculate the check digit for the Postnet barcode:

  1. Ensure the start/stop character is added to the beginning and end of every Postnet barcode. When using IDAutomation Postnet Barcode Fonts, the parentheses are used for start and stop characters; “(” for start and “)” for stop. Start and stop codes are also located at the “!, *, s, and S” characters in the font.
  2. The last digit of the printed POSTNET barcode symbol is a check digit. The check digit is obtained by determining the number, that when added to the sum of all numbers in the POSTNET code, will produce a multiple of 10. For example; the check digit for the POSTNET number 33727-1426 is 5 because (3+3+7+2+7+1+4+2+6=35 and 35+5=40) Therefore, the sum of all POSTNET data including the check digit must be a multiple of 10.
  3. The actual font characters used to print this POSTNET code would be (3372714265).
  4. The IDAutomation Online Barcode Font Encoder may be used to verify check digits or to create barcodes one at a time.

To manually calculate the check digits for USPS EAN128 / GS1-128, please refer to the USPS section of the Code 128 Barcode FAQ. The USPS Intelligent Mail (Aka: OneCode & 4-State Customer Barcode) is very complex to create and contains many more calculations than a simple check digit. The source code used to create Intelligent Mail barcodes can be provided with the purchase of the Unlimited Developer License and a signed Source Code License Agreement for one of the products supporting Intelligent Mail & OneCode barcodes.

More Information

For additional information, please visit The U.S. Postal Service. Intelligent Mail, OneCode ACS, and OneCode Confirm are trademarks of the U.S. Postal Service.