Standards/postnet
POSTNET
Overview
POSTNET (Postal Numeric Encoding Technique) is a legacy, height-modulated barcode symbology developed by the United States Postal Service to encode ZIP Code routing information for automated mail sorting 1, 2. It is a two-state symbology — every bar is either a tall (full) bar or a short (half) bar — and encodes each digit with a two-of-five code of five bars per digit 1, 2. POSTNET was replaced by the Intelligent Mail Barcode in the fall of 2009 and lost automation-discount eligibility on January 28, 2013 1.
History
- POSTNET was developed by the United States Postal Service as a barcode symbology to encode ZIP Code data for automated routing 1. One barcode-history source states the concept emerged during the 1980s USPS modernization effort and that POSTNET was officially adopted by the USPS in 1982 6.
- The format evolved to encode progressively more precise routing: a 5-digit ZIP Code, a 9-digit ZIP+4 Code, and finally an 11-digit Delivery Point Barcode (DPBC) combining the ZIP Code, ZIP+4 Code, and delivery-point code 1.
- The Intelligent Mail Barcode (IMb) was introduced and POSTNET replaced in the fall of 2009 1. The USPS allowed mailers to keep receiving automation discounts using POSTNET until January 28, 2013, after which the Intelligent Mail Barcode was required for those reduced rates 1.
Technical specification
POSTNET is a two-state, height-modulated 1D postal symbology 1, 2:
| Parameter | Value |
|---|---|
| Symbology family | 1D height-modulated, two-state (tall / short bars) |
| Per-digit encoding | 5 bars, two-of-five code (2 tall + 3 short) |
| Framing | starts and ends with a full bar (guard rail / frame bar) |
| Tall bar height | 0.125 in ± 0.010 in |
| Short bar height | 0.050 in ± 0.010 in |
| Bar width | 0.015–0.025 in |
| Bar+space pair width | 0.045–0.050 in |
| Density | ~21 bars per inch (±1), ~4 characters per inch |
| Check digit | modulo-10 |
| Character set | numeric only |
Digit encoding — each digit is represented by five bars, two of which are tall 2. The five bar positions carry weights of 7, 4, 2, 1, 0 from left to right; the two tall bars sum to the digit's value (with "0" encoded as the 7+4 combination, i.e. pattern 11000) 1.
Variants and bar counts 1:
| Variant | Data | Total bars |
|---|---|---|
| 5-digit "A" code | ZIP Code only | 32 |
| 6-digit "B" code | (obsolete) | 37 |
| 9-digit "C" code | ZIP + ZIP+4 | 52 |
| 11-digit DPBC | ZIP + ZIP+4 + delivery point | 62 |
Check digit — POSTNET appends a single modulo-10 check digit chosen so that the sum of all digits in the barcode is a multiple of 10; it is computed by summing the data digits, taking the remainder modulo 10, and subtracting from 10 1, 2. This provides error detection only.
Use cases
- ZIP Code routing for automated letter sorting — POSTNET's sole purpose was encoding ZIP, ZIP+4, or delivery-point routing data so high-speed USPS sorting equipment could direct mail 1, 2.
- Pre-printed business reply and bulk mail — mailers printed POSTNET on envelopes, business reply mail, and bulk mailings to qualify for automation-discount postage rates prior to the 2013 cutover 1.
- Delivery Point Barcode (DPBC) — the 11-digit DPBC variant identified mail down to an individual delivery point, the finest routing granularity POSTNET supported 1.
Implementations
- C — zint/zint — 771★, active 2026. Encoding library supporting POSTNET among 50+ symbologies.
- JavaScript — metafloor/bwip-js — 2,381★, active 2026. Pure-JavaScript barcode writer supporting POSTNET and PLANET among 100+ types.
- JavaScript decoder — Douglas Boynton Quine publishes a browser-based POSTNET / PLANET / IMb decoder 5.
- Online encoder/decoder — dCode provides a POSTNET encoder/decoder/solver 7.
Comparison
vs. PLANET — PLANET is POSTNET's tracking companion and its direct geometric inverse: where a POSTNET digit uses two tall and three short bars, the corresponding PLANET digit uses three tall and two short bars 1, 6. POSTNET encodes routing (ZIP) data; PLANET encoded tracking data for the USPS Confirm service 6. Both share the same two-state, two-of-five, modulo-10 framework and were used together on the same mailpiece.
vs. Intelligent Mail Barcode — The IMb is a four-state symbology (Tracker / Ascender / Descender / Full bars) with a fixed 65 bars and up to 31 digits, carrying both routing and tracking data plus an 11-bit CRC; POSTNET is two-state with at most ~14 digits, a single modulo-10 check digit, and routing data only 1, 6. The IMb replaced POSTNET's routing role in 2009 1.
When to choose it — for new mail, never: POSTNET is deprecated and no longer qualifies for automation pricing. It remains relevant only for reading or reproducing legacy mailpieces and historical archives 1, 6.
Fun facts
- The "0" digit in POSTNET is encoded by the 7+4 weighted positions (pattern
11000) rather than by any zero-valued bars — a quirk of the two-of-five weighting scheme where the four numeric positions are 7, 4, 2, 1 and the fifth carries weight 0 1. - POSTNET and its inverse-twin PLANET were frequently printed on the same envelope at once — POSTNET for routing and PLANET for Confirm-service tracking — until the IMb collapsed both into a single symbol 6.
Status
Deprecated / superseded. POSTNET was replaced by the Intelligent Mail Barcode in the fall of 2009 and lost automation-discount eligibility on January 28, 2013 1. Dynamsoft's comparison lists POSTNET and PLANET as legacy barcodes that "should not be used," with the IMb as the replacement 6. Its successor is the Intelligent Mail Barcode 1, 6.
Sources
- POSTNET — Wikipedia — Wikipedia, accessed 2026-06-03
- USPS POSTNET (Zip / DPBC) — Seagull Scientific Barcode Guide — Seagull Scientific, accessed 2026-06-03
- zint/zint — GitHub — GitHub, accessed 2026-06-03
- metafloor/bwip-js — GitHub — GitHub, accessed 2026-06-03
- USPS POSTNET, PLANET, and IMB Barcode Decoder in JavaScript — Douglas Boynton Quine — quine.org, accessed 2026-06-03
- Difference Between Intelligent Mail barcode, Postnet and Planet — Dynamsoft — Dynamsoft, accessed 2026-06-03
- Barcode POSTNET Cipher — Decoder, Encoder, Solver — dCode — dcode.fr, accessed 2026-06-03
Deployments
No country reports mention this standard by name.