# EAN Add-on (EAN-2, EAN-5)

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

Specifications:
- [BISG — Barcoding Guidelines for the U.S. Book Industry (rev. Aug 2025)](https://www.bisg.org/barcoding-guidelines-for-the-us-book-industry)
- [BWIPP — EAN-5 (references ISO/IEC 15420, GS1 General Specifications)](https://github.com/bwipp/postscriptbarcode/wiki/EAN-5)
- [BWIPP — EAN-2](https://github.com/bwipp/postscriptbarcode/wiki/EAN-2)

## Overview

The **EAN add-on** (also called the UPC/EAN supplement) is a small 2- or 5-digit barcode printed immediately to the right of a main [EAN-13](https://docs.barcoder.ai/docs/standards/ean-13), [UPC-A](https://docs.barcoder.ai/docs/standards/upc-a) or [UPC-E](https://docs.barcoder.ai/docs/standards/upc-e) symbol and processed together with it rather than on its own <sup>[4][4]</sup><sup>[5][5]</sup>. The **EAN-2** (two-digit add-on, "UPC-2") is used on magazines and periodicals to carry an issue number <sup>[2][2]</sup><sup>[6][6]</sup>; the **EAN-5** (five-digit add-on) is used on books to carry a suggested retail price <sup>[1][1]</sup><sup>[3][3]</sup>. Both are specified as part of the EAN/UPC family in ISO/IEC 15420 and the GS1 General Specifications <sup>[5][5]</sup><sup>[6][6]</sup>.

## History

The add-on symbols are documented in Appendix D of the *U.P.C. Symbol Specification Manual*, which Wikipedia cites as the authoritative source for EAN-2 <sup>[2][2]</sup>. Their best-known deployment grew out of the book trade: in **1980** agreement was reached to assign the EAN prefixes 978 and 979 to "Bookland" for encoding ISBNs, and the [Bookland EAN (ISBN)](https://docs.barcoder.ai/docs/standards/bookland-ean) symbol may be followed by a five-digit price add-on <sup>[3][3]</sup>. The US Book Industry Study Group (BISG) continues to maintain the price-add-on conventions, with its barcoding guidelines revised between 2021 and 2025 and last updated in **August 2025** <sup>[3][3]</sup>.

## Technical specification

**Shared structure.** Both supplements start with the guard pattern `01011` and separate consecutive digits with the delineator `01`; there is no end guard <sup>[1][1]</sup><sup>[2][2]</sup>. Digits are drawn only from the EAN **L-code** (odd parity) and **G-code** (even parity) tables — the R-code set used on the right half of EAN-13 is not used <sup>[2][2]</sup>. The add-on has no explicit check digit; error detection is carried by the L/G parity pattern <sup>[1][1]</sup><sup>[2][2]</sup>. ZXing locates the supplement by the start pattern `1,1,2` (module widths) <sup>[7][7]</sup>.

**EAN-2 (2 digits).** The two digits are treated as one number 00–99; the value **mod 4** selects the parity pattern (0 → LL, 1 → LG, 2 → GL, 3 → GG) <sup>[2][2]</sup>. Example from the source: encoding `53` gives start `01011`, digit 5 from the L table (`0110001`), separator `01`, digit 3 from the G table (`0100001`) <sup>[2][2]</sup>.

**EAN-5 (5 digits).** A checksum is computed by multiplying the digits alternately by 3 and 9 (positions 1, 3, 5 by 3; positions 2, 4 by 9), summing, and taking the result mod 10 <sup>[1][1]</sup><sup>[8][8]</sup>. That checksum selects one of ten parity patterns <sup>[1][1]</sup>:

| Checksum | Parity | Checksum | Parity |
|---|---|---|---|
| 0 | GGLLL | 5 | LLGGL |
| 1 | GLGLL | 6 | LLLGG |
| 2 | GLLGL | 7 | LGLGL |
| 3 | GLLLG | 8 | LGLLG |
| 4 | LGGLL | 9 | LLGLG |

Worked example (the playground sample): `52495` → 5·3 + 2·9 + 4·3 + 9·9 + 5·3 = 141 → checksum 1 → pattern **GLGLL**; in the US book convention this reads as a suggested price of US$24.95 <sup>[1][1]</sup><sup>[3][3]</sup>.

**Data semantics — EAN-5 book price.** The leading digit is a currency indicator. Under BISG rules, `5` plus four digits encodes US$0.01–99.98; prices US$100.00–499.99 use `10000`–`49999` without a currency prefix; `59999` means "price not encoded, understood to exceed US$99.98" (US$99.99 cannot be encoded); `90000` means no cover price / no price encoded and is ignored for pricing; `60000`–`89999` have no assigned meaning; `90000`–`99999` are reserved for industry-wide use, with `99990`–`99999` assigned to the National Association of College Stores (`99990` used books, `99991` desk copies) <sup>[3][3]</sup>. Wikipedia additionally lists `0`/`1` = British pounds, `3` = Australian, `4` = New Zealand and `6` = Canadian dollars <sup>[1][1]</sup>. ZXing's decoder maps `0` → £, `5` → $, treats `90000` as "no suggested retail price", `99991` as complimentary (0.00) and `99990` as used <sup>[8][8]</sup>.

**Data semantics — EAN-2 issue number.** Combined with an [ISSN](https://docs.barcoder.ai/docs/standards/issn)-based EAN-13 (977 prefix), the two-digit add-on carries the issue: typically the month number for monthly magazines and the week number for newspapers <sup>[4][4]</sup><sup>[9][9]</sup>.

**Encoder notes.** bwip-js / BWIPP expose the supplements as the standalone bcids **`ean5`** and **`ean2`** (exactly five or two digits, options `includetext`, `guardwhitespace`), but discourage standalone use: the preferred practice is to append the add-on to the main symbol's data, e.g. `0317-8471 03 17` for an ISSN with sequence variant and issue <sup>[5][5]</sup><sup>[6][6]</sup>. BWIPP notes that five-digit add-on use with [EAN-8](https://docs.barcoder.ai/docs/standards/ean-8) is not standardised <sup>[5][5]</sup>.

## Use cases

- **Book trade (price).** The EAN-5 price extension follows the [Bookland EAN (ISBN)](https://docs.barcoder.ai/docs/standards/bookland-ean) ISBN symbol; BISG notes the add-on is optional but some publishers and retailers require it, and recommends consulting trading partners before dropping it <sup>[3][3]</sup>.
- **College stores (used / desk copies).** The NACS-reserved values `99990` and `99991` flag used books and desk copies in North American college bookstores <sup>[3][3]</sup><sup>[8][8]</sup>.
- **Magazines and newspapers (issue).** The EAN-2 issue add-on on 977-prefixed periodicals lets wholesalers track sales and returns per issue; GS1 states it is not intended for retail point-of-sale scanning but for distribution returns, so retailers receive accurate credit <sup>[4][4]</sup>.
- **UK newstrade.** The Professional Publishers Association's barcode best-practice guide documents the 977 EAN-13 plus 2-digit add-on for UK periodical distribution, noting that scanners must be specifically configured to capture the add-on <sup>[9][9]</sup>.
- **Other publication identifiers.** BWIPP lists [ISMN](https://docs.barcoder.ai/docs/standards/ismn) (printed music) alongside ISBN and ISSN as primary symbols with which EAN-2/EAN-5 supplements are used <sup>[5][5]</sup><sup>[6][6]</sup>.

## Implementations

- **[zxing/zxing](https://github.com/zxing/zxing)** — Java, ~34.1k stars, active 2026-09. Decoder: `UPCEANExtensionSupport` tries a 5-digit and then a 2-digit extension after the main EAN/UPC symbol <sup>[7][7]</sup>; `UPCEANExtension5Support` parses the price into a currency-formatted string <sup>[8][8]</sup>.
- **[metafloor/bwip-js](https://github.com/metafloor/bwip-js)** — JavaScript, ~2.4k stars, active 2026-08. Encoder port of BWIPP with `ean5` and `ean2` bcids <sup>[5][5]</sup><sup>[6][6]</sup><sup>[12][12]</sup>. This entry's playground renders via `bcid: "ean5"`.
- **[lindell/JsBarcode](https://github.com/lindell/JsBarcode)** — JavaScript, ~5.9k stars, active 2026-06. Encoder; lists EAN-5 and EAN-2 under its EAN family <sup>[10][10]</sup>.
- **[zxing-cpp/zxing-cpp](https://github.com/zxing-cpp/zxing-cpp)** — C++, ~2.0k stars, active 2026-09. Its format table lists EAN-5 and EAN-2 marked "write support only" <sup>[11][11]</sup>.

Not every scanner library handles supplements: the ZBar README lists EAN-13/UPC-A, UPC-E and EAN-8 but no EAN-2/EAN-5 add-on <sup>[13][13]</sup>.

## Comparison

- **EAN-2 vs. EAN-5:** EAN-2 derives its parity from the value mod 4 (four patterns) and carries short sequence data like an issue number; EAN-5 computes a weighted 3/9 checksum (ten patterns) and carries a five-digit value such as a price <sup>[1][1]</sup><sup>[2][2]</sup>. Choose EAN-2 for periodical issue tracking, EAN-5 for book pricing.
- **Add-on vs. ISSN sequence number:** an ISSN-based EAN-13 already carries a two-digit sequence number inside the main symbol (BWIPP example `0317-8471 03 17`: sequence `03`, add-on `17`); the EAN-2 add-on sits outside the 13-digit identifier and, per GS1, is meant for distribution returns rather than POS scanning <sup>[4][4]</sup><sup>[6][6]</sup>.
- **Add-on vs. GS1-128 / GS1 DataBar:** the add-on extends a legacy EAN/UPC symbol with only two or five digits of unstructured data; BWIPP's guidance is to treat the supplement as part of the primary symbol's data rather than as an independent barcode <sup>[5][5]</sup><sup>[6][6]</sup>.

## Fun facts

US$99.99 is impossible to express in a US EAN-5 price add-on: `59999` is reserved to mean "price exceeds US$99.98", so the highest encodable US price under the `5` prefix is US$99.98 <sup>[3][3]</sup>.

## Status

Active. BISG revised its US book-industry barcoding guidelines as recently as August 2025 and still defines the price add-on (while describing it as optional) <sup>[3][3]</sup>; GS1's support knowledge base documents current use of the 2-digit add-on for periodicals <sup>[4][4]</sup>; and major libraries (ZXing, bwip-js, JsBarcode, zxing-cpp) remain actively maintained with add-on support in 2026 <sup>[7][7]</sup><sup>[10][10]</sup><sup>[11][11]</sup><sup>[12][12]</sup>. Sources disagree on currency digits outside the US: Wikipedia lists `6` (CAD), `4` (NZD) and `3` (AUD) <sup>[1][1]</sup>, whereas BISG states `60000`–`89999` currently have no assigned meaning <sup>[3][3]</sup>.

## Sources

[1] [EAN-5 — Wikipedia](https://en.wikipedia.org/wiki/EAN-5) — Wikipedia, accessed 2026.
[2] [EAN-2 — Wikipedia](https://en.wikipedia.org/wiki/EAN-2) — Wikipedia, accessed 2026.
[3] [Barcoding Guidelines for the U.S. Book Industry](https://www.bisg.org/barcoding-guidelines-for-the-us-book-industry) — Book Industry Study Group, accessed 2026.
[4] [What are the extra add-on barcodes for books?](https://support.gs1.org/support/solutions/articles/43000734089-what-are-the-extra-add-on-barcodes-for-books-) — GS1 Support, accessed 2026.
[5] [EAN-5](https://github.com/bwipp/postscriptbarcode/wiki/EAN-5) — BWIPP wiki (GitHub), accessed 2026.
[6] [EAN-2](https://github.com/bwipp/postscriptbarcode/wiki/EAN-2) — BWIPP wiki (GitHub), accessed 2026.
[7] [UPCEANExtensionSupport.java](https://github.com/zxing/zxing/blob/master/core/src/main/java/com/google/zxing/oned/UPCEANExtensionSupport.java) — ZXing (GitHub), accessed 2026.
[8] [UPCEANExtension5Support.java](https://github.com/zxing/zxing/blob/master/core/src/main/java/com/google/zxing/oned/UPCEANExtension5Support.java) — ZXing (GitHub), accessed 2026.
[9] [PPA Best Practice for Bar Code Guidelines](https://ppa.co.uk/wp-content/uploads/2022/08/PPA_Best_Practice_for_Bar_Code_Guidelines.pdf) — Professional Publishers Association, accessed 2026.
[10] [JsBarcode](https://github.com/lindell/JsBarcode) — GitHub (lindell/JsBarcode), accessed 2026.
[11] [zxing-cpp](https://github.com/zxing-cpp/zxing-cpp) — GitHub (zxing-cpp/zxing-cpp), accessed 2026.
[12] [bwip-js](https://github.com/metafloor/bwip-js) — GitHub (metafloor/bwip-js), accessed 2026.
[13] [ZBar](https://github.com/mchehab/zbar) — GitHub (mchehab/zbar), accessed 2026.

[1]: https://en.wikipedia.org/wiki/EAN-5
[2]: https://en.wikipedia.org/wiki/EAN-2
[3]: https://www.bisg.org/barcoding-guidelines-for-the-us-book-industry
[4]: https://support.gs1.org/support/solutions/articles/43000734089-what-are-the-extra-add-on-barcodes-for-books-
[5]: https://github.com/bwipp/postscriptbarcode/wiki/EAN-5
[6]: https://github.com/bwipp/postscriptbarcode/wiki/EAN-2
[7]: https://github.com/zxing/zxing/blob/master/core/src/main/java/com/google/zxing/oned/UPCEANExtensionSupport.java
[8]: https://github.com/zxing/zxing/blob/master/core/src/main/java/com/google/zxing/oned/UPCEANExtension5Support.java
[9]: https://ppa.co.uk/wp-content/uploads/2022/08/PPA_Best_Practice_for_Bar_Code_Guidelines.pdf
[10]: https://github.com/lindell/JsBarcode
[11]: https://github.com/zxing-cpp/zxing-cpp
[12]: https://github.com/metafloor/bwip-js
[13]: https://github.com/mchehab/zbar

## Deployments

_No country reports mention this standard by name._

## Regions / aggregations not mapped to a single country

- Universal
