# POSTNET

> Source: https://docs.barcoder.ai/docs/standards/postnet
> research date 2026-06-03 · extracted at 2026-10-03
> Publisher: Barcoder — encyclopedia of QR, barcode and payment-code standards

Specifications:
- [POSTNET — Wikipedia](https://en.wikipedia.org/wiki/POSTNET)
- [USPS POSTNET — Seagull Scientific Barcode Guide](https://barcodeguide.seagullscientific.com/Content/Symbologies/Postal_(Zip__DPBC).htm)

## 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 <sup>[1][1], [2][2]</sup>. 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 <sup>[1][1], [2][2]</sup>. POSTNET was **replaced by the [Intelligent Mail Barcode](https://docs.barcoder.ai/docs/standards/intelligent-mail-barcode) in the fall of 2009** and lost automation-discount eligibility on **January 28, 2013** <sup>[1][1]</sup>.

## History

- POSTNET was developed by the **United States Postal Service** as a barcode symbology to encode ZIP Code data for automated routing <sup>[1][1]</sup>. 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** <sup>[6][6]</sup>.
- 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 <sup>[1][1]</sup>.
- The **[Intelligent Mail Barcode](https://docs.barcoder.ai/docs/standards/intelligent-mail-barcode) (IMb) was introduced and POSTNET replaced in the fall of 2009** <sup>[1][1]</sup>. 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 <sup>[1][1]</sup>.

## Technical specification

POSTNET is a **two-state, height-modulated 1D postal symbology** <sup>[1][1], [2][2]</sup>:

| 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** <sup>[2][2]</sup>. 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`) <sup>[1][1]</sup>.

**Variants and bar counts** <sup>[1][1]</sup>:

| 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 <sup>[1][1], [2][2]</sup>. 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 <sup>[1][1], [2][2]</sup>.
- **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 <sup>[1][1]</sup>.
- **Delivery Point Barcode (DPBC)** — the 11-digit DPBC variant identified mail down to an individual delivery point, the finest routing granularity POSTNET supported <sup>[1][1]</sup>.

## Implementations

- **C** — [zint/zint][3] — 771★, active 2026. Encoding library supporting POSTNET among 50+ symbologies.
- **JavaScript** — [metafloor/bwip-js][4] — 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 <sup>[5][5]</sup>.
- **Online encoder/decoder** — dCode provides a POSTNET encoder/decoder/solver <sup>[7][7]</sup>.

## Comparison

**vs. [PLANET](https://docs.barcoder.ai/docs/standards/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 <sup>[1][1], [6][6]</sup>. POSTNET encodes routing (ZIP) data; PLANET encoded tracking data for the USPS Confirm service <sup>[6][6]</sup>. Both share the same two-state, two-of-five, modulo-10 framework and were used together on the same mailpiece.

**vs. [Intelligent Mail Barcode](https://docs.barcoder.ai/docs/standards/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 <sup>[1][1], [6][6]</sup>. The IMb replaced POSTNET's routing role in 2009 <sup>[1][1]</sup>.

**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 <sup>[1][1], [6][6]</sup>.

## 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 <sup>[1][1]</sup>.
- POSTNET and its inverse-twin [PLANET](https://docs.barcoder.ai/docs/standards/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 <sup>[6][6]</sup>.

## Status

**Deprecated / superseded.** POSTNET was replaced by the [Intelligent Mail Barcode](https://docs.barcoder.ai/docs/standards/intelligent-mail-barcode) in the fall of 2009 and lost automation-discount eligibility on **January 28, 2013** <sup>[1][1]</sup>. Dynamsoft's comparison lists POSTNET and PLANET as legacy barcodes that "should not be used," with the IMb as the replacement <sup>[6][6]</sup>. Its successor is the Intelligent Mail Barcode <sup>[1][1], [6][6]</sup>.

## Sources

[1]: https://en.wikipedia.org/wiki/POSTNET
[2]: https://barcodeguide.seagullscientific.com/Content/Symbologies/Postal_(Zip__DPBC).htm
[3]: https://github.com/zint/zint
[4]: https://github.com/metafloor/bwip-js
[5]: https://www.quine.org/postnetj.html
[6]: https://www.dynamsoft.com/blog/insights/intelligent-mail-vs-postnet-vs-planet/
[7]: https://www.dcode.fr/barcode-postnet
[intelligent-mail-barcode]: https://docs.barcoder.ai/source/standards/intelligent-mail-barcode
[planet]: https://docs.barcoder.ai/source/standards/planet

1. [POSTNET — Wikipedia][1] — Wikipedia, accessed 2026-06-03
2. [USPS POSTNET (Zip / DPBC) — Seagull Scientific Barcode Guide][2] — Seagull Scientific, accessed 2026-06-03
3. [zint/zint — GitHub][3] — GitHub, accessed 2026-06-03
4. [metafloor/bwip-js — GitHub][4] — GitHub, accessed 2026-06-03
5. [USPS POSTNET, PLANET, and IMB Barcode Decoder in JavaScript — Douglas Boynton Quine][5] — quine.org, accessed 2026-06-03
6. [Difference Between Intelligent Mail barcode, Postnet and Planet — Dynamsoft][6] — Dynamsoft, accessed 2026-06-03
7. [Barcode POSTNET Cipher — Decoder, Encoder, Solver — dCode][7] — dcode.fr, accessed 2026-06-03

## Deployments

_No country reports mention this standard by name._
