EAN-13 校验位的工作原理

每个 EAN-13 条形码的第 13 位数字都不是随意选定的——它是计算得出的。下面介绍公式、一个完整的示例,以及它为何重要。

EAN Studio · 更新于 2026 年 7 月

EAN-13 条形码编码了十三位数字。前十二位标识产品(GS1 前缀、公司前缀和商品编号);第十三位是校验位——由其余十二位计算得出的单个数字。它唯一的作用就是发现错误:如果其中一位被输错或误读,校验位就不再匹配,这次扫描就会被拒绝。

用通俗的话讲这个公式

从左到右读取这十二位数据位:

  1. 奇数位(第 1、3、5……位)上的数字乘以 1
  2. 偶数位(第 2、4、6……位)上的数字乘以 3
  3. 把所有结果相加得到一个总和。
  4. 校验位就是你必须加到这个总和上以达到下一个十的倍数的数字。用公式表示:校验位 = (10 − (总和 mod 10)) mod 10

末尾的这个 “mod 10” 对一种边界情况很重要:如果总和本身已经是十的倍数,则校验位是 0,而不是 10。

一个完整的示例

取这十二位数据位 400638133393。将它们与各自的权重排列出来:

数字400638133393
权重131313131313
乘积40018324193999

这些乘积相加得到 4 + 0 + 0 + 18 + 3 + 24 + 1 + 9 + 3 + 9 + 9 + 9 = 89。89 以上下一个十的倍数是 90,而 90 − 89 = 1。所以校验位是 1,完整的 EAN-13 就是 4006381333931

不想手动计算?校验位计算器可为 EAN-13、UPC-A、EAN-8 和 GTIN-14 即时完成这一计算,而EAN-13 生成器在你创建条形码时会自动添加校验位。

扫描器为何依赖它

当扫描器读取一个 EAN-13 时,它会对前十二位数字重复完全相同的计算,并将结果与第十三位比较。如果二者不一致,这次读取就会被丢弃。这一个额外的数字能捕捉到绝大多数单个数字的输入错误和许多换位错误——为避免在收银台扫描到错误的产品提供了廉价的保障。

同样的算法支撑着 UPC、EAN-8 和 GTIN-14

EAN-13 的方法其实就是 GS1 模 10 算法,并在整个家族中通用:UPC-A(11 位数据位)、EAN-8(7 位数据位)和 GTIN-14 / ITF-14(13 位数据位)都从右侧起使用相同的交替权重 3 和 1。只是长度不同;逻辑完全一样。

校验位不是完整的号码。计算校验位并不会生成一个已注册的产品号码。用于零售销售时,EAN-13 背后的 GTIN 由 GS1 分配。这个算法只是补全并验证一个你已经拥有的号码。

立即计算或生成

省去算术——在浏览器中获得校验位和完整号码。

打开校验位计算器

常见问题

什么是 EAN-13 校验位?

它是 EAN-13 条形码的第 13 位、也是最后一位数字,由前十二位计算得出。扫描器在每次读取时都会重新计算它,以发现输入错误或误读的号码。

如何计算 EAN-13 校验位?

将十二位数据位分别乘以交替的权重 1 和 3(第一位乘以 1),把乘积相加,然后校验位就是达到下一个十的倍数所需补足的数字。

同样的公式适用于 UPC-A 和 EAN-8 吗?

是的。UPC-AEAN-8 和 GTIN-14 都使用相同的 GS1 模 10 算法;只有数据位的数量不同。

如果校验位错了会怎样?

扫描器会重新计算校验位,如果不匹配就拒绝这次读取,因此无效或输入错误的号码根本无法作为有效产品被扫描。