GTIN Format Converter

Amazon wants a UPC, Google wants a GTIN, your warehouse wants a case code — same product, three formats. Paste a column of barcodes, pick the target, get a clean CSV back.

🔒 Your data never leaves your browser.

What converts into what

From → ToWhat happens
UPC-A → EAN-13A zero is prepended. The check digit does not change — it is the same product code.
EAN-13 → UPC-AThe leading zero is removed. Only works for codes that start with 0.
Any → GTIN-14An indicator digit is added at the front and the check digit is recalculated.
GTIN-14 → EAN-13The indicator is stripped and the check digit is recalculated (the case code's own check digit does not carry over).
GTIN-8 → anythingRefused — see below.

Why GTIN-8 cannot be converted

GTIN-8 codes come from a separate GS1 number range for packages too small for a full barcode. Padding one with zeros produces a 13-digit number that belongs to a completely different company prefix. Any tool that "converts" a GTIN-8 to an EAN-13 is handing you someone else's product code.

Why some EAN-13 codes have no UPC form

A UPC-A is just an EAN-13 whose first digit is 0 — the 0 belongs to the US/Canada prefix range and can be left implicit. A code issued under, say, a German prefix (400–440) has no 12-digit form at all. US marketplaces accept the 13-digit value in their UPC/GTIN field.

Validation comes first

Every code is validated before it is converted. If the check digit is wrong or the value was damaged by a spreadsheet, the conversion is refused and the reason is shown — because the one thing worse than a broken barcode in one system is the same broken barcode in five.

Every check this tool runs (26 rules)

INPUT-001 Empty input

Nothing remains after trimming whitespace and formatting characters.

Fix: Enter a GTIN: 8, 12, 13 or 14 digits.

Source: Yaktool data-hygiene rule — derived from real-world spreadsheet and copy-paste corruption patterns, not from a GS1 specification. Every case is covered by a regression test in our test suite.

INPUT-002 Scientific notation corruption (Excel)

Input looks like "8.71E+12". Excel converts long numbers to scientific notation and permanently discards the middle digits — the original GTIN cannot be recovered from this value.

Fix: Go back to the source file. In Excel, format the column as Text (or prefix values with an apostrophe) before the numbers are converted, then re-export.

Source: Yaktool data-hygiene rule — derived from real-world spreadsheet and copy-paste corruption patterns, not from a GS1 specification. Every case is covered by a regression test in our test suite.

INPUT-003 Formatting characters removed

Spaces, dashes, thousands separators or invisible characters (zero-width spaces, BOM, non-breaking spaces) were stripped before validation. Common when copying from spreadsheets, PDFs or web pages.

Source: Yaktool data-hygiene rule — derived from real-world spreadsheet and copy-paste corruption patterns, not from a GS1 specification. Every case is covered by a regression test in our test suite.

INPUT-004 Full-width digits converted

Full-width digits (123, common in CJK input methods and documents) were converted to standard ASCII digits.

Source: Yaktool data-hygiene rule — derived from real-world spreadsheet and copy-paste corruption patterns, not from a GS1 specification. Every case is covered by a regression test in our test suite.

INPUT-005 Non-numeric characters

After cleaning, the input still contains characters that are not digits. A GTIN consists of digits only.

Fix: Remove letters and symbols. If your data has an internal SKU mixed in, extract the numeric barcode column.

Source: Yaktool data-hygiene rule — derived from real-world spreadsheet and copy-paste corruption patterns, not from a GS1 specification. Every case is covered by a regression test in our test suite.

INPUT-006 11 digits — leading zero likely stripped

UPC-A codes starting with 0 lose their leading zero when Excel treats them as numbers. An 11-digit value is not a valid GTIN, but it is very often a UPC-A missing its first 0.

Fix: Prepend a 0 and re-validate. To prevent this, format the barcode column as Text in Excel.

Source: Yaktool data-hygiene rule — derived from real-world spreadsheet and copy-paste corruption patterns, not from a GS1 specification. Every case is covered by a regression test in our test suite.

INPUT-007 Invalid length

A GTIN must be exactly 8 (GTIN-8/EAN-8), 12 (GTIN-12/UPC-A), 13 (GTIN-13/EAN-13) or 14 (GTIN-14/case code) digits.

Fix: Check for truncation or concatenated values. 7-digit values may be a GTIN-8 that lost a leading zero.

Source: GS1 — Global Trade Item Number (GTIN)

INPUT-008 Trailing ".0" removed (spreadsheet number conversion)

Input like "4006381333931.0" indicates the value passed through a tool that treated it as a floating-point number (Excel, pandas). The ".0" was stripped and validation continued — but check the rest of the column for worse corruption (scientific notation, lost zeros).

Fix: Format the column as Text at the source to stop numeric conversion.

Source: Yaktool data-hygiene rule — derived from real-world spreadsheet and copy-paste corruption patterns, not from a GS1 specification. Every case is covered by a regression test in our test suite.

CHECK-001 Check digit mismatch

The last digit must equal the GS1 Mod-10 checksum (weights 3,1,3,1… from the right) of the preceding digits. A mismatch means a typo, an OCR error, or a fabricated code.

Fix: Compare against the number printed under the barcode on the physical product. Do not simply replace the check digit unless you are sure the other digits are correct.

Source: GS1 — How to calculate a check digit manually

FORMAT-001 GTIN-12 ⇄ GTIN-13 equivalence

A UPC-A (GTIN-12) with a leading zero prepended is the same product code as its GTIN-13 form — the check digit does not change. Marketplaces may display either form.

Source: GS1 — Global Trade Item Number (GTIN)

FORMAT-002 13 digits starting 00000 — likely a mis-stored GTIN-8

GTIN-8 is an independent number range, NOT a zero-padded GTIN-13. A 13-digit value starting with 00000 usually means a GTIN-8 was stored in a 13-digit field; treating it as an EAN-13 misattributes its prefix.

Fix: If the source barcode is 8 digits, validate it as GTIN-8 (use the last 8 digits).

Source: GS1 — Global Trade Item Number (GTIN)

FORMAT-003 GTIN-14 indicator digit

The first digit of a GTIN-14 is the indicator: 1–8 = packaging level (e.g. case of the base item), 9 = variable-measure trade item, 0 = the value is equivalent to the contained GTIN-13.

Source: GS1 — Global Trade Item Number (GTIN)

FORMAT-004 GTIN-8 is its own number range

GTIN-8 (EAN-8) codes are allocated directly by GS1 for small packages. A GTIN-8 is not a truncated or zero-padded EAN-13, and its first digits are a GS1-8 prefix, not a company prefix.

Source: GS1 — Global Trade Item Number (GTIN)

RANGE-001 GS1 prefix attribution

The first three digits (in GTIN-13 form) identify the GS1 member organization that issued the number. This is NOT the country of manufacture — a product made anywhere can carry a prefix from any GS1 member organization.

Source: GS1 — GS1 Company Prefix

RANGE-002 Restricted-circulation number (in-store code)

Prefixes 020–029, 040–049 and 200–299 are reserved for restricted circulation: in-store codes, variable-measure items, internal numbering. These are valid barcodes but cannot be listed on public marketplaces (Amazon, Google Shopping…) as product GTINs.

Fix: Obtain a real GTIN from GS1 (or the brand owner) before listing this product publicly.

Source: GS1 — GS1 Company Prefix

RANGE-003 Coupon number range

Prefixes 050–059, 981–984 and 990–999 identify coupons, not products. A coupon code in a product feed will be rejected by marketplaces.

Source: GS1 — GS1 Company Prefix

RANGE-004 ISBN (Bookland 978/979)

Prefixes 978 and 979 are book identifiers (ISBN-13 in EAN form); 979-0 specifically is ISMN for printed music. Valid as a barcode, but book listings usually require the ISBN in the dedicated ISBN field.

Source: GS1 — GS1 Company Prefix

RANGE-005 ISSN (977)

Prefix 977 identifies serial publications (journals, magazines) — the EAN form of an ISSN, not a regular product GTIN.

Source: GS1 — GS1 Company Prefix

RANGE-006 Prefix not in our table

The prefix is not in this tool's GS1 prefix table. GS1 assigns new prefixes over time, so this alone does not make the code invalid — but verify the source of the number.

Source: GS1 — GS1 Company Prefix

PLAUS-001 All zeros

An all-zero value passes the checksum arithmetic but is not a real GTIN — it is the classic placeholder for "no barcode".

Fix: Obtain the real GTIN for this product; marketplaces reject all-zero codes.

Source: Yaktool plausibility rule — these values pass the GS1 checksum but are placeholders that marketplaces reject in practice. Sourced from documentation samples and observed feed data, not from a GS1 specification.

PLAUS-002 All identical digits

Every digit is the same (e.g. 4444444444444). Even when the checksum happens to pass, such values are placeholders, not issued GTINs.

Fix: Obtain the real GTIN for this product.

Source: Yaktool plausibility rule — these values pass the GS1 checksum but are placeholders that marketplaces reject in practice. Sourced from documentation samples and observed feed data, not from a GS1 specification.

PLAUS-003 Known placeholder / sample code

This exact value is a well-known demo code from documentation and tutorials (e.g. 1234567890128). It passes the checksum but does not identify a real product, and marketplaces blacklist these.

Fix: Replace with the GTIN actually assigned to your product.

Source: Yaktool plausibility rule — these values pass the GS1 checksum but are placeholders that marketplaces reject in practice. Sourced from documentation samples and observed feed data, not from a GS1 specification.

CONV-001 Not converted — the input is not a valid GTIN

Conversion is refused when the input fails validation. Converting a code with a broken check digit or corrupted digits would spread one bad number across every sales channel.

Fix: Fix the validation errors first, then convert.

Source: GS1 — Global Trade Item Number (GTIN)

CONV-002 GTIN-8 cannot be converted

GTIN-8 is an independent GS1 number range allocated for small packages — it is not a shortened EAN-13. Zero-padding a GTIN-8 to 13 digits produces a number that belongs to a different company prefix entirely.

Fix: Use the GTIN-8 as-is. If a channel demands 13 or 14 digits, zero-pad only inside that channel's own field (as GS1 databases do), never as a new product code.

Source: GS1 — Global Trade Item Number (GTIN)

CONV-003 No UPC-A form for this GTIN-13

Only GTIN-13 codes that start with 0 (a US/Canada company prefix) have a 12-digit UPC-A form. A code issued under any other prefix simply has no valid UPC representation.

Fix: Keep the 13-digit form — US marketplaces accept GTIN-13 values in their GTIN/UPC fields.

Source: GS1 — Global Trade Item Number (GTIN)

BATCH-001 Duplicate in batch

The same GTIN appears more than once in the batch (compared after zero-padding to 14 digits, so a UPC and its GTIN-13 form count as the same code). Duplicate GTINs across different products break marketplace listings.

Fix: Each distinct product/packaging level needs its own GTIN.

Source: Yaktool data-hygiene rule — derived from real-world spreadsheet and copy-paste corruption patterns, not from a GS1 specification. Every case is covered by a regression test in our test suite.

The converter validates before it converts, so a code that fails any of these is refused rather than propagated to another channel. That is why the list is the complete rule set rather than a conversion-only subset.