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 → To | What happens |
|---|---|
| UPC-A → EAN-13 | A zero is prepended. The check digit does not change — it is the same product code. |
| EAN-13 → UPC-A | The leading zero is removed. Only works for codes that start with 0. |
| Any → GTIN-14 | An indicator digit is added at the front and the check digit is recalculated. |
| GTIN-14 → EAN-13 | The indicator is stripped and the check digit is recalculated (the case code's own check digit does not carry over). |
| GTIN-8 → anything | Refused — 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.
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.
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.
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).
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.
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.
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.
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.
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.
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.