Read, write, and detect over 30 different barcodes with our barcode SDK.


PostNET stands for Postal Numeric Encoding Technique and was previously used by the United States Postal Service (USPS) to sort, track, and identify mail. It is a two-state barcode, meaning bars can be in one of two states — tall or short. PostNET was replaced by the four-state Intelligent Mail barcode (IMb) in 2009. 

PostNET codes were designed to represent a five-digit ZIP code, nine digit ZIP+4 code, or an 11 digit delivery point barcode (DPBC). These delivery point codes were created by the USPS to identify more than 115 million unique delivery points across the nation, and helped significantly reduce the amount of time carriers spent sorting mail prior to making deliveries.


The PostNET barcode contains six key elements:

  • A leading quiet zone.
  • The start bar or “frame” bar, which is always tall.
  • All encoded address information including ZIP or DPBC data.
  • A check digit.
  • The stop bar, which is always tall.
  • A trailing quiet zone.

Data is encoded in PostNET barcodes by varying bar height. Each digit contains five bars, two of which are short and three of which are tall. The spaces are of fixed length, and PostNET codes only support numeric characters 0-9. It’s also worth noting that PostNET uses a precise density range to encode data. Density is specified at 21 bars per inch, with each bar and space pair between 0.045 and 0.050 inches wide, or approximately four characters per inch. PostNET is similar to the 2 of 5 symbology in that two of five states — height in the case of PostNET and width in the case of 2 of 5 — are large and two are smaller.

Common Use Cases

Originally used to help speed mail delivery and sorting by specifying ZIP, ZIP+ and DPBCs, PostNET was replaced by IMb in 2009 since its four-state encoding offered greater density and made it possible to combine the functions of USPS PostNET and PLANET codes, which were used for more robust origin and delivery tracking. PLANET was also a two-state barcode that used an inverse encoding technique to its PostNET counterpart. For example, encoding a 0 in PLANET requires two short followed by three tall bars. In PostNET, encoding a zero requires two tall followed by three short bars.