8 min read

EAN vs UPC: GTIN, MPN and Which Identifier Goes Where

An EAN-13 is a GTIN-13, a UPC-A is a GTIN-12. Storage, check digits, GTIN-14, MPN, SKU and why a valid GTIN still gets rejected.

Ben Adams, founder of SKULaunch

Ben Adams

Founder

An EAN-13 is a GTIN-13, a UPC-A is a GTIN-12. Storage, check digits, GTIN-14, MPN, SKU and why a valid GTIN still gets rejected.

The EAN vs UPC question has a one-line answer: an EAN-13 is a GTIN-13 and a UPC-A is a GTIN-12, so they are the same kind of number at two different lengths. GS1's own support content puts it exactly that plainly. Everything that makes product identifiers hard sits either side of that fact, in the difference between a number, the barcode that carries it, and how far the number travels.

This is a reference page for the identifiers a catalogue actually has to carry: GTIN in its four lengths, UPC, EAN, MPN, ISBN, ASIN and SKU. It is written for the person who has to decide which field goes in which column of a channel feed, and who has had a listing rejected for an identifier that looked perfectly valid.

Three questions that resolve almost everything

Before the detail, the frame. Almost every identifier argument dissolves once you separate three things:

  • The number. A GTIN is a number. It is licensed from GS1, globally unique, and it identifies a class of trade items.
  • The carrier. EAN-13, UPC-A, UPC-E, EAN-8, ITF-14, GS1-128, GS1 DataMatrix and a QR code with a GS1 Digital Link are all barcodes. They carry a number. They are not numbers themselves.
  • The scope. A GTIN is global. An MPN is unique only within one manufacturer. An ASIN works inside Amazon. A SKU works inside your business. A restricted circulation number looks like a GTIN and is explicitly not one.

When somebody says "the barcode" and means the thirteen digits printed underneath it, that is the confusion this page exists to remove.

EAN vs UPC: the actual difference

Searched as UPC vs EAN or the other way round, the answer is the same. A GTIN comes in four data structures: GTIN-8, GTIN-12, GTIN-13 and GTIN-14. The mapping onto the identifiers people name day to day:

  • UPC-A is the barcode that encodes a GTIN-12, twelve digits. The GTIN-12 is the only GTIN a UPC-A can carry.
  • EAN-13 is the barcode that encodes a GTIN-13, thirteen digits. Again, the only one it can carry.
  • EAN-8 encodes a GTIN-8. GTIN-8s are issued individually by GS1 member organisations for genuinely small packs, not self-assigned from your own prefix.
  • UPC-E is not a shorter identifier. It is a GTIN-12 printed in six digits using zero suppression, and those zero-suppressed numbers may only appear in UPC-E symbols.
  • JAN is a GTIN-13 issued under a Japanese GS1 prefix. Structurally identical to an EAN-13.
  • ITF-14 is the barcode for a GTIN-14, used on outer cases that do not pass a retail till.

"EAN-14" is not current GS1 terminology. It does not appear in the GS1 Standards Glossary and it is not part of GS1's EAN/UPC barcode family, which is only EAN-8, EAN-13, UPC-A and UPC-E. The fourteen-digit number is a GTIN-14; the fourteen-digit barcode usually meant is an ITF-14.

So the practical EAN vs UPC difference is one digit and one region. GTIN-12 is only issued in North America. A US supplier moving into Europe has no problem, because a twelve-digit number sits inside a thirteen-digit field without alteration. A European supplier moving into the US can have a real one, because there is no twelve-digit representation of a thirteen-digit number that starts with anything other than zero. GS1 acknowledges this directly: some smaller shops in the US and Canada cannot handle EAN-13 and will ask for a twelve-digit code. The fix is to obtain a GTIN-12 from GS1 in North America, not to truncate the one you have. A GTIN must not be altered at any point in the supply chain, and a truncated EAN-13 with a recalculated check digit is somebody else's product.

How to store a GTIN so nothing breaks

GS1's recommendation is specific and almost nobody follows it: store every GTIN as a fourteen-digit, fixed-length, right-justified, zero-filled text field. The word "text" is doing the work.

Padded to fourteen digits, all four structures line up:

  • A GTIN-14 occupies all fourteen positions.
  • A GTIN-13 gets one leading zero.
  • A GTIN-12 gets two.
  • A GTIN-8 gets six.

Zero-padding is safe because it does not change the check digit. The UPC-A 036000291452 becomes 0036000291452 and then 00036000291452, and the check digit stays 2 in all three. That is a property of the algorithm, not a convention, so a fourteen-digit store is lossless.

The reason it matters is the spreadsheet. Excel strips leading zeros so that formulas work, and displays long numbers in scientific notation. A fourteen-digit GTIN sits inside Excel's fifteen significant digit limit, so the damage there is lost leading zeros and ugly display rather than lost digits. An eighteen-digit SSCC does not: anything past the fifteenth digit is rounded to zero, silently. If your product data exports pass through a spreadsheet at any point, that distinction tells you which fields are merely inconvenienced and which are corrupted.

What the digits mean, and what they do not

A GTIN is a GS1 company prefix, an item reference, and a check digit, and unlike a classification such as ETIM or eCl@ss it encodes nothing about what the product is. The prefix is a licensed string of four to twelve digits issued by a GS1 member organisation, and its length determines your capacity: the shorter the prefix, the more item references you get. GS1 US sells capacities from ten products to one hundred thousand. When a range is used up you cannot extend it, you get a new prefix.

The licence condition worth knowing is that a GS1 company prefix may not be sold, leased or given, in whole or in part, for use by another company. That single sentence is the reason resold barcodes cause trouble, which is covered below.

The check digit, stated correctly

Start from the digit immediately to the left of the check digit and work leftwards, applying weights of three, one, three, one and so on. Add the results. Subtract the total from the nearest equal or higher multiple of ten. That is the check digit, and the same method covers GTIN-8, GTIN-12, GTIN-13, GTIN-14 and SSCC.

A great deal of published guidance states this left to right as "multiply the odd positions by three". That is correct for a GTIN-12 and wrong for a GTIN-13, where the first digit is weighted one. If you implement it left to right you have to implement it once per length. Right to left from the check digit is true for every key.

The country-of-origin myth

GS1 could not be clearer: the GS1 prefix does not show the country of origin. What the leading digits identify is the GS1 member organisation that allocated the number. A company headquartered in one country can manufacture anywhere, and its prefix follows the organisation that issued it, not the factory.

Roughly: 001 to 019, 030 to 039 and 060 to 139 are GS1 US; 300 to 379 GS1 France; 400 to 440 GS1 Germany; 450 to 459 and 490 to 499 GS1 Japan; 500 to 509 GS1 UK. Useful for working out who to ask about a number. Useless as a provenance claim, and quoting it as one on a product page is a compliance risk rather than a feature.

GTIN-14, cases and pallets

A GTIN-14 identifies a homogeneous trade item grouping, a case or a layer where every unit inside is identical. It is built from the base GTIN with an indicator digit on the front:

  • From a GTIN-13: indicator digit, then the first twelve digits of the GTIN-13, then recalculate the check digit.
  • From a GTIN-12: a zero as filler, then the indicator digit, then the eleven GTIN-12 digits, then recalculate the check digit.

The recalculation is the implementation bug that shows up most often. Position fourteen is the check digit for the whole fourteen-digit number, not the base GTIN's check digit carried forward.

Indicator digits 1 to 8 are used for homogeneous groupings, and here is the fact that kills a persistent myth: there is no worldwide consensus on which number indicates which packaging level, and no significance should be built into the number. Brand owners allocate indicator digits to their own products as they see fit. Anyone parsing "1 means inner, 2 means case, 3 means pallet" is inventing semantics that GS1 explicitly says are not there. Indicator digit 9 is the exception, and it does mean something: a variable measure trade item.

Two further constraints. A trade item grouping does not have to be a GTIN-14; it can also be a GTIN-13 or GTIN-12. But since 1 January 2023, a GTIN-8 may not be used for groupings at all.

SSCC is not the pallet's GTIN

An SSCC is eighteen digits and identifies one specific physical logistics unit, serialised. A GTIN identifies a class of items. Two identical pallets of the same product share a GTIN-14 and carry different SSCCs. An SSCC is never a product identifier and must never be sent in a GTIN field. GS1-128 is the barcode symbology that usually carries an SSCC on a logistics label, and it can carry a GTIN-14 too, which is where some of the confusion starts.

MPN: what an MPN number is and who controls it

An MPN number is a manufacturer part number, and Google's product data specification gives the cleanest definition available: MPNs uniquely identify a specific product among all products from the same manufacturer. Read that scope carefully. Within one manufacturer. There is no central registry, no issuing authority and no allocation rule, so two unrelated manufacturers can and do use the same string.

That is why channels ask for brand and MPN as a pair, never MPN alone. eBay's API will error if the brand and MPN container is used without both. Google's rule for products with no GTIN is brand plus MPN together.

Format rules barely exist. Google accepts a string of one to seventy characters, alphanumeric Unicode with ASCII recommended. No check digit, no length standard, no charset standard. And the ownership rule is explicit: use the MPN assigned by the manufacturer, and unless you are the manufacturer, do not use a value you have created yourself.

Google's actual conditional rule

This is the rule most often paraphrased wrongly, so here it is as documented. GTIN is strongly recommended if the product is widely manufactured and has one, and products with an assigned GTIN submitted without it may get limited visibility. MPN is required for all products without a manufacturer-assigned GTIN. Brand is submitted where the product has a clearly associated brand. With or without a GTIN, Google recommends supplying brand and MPN for everything.

The identifier_exists attribute is only for products that genuinely have no assigned identifiers: custom or one-of-a-kind goods, art, handmade items, and products made before GTINs existed such as antiques and books published before 1970. And you cannot opt out by declaration. Google fires an "incorrect product identifier" error when you set it false for a product it believes has a GTIN, based on the identifier appearing in similar offers. There is more on getting a feed through validation in the guide to Google Merchant Center product data.

Other channels are similar in shape and different in detail. eBay requires identifiers in most categories and accepts locale-specific substitute text such as "Does not apply" for genuinely identifier-less items, with the stated penalty that a listing loses search visibility if the identifier does in fact exist. Walmart accepts GTIN at fourteen digits, UPC at twelve, EAN at thirteen and ISBN at ten or thirteen, recommends obtaining identifiers directly from GS1, and states that listings with invalid product IDs are removed and may lead to account suspension. Holding one identifier set that satisfies all of them at once is the job of a marketplace syndication layer rather than of a per-channel spreadsheet.

SKU, ASIN and the identifiers that do not travel

A SKU is not a product identifier. The strongest available evidence for that is an absence: the terms SKU and stock keeping unit do not appear anywhere in the GS1 Standards Glossary. Shopify's own documentation makes the scope explicit, describing SKUs as an optional code that identifies the product within your business, with a format you create yourself. Compare that with a GTIN, issued under a licensed prefix that may not be sold, leased or given away. One is self-minted and internal. The other is licensed and global. That asymmetry is the whole reason a SKU cannot be sent where a GTIN is expected.

The dangerous case is a numeric SKU that happens to be twelve or thirteen digits long. It can pass a length check, and if it accidentally satisfies the check digit it may be accepted as some other company's product. Google has a specific error for exactly this, where the GTIN submitted is valid but incorrect, usually because another product's GTIN has been reused.

An ASIN is ten letters and numbers assigned by Amazon and meaningful only inside Amazon's catalogue. GTINs are always numeric, so an alphanumeric ASIN cannot be a GTIN and cannot be submitted where one is required.

Automotive is a special case again, because a PIES file carries the GTIN with a qualifier declaring which type it is; ACES and PIES has the detail. ISBN, ISSN and ISMN are the interesting cases, because they genuinely are GTIN-13s. GS1 allocates prefix 977 to serial publications, 978 and 979 to Bookland for books, with a portion of 979 sub-allocated for printed music. An ISSN barcode is 977, then the seven ISSN digits with the hyphen and the ISSN's own check character removed, then two variable digits the publisher can use, then a GS1 modulo-10 check digit. The same principle applies to ISBN-13: the last digit is a GS1 check digit, not the ISBN-10 check character. Which is how you can tell the two apart at a glance, because an ISBN-10 check character can be the letter X and a GTIN check digit is always 0 to 9.

When you need a new GTIN

The GTIN Management Standard sets ten rules, and three guiding principles that decide whether a change matters at all. At least one must apply before a GTIN change is required:

  1. Is a consumer or trading partner expected to distinguish the changed product from the previous one?
  2. Is there a regulatory or liability disclosure requirement?
  3. Is there a substantial impact on the supply chain, in how the product is shipped, stored or received?

The rules that come up most in catalogue work:

  • Declared net content. Any change to the legally required declared net content printed on the pack needs a new GTIN. There is no threshold. Any change.
  • Dimensional or gross weight change. A change to a physical dimension on any axis, or to gross weight, of more than 20 per cent needs a new GTIN, and a new one at every packaging level above the retail unit.
  • Primary brand. A change to the primary brand on the trade item needs a new GTIN.
  • Pack or case quantity. This is the one people get backwards. Changing the number of units in a case needs a new case GTIN. The retail unit's GTIN does not change.
  • Price on pack. Any addition, change or removal of a price printed on the package needs a new GTIN.
  • Certification marks. Adding or removing a mark with regulatory or consumer significance, such as organic, kosher, halal, CE or UL, needs a new GTIN.

Two framing caveats from the standard itself. Local legal and regulatory requirements supersede it. And the rules are a minimum: a brand owner may change a GTIN more often than the rules require.

On reuse, the rule changed and a lot of published advice has not caught up. Since 1 January 2019, a GTIN allocated to a trade item shall not be reallocated to another trade item. There are two exceptions: a GTIN assigned to an item that was never actually produced may be reused twelve months after it is removed from the catalogue, and an item withdrawn and reintroduced unchanged keeps its original GTIN. The old 48-month waiting period applies only to items discontinued before the end of 2018, and after that single reuse those numbers must never be reallocated again.

Why a valid-looking GTIN gets rejected

There are four distinct failure modes and they have different fixes. Google's error taxonomy maps them neatly:

  • Wrong format. Non-numeric characters, a length that is not 8, 12, 13 or 14, or a failed check digit. An arithmetic or transcription problem.
  • Valid but incorrect. A well-formed GTIN that belongs to a different product, usually copied or reused. Nothing about the number is wrong; the assignment is.
  • Restricted range. Numbers beginning 2, 02 or 04 fall in a reserved range.
  • Coupon range. Numbers beginning 05, 98x or 99 are coupon identifiers rather than globally valid product numbers.

The restricted range deserves a sentence of its own, because it is where in-house numbers bite. GS1 uses prefix 02 for restricted circulation numbers within a geographic region, 04 for restricted circulation numbers within a company, and 20 to 29 for regional restricted circulation numbers. GS1's own wording is blunt: thirteen-digit numbers created using prefix 02 and 20 through 29 are not GTINs and are not globally unique. These are the numbers your scales print in store and your warehouse assigns to own-label lines. They will pass a check digit test and fail as identifiers, because the problem is scope, not arithmetic. Any product data quality check worth running tests both.

GTINs you did not buy from GS1

Identifiers bought from a barcode reseller are the most common reason a listing is rejected for a number that validates perfectly, and it is worth understanding the mechanism rather than treating it as bad luck. Barcode resellers subdivide a prefix licensed to themselves, which is why a reseller GTIN continues to show their company as the licensee in GS1's registry rather than yours. GS1 US states that GTINs not issued directly by GS1 may be linked to another company and do not comply with GS1 standards. The registry behind this, Verified by GS1, answers three questions, and the second is the one that matters here: to which company a GTIN is licensed.

What the channels do about it varies, and the difference is worth knowing precisely. Amazon's seller policy, as quoted by both GS1 US and GS1 Ireland, says it verifies identifier authenticity against the GS1 database and treats non-matching codes as invalid. Walmart's own documentation says it cross-references product IDs with the GS1 database and that invalid IDs lead to listing removal and possible account termination. Google documents format, check digit, restricted ranges, coupon ranges and consistency with similar offers, but does not document a licensee-ownership check. Do not assume the three behave the same way.

Prices, as published in September 2026, also differ by member organisation in structure and not just amount. GS1 US charges by capacity: from $250 initial and $50 annual for up to ten products, through $2,500 and $500 for up to a thousand, to $10,500 and $2,100 for up to a hundred thousand, with single GTINs at $30 one-off and no renewal. GS1 UK charges by company turnover instead, from £50 a year for up to £99,999 turnover with ten GTINs included, up to £4,250 a year for over £1bn turnover with a hundred thousand included. So "GS1 costs X" is never a global statement, and the cheapest route for a small supplier depends on which country they are in.

What changes by 2027

GS1's 2027 commitment is widely reported as a deadline for retiring one-dimensional barcodes. It is not. The ratified guideline says the initial goal is for retail point-of-sale scanning to be globally capable of reading and processing the GTIN from both existing linear and 2D barcodes by the end of 2027. GS1 Global Office's wording is 2D capability "in addition to existing linear barcodes". GS1 US adds that trading partner requirements, not GS1, will guide when dual markings are no longer needed.

It is also a capability target for retailers' scanning estates rather than a mandate on brands, and it goes by two names: GS1 Global Office calls it Ambition 2027 and GS1 US markets it as Sunrise 2027. The symbols in scope are GS1 DataMatrix, and QR Code or Data Matrix carrying GS1 Digital Link syntax.

The structural point for anyone modelling data now: in a GS1 Digital Link URI the GTIN appears in the path after /01/, with batch, serial and variant qualifiers after it. Digital Link is a representation of the GTIN, not a replacement for it, so the identifier you already hold remains the primary key. What 2D adds is room for the batch, expiry and serial data that a linear barcode has no space for, and a URL that resolves to product information. If you are planning what your catalogue needs to carry, that data has to exist and be correct before the carrier changes, which is an argument for getting attributes and identifiers in order now rather than treating 2027 as the trigger. The same discipline underpins standards-based product data generally: the format changes every few years, the underlying data quality requirement does not.

Key takeaways

  • EAN vs UPC is one digit and one region. An EAN-13 is a GTIN-13, a UPC-A is a GTIN-12, and GTIN-12s are only issued in North America.
  • Store every GTIN as a fourteen-digit, right-justified, zero-filled text field. Padding never changes the check digit.
  • Excel loses leading zeros on a GTIN and silently corrupts an eighteen-digit SSCC past the fifteenth digit.
  • The leading digits identify the issuing GS1 member organisation, never the country of origin.
  • Calculate the check digit right to left from the check digit position, weighting three then one. The left-to-right version is wrong for GTIN-13.
  • A GTIN-14's check digit is recalculated, and its indicator digit carries no standard packaging meaning except 9, which means variable measure.
  • An MPN number is unique only within one manufacturer, which is why brand and MPN travel as a pair. Google requires MPN for anything without a manufacturer-assigned GTIN.
  • SKU and ASIN do not travel. Neither is a GTIN, and a numeric SKU sent as a GTIN is the failure that is hardest to spot.
  • Since 2019 a GTIN is never reused. Any change to declared net content, or more than 20 per cent on a dimension or gross weight, needs a new one.
  • A valid check digit does not make a valid GTIN. Restricted circulation numbers beginning 02, 04 or 2x pass the arithmetic and are explicitly not GTINs.
  • Sunrise 2027 and Ambition 2027 are the same thing, and both mean 2D capability alongside linear barcodes, not instead of them.

See SKULaunch in action

Watch how we handle AI enrichment, supplier onboarding, and catalogue scale in a live 30-minute demo.

Book a free demo →

IN THIS ARTICLE

Get this in your inbox

Fortnightly. The best thinking on product data ops, straight to you.

Subscribe free

SKULAUNCH PLATFORM

See how it works

Watch AI enrichment and supplier onboarding in a live demo.

Book a demo →
© 2026 SKU Launch Ltd. All rights reserved.
Built for e-commerce teams who are done doing it by hand.