Paste a product code and the format is identified by its length — UPC-A, EAN-13, GTIN-14, EAN-8, SSCC-18, ISBN-10, or ISBN-13. A complete code is validated with the arithmetic shown; a code that's one digit short gets its check digit computed and appended. Batch a whole product list, convert ISBN-10 ↔ ISBN-13, and see exactly why a marketplace calls a GTIN invalid. Everything runs in this tab; your codes are never uploaded.
One code per line, or a single-column CSV — paste or load a file. Choose whether to validate complete codes or complete short ones; mixed lists are fine, each line is treated by its own length.
Batch workflow neighbors: generate the codes' companion SKUs with the SKU generator, split a giant list with the CSV splitter, or turn the results CSV into JSON with the CSV to JSON converter.
Every code in the GS1 family — UPC-A, EAN-13, EAN-8, GTIN-14, SSCC-18 — uses the same mod-10 algorithm; only the length differs. Here it is, digit by digit, for the UPC-A body 01234567890:
| Digit | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Weight | ×3 | ×1 | ×3 | ×1 | ×3 | ×1 | ×3 | ×1 | ×3 | ×1 | ×3 |
| Product | 0 | 1 | 6 | 3 | 12 | 5 | 18 | 7 | 24 | 9 | 0 |
Sum of products: 0+1+6+3+12+5+18+7+24+9+0 = 85. The next multiple of ten is 90, so the check digit is 90 − 85 = 5, and the complete UPC-A is 012345678905. The weights always run ×3, ×1, ×3… starting from the digit immediately left of the check digit and moving left — which is why writing them left-to-right, the pattern depends on the code's length. That off-by-one is the single most common reason hand calculations (and, notably, AI assistants doing this from memory) get the wrong digit.
The names overlap because the standards merged over time. GTIN (Global Trade Item Number) is the umbrella term: a UPC-A is a GTIN-12, an EAN-13 is a GTIN-13, and a GTIN-14 adds a leading packaging-level indicator digit for cartons and cases. An EAN-8 is the short form for small packages, and an SSCC-18 is the 18-digit serial number on logistics labels — not a product code at all, but the check digit works identically. To calculate a GTIN check digit of any length, the algorithm above applies unchanged; the only thing that moves is where the ×3 weight lands, because it's anchored to the right end. A UPC-A becomes a valid EAN-13 by adding a leading zero — same code, same check digit — which is why marketplace listings sometimes show your 12-digit UPC as a 13-digit number.
ISBN-13 is an EAN-13 that starts with 978 or 979, and it uses the same mod-10 arithmetic as the barcodes above (with ×1 on the first digit, since it's 13 digits long). ISBN-10 is older and different: each digit is weighted 10, 9, 8… down to 2, the sum must be divisible by 11, and because the check digit can be ten, the letter X stands in for it — 097522980X is a valid ISBN-10 ending in a check "digit" of ten.
Converting ISBN-10 → ISBN-13: prefix 978, keep the first nine digits, drop the old check digit, and compute a fresh mod-10 check digit. 0306406152 becomes 9780306406157 — note the check digit changed from 2 to 7, because the algorithms are unrelated. Converting back strips the 978 and recomputes the mod-11 digit. The tool does both directions and shows both recalculations.
The 979 exception: only 978-prefixed ISBN-13s have an ISBN-10 form, because ISBN-10 predates the 979 range. A 979 ISBN-13 (most books registered since the 978 pool tightened) simply has no ISBN-10 — the tool refuses the conversion and says so rather than fabricating a number.
When a listing tool reports an "invalid GTIN" or "invalid UPC" error, the first and most common cause is exactly what this page checks: the check digit doesn't match the other digits, usually because one digit was mistyped or a spreadsheet stripped a leading zero somewhere upstream (Excel is notorious for turning 0123456789012 into 123456789012). Validating your codes before upload catches that class of rejection entirely — batch mode above exists for pre-flight-checking a whole inventory file.
But the honest boundary matters: a valid check digit is not a licensed, unique, or marketplace-accepted code. Real GTINs are issued under company prefixes licensed from GS1, the standards body that administers the system; marketplaces increasingly verify codes against GS1's records, and a mathematically valid number that was never issued — or was issued to a different company — can still be rejected or delisted. This page computes math; it does not issue numbers, and no calculator can. If you need legitimate GTINs, they come from a GS1 license; if a code you bought cheaply fails marketplace verification despite a correct check digit, the check digit was never the problem.
Marketplace naming note: eBay®, Etsy®, and Shopify® are trademarks of their respective companies; references here are nominative and this tool is not affiliated with or endorsed by any marketplace. Fee math for those platforms lives in the eBay fee calculator and the Etsy fee calculator.
As of mid-2026, GS1's "Sunrise 2027" program is pushing retailers and brands toward 2D codes (QR codes carrying a GS1 Digital Link) alongside the familiar linear barcode. The transition is additive: the GTIN — and its check digit — stays the identifier inside the QR code, and linear barcodes aren't disappearing from retail point-of-sale on any announced timeline. For sellers, nothing about check-digit math changes; the same GTIN simply gains a second, data-richer carrier. If that shifts materially, this paragraph will be updated — the date stamp above is there so you can tell how current it is.
No. Codes are validated by JavaScript in this tab — there's no upload endpoint on this page. Load it, go offline, and it keeps working.
Because marketplaces increasingly check whether the code was actually issued under a GS1-licensed prefix, not just whether the math works. A valid check digit rules out typos; it can't make an unissued or wrongly-owned number legitimate. See the honesty section above.
Because it's supposed to. ISBN-10 uses mod-11 arithmetic and ISBN-13 uses mod-10, so the same nine core digits produce different check digits in each form. A converter that keeps the last digit unchanged is broken.
ISBN-10 only ever covered the range that became the 978 prefix. Books issued 979 ISBNs have no ISBN-10 form at all — any tool that outputs one is inventing a number that collides with a different book.
Spreadsheets read a bare digit string as a number and strip leading zeros, so 0123456789012 silently becomes twelve digits and fails validation. Import the column as text, or keep the file as CSV and validate it here without opening it in a spreadsheet first.
No — a leading zero multiplies to zero and adds nothing to the weighted sum, which is exactly why a UPC-A and its zero-padded EAN-13 form share the same check digit.