International Article Number
The International Article Number (also known as European Article Number or EAN) is a standard describing a barcode symbology and numbering system used in global trade to identify a specific retail product type, in a specific packaging configuration, from a specific manufacturer. The standard has been subsumed in the Global Trade Item Number standard from the GS1 organization; the same numbers can be referred to as GTINs and can be encoded in other barcode symbologies defined by GS1. EAN barcodes are used worldwide for lookup at retail point of sale, but can also be used as numbers for other purposes such as wholesale ordering or accounting.
The most commonly used EAN standard is the thirteen-digit EAN-13, a superset of the original 12-digit Universal Product Code (UPC-A) standard developed in 1970 by George J. Laurer. An EAN-13 number includes a 3-digit GS1 prefix (indicating country of registration or special type of product). A prefix with a first digit of "0" indicates a 12-digit UPC-A code follows. A prefix with the first two digits of "45" or "49" indicates a Japanese Article Number (JAN) follows.
The less commonly used 8-digit EAN-8 barcode was introduced for use on small packages, where EAN-13 would be too large. 2-digit EAN-2 and 5-digit EAN-5 are supplemental barcodes, placed on the right-hand side of EAN-13 or UPC. These are generally used for periodicals like magazines or books, to indicate the current year's issue number; and weighed products like food, to indicate the manufacturer's suggested retail price.
- 1 Composition
- 2 Calculation of checksum digit
- 3 Binary encoding of data digits into EAN-13 barcode
- 4 Japanese Article Number
- 5 How the 13-digit EAN-13 is encoded
- 6 See also
- 7 References
- 8 Programming code for barcodes in ...
- 9 External links
The 13-digit EAN-13 number consists of four components:
- GS1 Prefix - 3 digits
- Manufacturer Code - variable length
- Product Code - variable length
- Check digit
The first three digits of the EAN-13 (GS1 Prefix) usually identify the GS1 Member Organization which the manufacturer has joined.(not necessarily where the product is actually made). Note that EAN-13 codes beginning with 0 are actually 12-digit UPC codes with prepended 0 digit. In the last few years, more products sold by retailers outside United States and Canada have been using EAN-13 codes beginning with 0, since they were generated by GS1-US.
The 020-029 GS1 Prefixes are worth a special mention. GS1 defines this as being available for retailer internal use (or internal use by other types of business). Some retailers use this for proprietary (own brand or unbranded) products, although many retailers obtain their own manufacturer's code for their own brands. Other retailers use at least part of this prefix for products which are packaged in store, for example, items weighed and served over a counter for a customer. In these cases, the barcode may encode a price, quantity or weight along with a product identifier - in a retailer defined way. The product identifier may be one assigned by the Produce Electronic Identification Board (PEIB) or may be retailer assigned. Retailers who have historically used UPC barcodes tend to use GS1 prefixes starting with "02" for store-packaged products.
The EAN "country code" 978 (and later 979) has been allocated since the 1980s to reserve a Unique Country Code (UCC) prefix for EAN identifiers of published books, regardless of country of origin, so that the EAN space can catalog books by ISBNs rather than maintaining a redundant parallel numbering system. This is informally known as "Bookland". The prefix 979 with first digit 0 is used for International Standard Music Number (ISMN) and the prefix 977 indicates International Standard Serial Number (ISSN).
The manufacturer code is a unique code assigned to each manufacturer by the numbering authority indicated by the GS1 Prefix. All products produced by a given company will use the same manufacturer code. EAN-13 uses what is called "variable-length manufacturer codes." Assigning fixed-length 5-digit manufacturer codes, as the UCC has done until recently, means that each manufacturer can have up to 99,999 product codes--and many manufacturers don't have that many products, which means hundreds or even thousands of potential product codes are being wasted on manufacturers that only have a few products. Thus if a potential manufacturer knows that it is only going to produce a few products, EAN-13 may issue it a longer manufacturer code, leaving less space for the product code. This results in more efficient use of the available manufacturer and product codes.
In ISBN and ISSN, this component is used to identify the language in which the publication was issued and managed by a transnational agency covering several countries, or to identify the country where the legal deposits are made by a publisher registered with a national agency, and it is further subdivided any allocating subblocks for publishers; many countries have several prefixes allocated in the ISSN and ISBN registries.
The product code is assigned by the manufacturer. The product code immediately follows manufacturer code. The total length of manufacturer code plus product code should be 9 or 10 digits depending on the length of country code(2-3 digits).
In ISBN, ISMN and ISSN, it uniquely identifies the publication from the same publisher; it should be used and allocated by the registered publisher in order to avoid creating gaps; however it happens that a registered book or serial never gets published and sold.
The check digit is an additional digit, used to verify that a barcode has been scanned correctly. It is computed modulo 10, where the weights in the checksum calculation alternate 3 and 1. In particular, since the weights are relatively prime to 10, the EAN-13 system will detect all single digit errors. It also recognizes 90% of transposition errors (all cases, where the difference between adjacent digits is not 5).
Calculation of checksum digit
The checksum is calculated as sum of products - taking an alternating weight value (3 or 1) times the value of each data digit. The checksum digit is the digit, which must be added to this checksum to get a number divisible by 10 (i.e. the additive inverse of the checksum, modulo 10). See ISBN-13 check digit calculation for a more extensive description and algorithm. The Global Location Number(GLN) also uses the same method.
Position - weight
The weight at a specific position in the EAN code is alternating (3 or 1) in a way, that the final data digit has a weight of 3 (and thus the check digit has a weight of 1).
Numbering the positions from the right (code aligned to the right), the odd data digits are always weight of 3 and the even data digits are always weight of 1, regardless of the length of the code.
Weights for 18-digit SSCC code and GTINs (GTIN-8, GTIN-12, GTIN-13, GTIN-14):
Weights for EAN-13 code:
Weights for EAN-8 code:
- For EAN-13 barcode 400638133393x, where x is the unknown check digit, (Stabilo Point 88 Art. No. 88/57), the check digit calculation is...
position 12 11 10 9 8 7 6 5 4 3 2 1 first 12 digits of barcode 4 0 0 6 3 8 1 3 3 3 9 3 weight 1 3 1 3 1 3 1 3 1 3 1 3 partial sum 4 0 0 18 3 24 1 9 3 9 9 9 checksum 89
- The nearest multiple of 10 that is equal or higher than the checksum, is 90. Subtract them: 90 - 89 = 1, which is the check digit x of the barcode.
- For EAN-8 barcode 7351353x, where x is the unknown check digit, the check digit calculation is...
position 7 6 5 4 3 2 1 first 7 digits of barcode 7 3 5 1 3 5 3 weight 3 1 3 1 3 1 3 partial sum 21 3 15 1 9 5 9 checksum 63
- The nearest multiple of 10 that is equal or higher than the checksum, is 70. Subtract them: 70 - 63 = 7, which is the check digit x of the barcode.
Binary encoding of data digits into EAN-13 barcode
To encode the 13-digit EAN-13 number, the digits are split into 3 groups; the first digit, the first group of 6 and the last group of 6. The first group of 6 is encoded using a pattern whereby each digit has two possible encodings, one of which has even parity (denoted with letter G) and one of which has odd parity (denoted with letter L). The first digit is encoded indirectly, by selecting a pattern of choices between these two encodings for the first group of 6 digits, according to the table below. (Unlike the other digits, the first digit is not represented directly by a pattern of bars and spaces.) All digits in the last group of 6 digits are encoded using a single pattern RRRRRR, the one also used for UPC.
If the first digit is zero, all digits in the first group of 6 are encoded using the pattern LLLLLL used for UPC, therefore, an UPC barcode is also an EAN-13 barcode with the first digit set to zero.
|First digit||First group of 6 digits||Last group of 6 digits|
|First group of 4 digits||Last group of 4 digits|
Note: Entries in the R-column are bitwise complements (logical operator: negation) of the respective entries in the L-column. Entries in the G-column are the entries in the R-column in reverse bit order. See pictures of all codes against a colored background.
Japanese Article Number
Japanese Article Number (JAN) is a barcode standard compatible with the EAN. Use of the JAN standard began in 1978. Originally, JAN was issued a flag code (EAN's number system) of 49. In 1992, JAN was newly issued an additional flag code of 45. In January 2001 the manufacturer code changed to 7 digits (9 digits including the flag code) for new companies.
How the 13-digit EAN-13 is encoded
The GTIN numbers, encoded to UPC-A, EAN-8 and EAN-13, all use similar encoding. The encoded information is repeated in plain text below the barcode.
The 13-digit EAN-13 number can be divided into 3 groups: first digit, left group of 6 digits, right group of 6 digits.
The barcode consists of 95 equally spaced areas (also called modules). From left to right:
- 3 areas to encode the start marker.
- 42 (6*7) areas making up the left group of 6 digits. This can be further subdivided into 6 subgroups, each consisting of seven areas. The subgroups encode digits 2-7. Each of these encodings can have even or odd parity. The parities taken together, indirectly encode the first digit of EAN-13.
- 5 areas to encode the marker for the center of the barcode.
- 42 (6*7) areas making up the right group of 6 digits. This can be further subdivided into 6 subgroups, each consisting of seven areas. The subgroups encode digits 8-13. Digits 8-13 are all encoded with even parity. Digit 13 is the check digit.
- 3 areas to encode the end marker.
Each area can be black bar (1) or white space (0). A maximum of four black bar areas can be grouped together, these make up a wide black bar. Likewise a maximum of four white space areas can be grouped together, these make up a wide white space.
The start marker and the end marker are encoded as 101. The center marker is encoded as 01010.
Each digit in EAN-13 (except digit 1, which is not directly encoded) consists of seven areas. A decimal digit is encoded so that it consists of two (wide) bars and two (wide) spaces.
The digits in the left group are encoded so that they always start with a white space, and end with a black bar. The digits in the right group are encoded so that they always start with a black bar, and end with a white space.
Finally, the combination of variable-width black bars and white spaces encodes the EAN-13 number.
The encoding is described in the following table:
|Digit||Digit encoding||Bar/Space widths (total of 7)||EAN-13 encoding
in relation to digit 1
For each digit there are three similar encodings (left odd, left even, right): Left even and right are mirror-symmetrical to each other. Left odd is the bitwise inverse of right.
The first digit from the left group is always encoded with odd parity, and the last digit of the right group is always encoded with even parity. Thus, it does not matter whether the barcode is scanned from the left or from the right: the scanning software can determine what is the beginning and end of the barcode, with the help of the fact that the first digit should have odd parity and the last digit should have even parity.
EAN-13 barcode example
- C1, C3:Start/end marker.
- C2: Marker for the center of the barcode.
- 6 digits in the left group: 003994.
- 6 digits in the right group (the last digit is the check digit): 155486.
- A digit is encoded in seven areas, by two black bars and two white spaces. Each black bar or white space can have a width between 1 and 4 areas.
- Parity for the digits from left and right group: OEOOEE EEEEEE (O = Odd parity, E = Even parity).
- The first digit in the EAN code: the combination of parities of the digits in the left group indirectly encodes the first digit 4.
The complete EAN-13 code is thus: 4 003994 155486.
By using the barcode center marker, it is possible for a barcode scanner to scan just one half of the barcode at a time. This allows reconstruction of the code by means of a helical scan of the barcode by an angle of approximately 45 degrees.
- EAN-8, another form of EAN barcode
- Electronic Data Interchange
- European Article Numbering-Uniform Code Council
- Global Electronic Party Information Register (GEPIR) a searchable distributed database of GS1 GTINs
- "Alumni Hall of Fame Members". University of Maryland Alumni Association. The University of Maryland. 2005. Archived from the original on 2007-06-23. Retrieved 2009-06-10.
After graduating from Maryland in 1951, George Laurer joined IBM as a junior engineer and worked up the ranks to senior engineer. In 1969, he returned to the technical side of engineering and was later assigned the monumental task of designing a code and symbol for product identification for the Uniform Grocery Product Code Council. His solution — the Universal Product Code — radically changed the retail world. Since then, he has enhanced the code by adding a 13th digit. Laurer retired from IBM in 1987. He holds some 25 patents and is a member of the university’s A. James Clark School of Engineering Hall of Fame.
- "Barcodes for Magazines".
- "Barcodes for Books".
- Prefix List, GS1.
- "EAN-13 SYMBOLOGY". www.barcodeisland.com.
- Check Digit Calculator, at GS1 US.
- "Bar Code Guide - Barcode Types - JAN". Retrieved 2016-05-02.
- "Infos zu EAN Codes Nummern" (in German). Ean-code.eu. Retrieved 27 September 2016.
Programming code for barcodes in ...
Call this function in VBA ( textboxEAN = EAN("123") ) or put it in an Excel-cell ( =EAN(SourceCell) )
Function EAN(Invoer As String) As String ' NOTICE: This code needs font 'Code EAN-13' from Eaglefonts.com for correct barcodes Dim C(1 To 13), CS, i As Integer Const L = 65, G = 75, R = 97 ' Cleanup Invoer = Right(String(12, "0") & Left(Invoer, 12), 12) ' Prepare For i = 1 To 12 C(i) = Val(Mid(Invoer, i, 1)) Next 'Make CheckSum CS = C(1) + C(3) + C(5) + C(7) + C(9) + C(11) + ((C(2) + C(4) + C(6) + C(8) + C(10) + C(12)) * 3) 'Generate control digit from checksum C(13) = (10 - (CS Mod 10)) Mod 10 '1st number EAN = Left(Invoer, 1) '2nd until 7th number EAN = EAN & Chr(C(2) + Choose(C(1) + 1, L, L, L, L, L, L, L, L, L, L)) EAN = EAN & Chr(C(3) + Choose(C(1) + 1, L, L, L, L, G, G, G, G, G, G)) EAN = EAN & Chr(C(4) + Choose(C(1) + 1, L, G, G, G, L, G, G, L, L, G)) EAN = EAN & Chr(C(5) + Choose(C(1) + 1, L, L, G, G, L, L, G, G, G, L)) EAN = EAN & Chr(C(6) + Choose(C(1) + 1, L, G, L, G, G, L, L, L, G, G)) EAN = EAN & Chr(C(7) + Choose(C(1) + 1, L, G, G, L, G, G, L, G, L, L)) 'Middle separator EAN = EAN & "*" 'Righthand numbers + control digit EAN = EAN & Chr(C(8) + R) & Chr(C(9) + R) & Chr(C(10) + R) & Chr(C(11) + R) & Chr(C(12) + R) & Chr(C(13) + R) 'End bars EAN = EAN & "+" End Function
function stringOnesZeros = ean13(eanNumber); % example: ean13('4003994155486') if isnumeric(eanNumber) eanNumber = sprintf('%013d', eanNumber); end if ~isstr(eanNumber) || length(eanNumber) ~= 13 disp('EAN Number is not 13 digits long') return; end; if sum(eanNumber>= '0' & eanNumber <= '9') ~= 13 disp('EAN Number is not 13 digits long') return; end; checksum = sum((eanNumber(1:end-1)-'0').*(rem([0:11],2)*2+1)); if rem(10 - (rem(checksum,10)), 10) ~= eanNumber(13)-'0' disp('Cheksum is wrong') end; eanNumber = eanNumber-'0'+1; firstDigit = [... 3 3 3 3 3 3 1 1 1 1 1 1;... 3 3 2 3 2 2 1 1 1 1 1 1;... 3 3 2 2 3 2 1 1 1 1 1 1;... 3 3 2 2 2 3 1 1 1 1 1 1;... 3 2 3 3 2 2 1 1 1 1 1 1;... 3 2 2 3 3 2 1 1 1 1 1 1;... 3 2 2 2 3 3 1 1 1 1 1 1;... 3 2 3 2 3 2 1 1 1 1 1 1;... 3 2 3 2 2 3 1 1 1 1 1 1;... 3 2 2 3 2 3 1 1 1 1 1 1]; Rcodes = [... 1 1 1 0 0 1 0;... 1 1 0 0 1 1 0;... 1 1 0 1 1 0 0;... 1 0 0 0 0 1 0;... 1 0 1 1 1 0 0;... 1 0 0 1 1 1 0;... 1 0 1 0 0 0 0;... 1 0 0 0 1 0 0;... 1 0 0 1 0 0 0;... 1 1 1 0 1 0 0]; Gcodes = fliplr(Rcodes); Lcodes = ~Rcodes; EANcodes = zeros(3,10,7); EANcodes(1,:,:) = Rcodes; EANcodes(2,:,:) = Gcodes; EANcodes(3,:,:) = Lcodes; cabTail = [1 0 1]; middle = [0 1 0 1 0]; stringOnesZeros = zeros(1, 95); stringOnesZeros(1:3) = cabTail; stringOnesZeros(end-2:end) = cabTail; stringOnesZeros(48+[-2:2]) = middle; k = 1:7; for i = 1:6 stringOnesZeros(3+(i-1)*7 + k) = EANcodes(firstDigit(eanNumber(1),i), eanNumber(i+1), k); end; for i = 1:6 stringOnesZeros(48+2+(i-1)*7 + k) = EANcodes(1, eanNumber(i+6+1), k); end; figure; imshow(~repmat(stringOnesZeros, 15, 1));
|Wikimedia Commons has media related to International Article Number (EAN).|
- International Article Number at GS1 website
- Barcode Perl modules at CPAN
- An example of EAN8/13 implementation
- EAN MediaWiki extension, a MediaWiki extension, visualizing EAN-13/EAN-8/UPC-A/Code39/Codabar barcodes by specifying only the numbers/symbols in the wiki-text.
- Implementing the EAN-13 barcode in C#
- Global Electronic Party Information Registry (GEPIR)
- upcdatabase, another online barcode database
- EAN-Search, free barcode database with 65 million entries
- EAN, UPC, ISBN, ISAN and IMDb Lookup Tool
- Online validation tool and graphics generator of EAN 8/13 codes
- Official JAN homepage (in Japanese)
- Deutsche Informationsseite über EAN & UPC Nummern