GTIN 校验位计算器

粘贴不含校验位的数字(7、11、12 或 13 位),得到补全后的条码 —— 整个计算过程都摊开给你看,而不只是答案。

🔒 你的数据不会离开浏览器。

各种输入长度如何解读

本工具从不猜。可能有两种含义的长度会同时展示两种解读:

你粘贴的是解读
7 位GTIN-8 的数据位 → 补全为 8 位
8 位完整的 GTIN-8 → 验证校验位
11 位UPC-A 的数据位 → 补全为 12 位
12 位两种都算:EAN-13 的数据位(补全)以及完整的 UPC-A(验证)
13 位两种都算:GTIN-14 的数据位(补全)以及完整的 EAN-13(验证)
14 位完整的 GTIN-14 → 验证校验位

如何手算 GTIN 校验位

校验位是 GS1 的模 10 校验和。从数据位的最右一位向左,交替乘以 3 和 1,再把乘积相加。校验位就是把这个和补足到下一个 10 的倍数所需的那个数。

以 EAN-13 数据位 400638133393 为例:加权和是 89,下一个 10 的倍数是 90,所以校验位是 90 − 89 = 1,完整条码是 4006381333931。在上面粘贴任意数据位,就能看到针对你的号码算出的这张表。

为什么 UPC 和 EAN 用的是同一条规则

所有长度的 GTIN 共用同一个校验和定义,锚定在号码的右端。这就是为什么 UPC-A 前面补一个零就成了它的 EAN-13 形式,而校验位不变 —— 也是为什么这个计算器能用一套算法处理所有格式。

本工具应用的全部规则(共 9 条)

INPUT-001 输入为空

去掉空白和格式字符之后什么都不剩。

修复: 请输入一个 GTIN:8、12、13 或 14 位数字。

来源: 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 科学计数法损坏(Excel)

输入形如 “8.71E+12”。Excel 会把长数字转成科学计数法,并永久丢弃中间的数位——原始 GTIN 无法从这个值还原。

修复: 回到源文件。在 Excel 里先把该列设为「文本」格式(或在数值前加一个半角单引号),再重新导出。

来源: 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 已移除格式字符

校验前去掉了空格、连字符、千分位分隔符,以及不可见字符(零宽空格、BOM、不换行空格)。从表格、PDF 或网页复制时很常见。

来源: 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 已转换全角数字

全角数字(123,常见于中日韩输入法与文档)已转换为标准的半角数字。

来源: 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 含非数字字符

清洗之后,输入里仍有不是数字的字符。GTIN 只由数字组成。

修复: 去掉字母和符号。如果数据里混进了内部 SKU,请单独取出条码所在的数字列。

来源: 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 位——很可能被吃掉了前导零

以 0 开头的 UPC-A 被 Excel 当作数字处理时会丢掉前导零。11 位本身不是合法的 GTIN,但它极常见地是一个丢了首位 0 的 UPC-A。

修复: 补一个 0 后重新校验。要从根上避免,请在 Excel 里把条码列设为「文本」格式。

来源: 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 长度不合法

GTIN 必须恰好是 8 位(GTIN-8 / EAN-8)、12 位(GTIN-12 / UPC-A)、13 位(GTIN-13 / EAN-13)或 14 位(GTIN-14 / 箱码)。

修复: 检查是否被截断或与其他值连在了一起。7 位的值可能是丢了前导零的 GTIN-8。

来源: GS1 — Global Trade Item Number (GTIN)

INPUT-008 已移除末尾的 “.0”(表格软件的数值转换)

形如 “4006381333931.0” 的输入,说明这个值经过了某个把它当浮点数处理的工具(Excel、pandas)。“.0” 已被去掉、校验照常进行——但请检查该列其余的值有没有更严重的损坏(科学计数法、丢失的零)。

修复: 在源头把该列设为「文本」格式,从根上阻止数值转换。

来源: 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 校验位不匹配

最后一位必须等于前面各位按 GS1 模 10 算法(自右起 3、1、3、1… 交替加权)算出的校验值。不匹配意味着录入错误、OCR 识别错误,或者这个码是编造的。

修复: 与实物包装上条码下方印的数字逐位核对。不要直接把校验位改成算出来的那个数,除非你确认其余各位都是对的。

来源: GS1 — How to calculate a check digit manually

校验位本身是算出来的而不是判定出来的,所以它出现在结果里,而不是作为一条 finding —— 这里列出 CHECK-001,是因为它正是被应用的那条算法。号段与占位码检查属于完整校验器;本工具不做那些声明。

关于这些规则。 每一条都有编号、严重级别和通俗解释。每个来源链接都已登记在案,并对线上页面实际复验过,而不是凭印象写上去的;本工具的来源最近一次复验于 23 August 2026. 规则如何编写、测试与保持更新 →