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.