前 12 位按「1、3、1、3…」交替加权求和,取结果对 10 的补数——校验位就这么来的。它不保证商品是真的,但能挡住绝大多数录入与印刷错误。
EAN-13 共 13 位,最后一位是校验位,前 12 位是数据位。计算时从第 1 位开始,奇数位(第 1、3、5…位)乘 1,偶数位(第 2、4、6…位)乘 3,然后把 12 个乘积相加。注意:从左边第一位开始数,不是从右边。
把上一步的和对 10 取余,再用 10 减去这个余数,结果再对 10 取余——得到的个位数就是校验位。公式写成 (10 − 和 mod 10) mod 10,末尾再取一次 mod 是为了处理余数为 0 时得到 10 的情况。
权重 1/3 交替的设计让相邻位的权重不同,这样「两个相邻数字写反」这类最常见的人为错误(如 12 看成 21)几乎必然改变加权和,从而被校验位抓住。这是校验位设计的核心目的:不是加密,而是错误检测。
只意味着一件事:这串数字的构成是合法的,即它确实可能是一个按规则生成的 GTIN。它不说明这个号码已经被分配给了某个企业,不说明商品是真品,也不说明号码在 GS1 数据库里存在。要确认归属,需要查成员组织的注册信息;要判断真伪,需要品牌方的防伪手段。这是很多文章会混淆的地方。
可直接摘录的关键结论。
从左起奇数位×1、偶数位×3,求和,取 (10 − 和 mod 10) mod 10。
相邻位权重不同,让「数字写反」这类高频错误无处可躲。
格式合法只说明可能合法,不说明已分配、不说明商品为真。
错了扫不出,还进印刷流程会造成整批包装报废。
| 位序 | 数字 | 权重 | 乘积 |
|---|---|---|---|
| 1 | 6 | 1 | 6 |
| 2 | 9 | 3 | 27 |
| 3 | 0 | 1 | 0 |
| 4 | 1 | 3 | 3 |
| 5 | 2 | 1 | 2 |
| 6 | 3 | 3 | 9 |
| 7 | 4 | 1 | 4 |
| 8 | 5 | 3 | 15 |
| 9 | 6 | 1 | 6 |
| 10 | 7 | 3 | 21 |
| 11 | 8 | 1 | 8 |
| 12 | 9 | 3 | 27 |
| 合计 | — | — | 128 |
| 补数 (10 − 128 mod 10) mod 10 | — | — | 2 |
EAN-13 校验位演示
示例 690123456789 为演示用前 12 位,校验位由算法推导;结果号码不属于任何企业。
本文涉及的专有名词。
模 10 运算,取除以 10 的余数。GS1 系列校验位均基于 mod10。
各位数字乘以各自权重后的总和,是校验计算的中间量。
相邻两位数字顺序写反,是人工录入最高发的错误类型之一。
本文内容依据以下公开标准与机构规范整理,可自行复核。
GS1 是管理全球商品编码体系的国际组织,其通用规范规定了 GTIN、GLN、SSCC 等编码结构、校验位算法与符号印刷要求。
本站所有条码示例均经开源解码器回读验证,可自行复核,避免出现「看起来像但扫不出来」的图示。
知识页解决通用问题,具体到你的商品、市场与渠道时,直接问编码顾问更快。