GS1 代码校验器

所有不是商品代码的 GS1 代码:托盘标签上的 SSCC、用来命名一个地点的 GLN,以及另外八种 —— 可回收资产、服务关系、单据、发货批、装运、优惠券与型号。粘贴一个,或者一整列。

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

自动模式覆盖 SSCC 与 GLN;其余八种代码长度互相重叠,请选你要的那一种。

GLN 与 GTIN-13 长得一模一样

两者都是十三位。两者带同样的模 10 校验位。两者出自同一个 GS1 前缀池。数字本身完全没有告诉你这个号码标识的是一件商品还是一个地点 —— 只有它所在的字段才说明。

这一点要紧,是因为不少在线校验器会对着一个仓库的 GLN 自信地宣布「有效的 GTIN-13」,而下游真有人信。所以对十三位数字,本页同时给你两种读法,并告诉你该去问哪个问题,而不是替你挑一个然后装作很确定。

17 位不是打字错误

SSCC 是十八位,而且非常常以零开头。用表格软件打开那一列、让它按数字处理,那个零就没了 —— 剩下十七位,一个任何接收系统都不会接受的值。当补回这个零能得到正确的校验位时,本页会明说,并把号码还给你。

首位不是包装层级

GTIN-14 以一位指示位开头,它编码包装层级:1 表示中包装,2 表示整箱,依此类推。SSCC 同样以一位数字开头,看上去理应是同一个意思。但它不是 —— 那是一位扩展位,由签发企业自由选定,纯粹为了扩大它的流水号空间。从中读出物流含义是个错误,本页每次都会把它点出来。

本工具不会做什么

它不会把号码拆成「厂商识别代码」和「流水参考代码」。GS1 厂商识别代码在 7 到 12 位之间,而它到哪里结束记录在 GS1 的注册库里 —— 不在号码里。一个我们无从知道的拆分,做出来就是编造的,所以我们把你指向 GEPIR。

本工具执行的全部检查(共 12 条规则)

KEY-C01 校验位错误

SSCC 与 GLN 都以一位 GS1 模 10 校验位结尾,由它前面各位算出。不匹配意味着号码中某一位是错的 —— 这不是格式上的挑剔,接收方系统会直接拒收。

修复: 使用给出的应有校验位,或者照着源标签重新录入号码。

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

KEY-L01 该键的长度不对

SSCC 恰好 18 位,GLN 恰好 13 位。与 GTIN 不同,这两者都没有更短的变体,所以长度不同不是「另一种格式」,而是一个已损坏的值。

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

KEY-L02 少一位 —— 前导零多半被吃掉了

SSCC 极常以 0 开头,而表格软件把这一列当数字处理时会悄悄丢掉它,剩下 17 位。17 位几乎从来不是打字错误,几乎总是这个原因。

修复: 补回前导零,并在重新导出前把该列设为「文本」格式。

来源: That spreadsheets drop leading zeros from numeric cells is documented by Microsoft; the SSCC length itself comes from the GS1 General Specifications.

KEY-A01 AI (00) 前缀跟着号码一起被复制了

这个值以应用标识符 00 开头 —— 它在 GS1-128 条码里用来引出 SSCC,但它本身不是 SSCC 的一部分。扫描器和 EDI 文件里常带着它,数据库里不该有。

修复: 存 AI 后面的那 18 位数字,不要把 AI 一起存进去。

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

KEY-E01 首位是扩展位,不是包装层级

SSCC 以一位扩展位开头,企业可自行分配以扩大流水号容量。它不携带任何含义。之所以要专门说明,是因为外形相似的 GTIN-14 首位是指示位,而那一位确实编码包装层级 —— 两者经常被搞混。

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

KEY-X01 GLN 与 GTIN-13 在数字上无法区分

两者都是 13 位,都带同样的模 10 校验位,都来自同一个 GS1 前缀池。数字本身完全没有说明这标识的是一个贸易项目还是一个位置 —— 只有它所在的字段才说明。任何仅凭数字就宣称「这是一个 GLN」的工具,都是在猜。

修复: Decide from the context: a party or place field means GLN, a product field means GTIN-13.

来源: GS1 — GS1 Company Prefix

KEY-G01 厂商识别代码在哪里结束,从号码上读不出来

GS1 厂商识别代码是 7 到 12 位,它与后面参考代码之间的边界只记录在 GS1 的注册库里。所以本工具不把号码拆成「厂商识别代码」和「流水参考代码」—— 一个无从知道的拆分,就是一个不该做的拆分。

修复: Look the number up in GS1 GEPIR if you need the licensee and the true prefix length.

来源: That a GS1 Company Prefix is 7–12 digits long, and that its length is not derivable from the number itself, is stated in the GS1 General Specifications; the boundary is resolvable only through GS1’s GEPIR registry, not by inspection.

KEY-P01 前缀号段及其 GS1 成员组织

开头几位落在某个国家 GS1 成员组织管理的号段里。与 GTIN 一样,这说明的是号码在哪里签发,而不是任何东西在哪里制造或所在 —— 企业可以在一个国家申请前缀而在任何地方经营。

来源: GS1 — GS1 Company Prefix

KEY-P02 来自受限流通号段

这个号码落在 GS1 保留给企业或门店内部使用的号段里。这类号码不是全球唯一的,因此不得流出编造它的那个组织 —— 出现在发给贸易伙伴的 EDI 报文里时,可能与别人的号码撞车。

修复: 对外交换的场合,改用从 GS1 取得的正式号码。

来源: GS1 — GS1 Company Prefix

KEY-Z01 看起来是占位码而不是真实号码

这些数字全零、全同,或者是简单递增。这类值能通过校验位通常只是巧合,它表明这个字段是为了让校验器闭嘴而填的,不是为了标识什么。

来源: Own engineering rule, not an external specification: derived from patterns seen in real feeds.

KEY-R01 SSCC 标识一个具体的物流单元,且只用一次

每个 SSCC 标记的是一个单独的物流单元 —— 这一托、这一箱 —— 而 GS1 要求一个值在发运后至少 12 个月内不得重复使用。跨批次复用 SSCC 是自研系统上常见的错误,会让发货通知变得含混。

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

KEY-V01 格式正确

长度正确,且校验位与它前面各位相符。

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

只检查校验位与结构。一个格式正确的号码是否真的分配给了谁,那是 GEPIR 的问题,不是算术问题。

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

本工具认识的十种 GS1 代码

代码AI标识什么语法
SSCC00一个物流单元 —— 这一托、这一箱N18,带校验位
GLN410–417一个参与方或一个地点N13,带校验位
GRAI 8003 可回收资产 —— 会还回来的周转箱、酒桶、托盘或笼车 N1,zero N13,csum [X..16]
GIAI 8004 某一件具体资产 —— 这台笔记本、这台叉车、这台机器 X..30
GSRN 8017 / 8018 一段服务关系 —— 8018 是接受方(病人、会员),8017 是提供方 N18,csum
GDTI 253 一类单证 —— 许可证、证书、税表 N13,csum [X..17]
GINC 401 一票托运 —— 作为一批交给货代的货物 X..30
GSIN 402 一次发运 —— 一起交付的一个或多个物流单元 N17,csum
GCN 255 一项优惠券要约 N13,csum [N..12]
GMN 8013 一个产品型号 —— 在欧盟医疗器械语境下即 Basic UDI-DI X..25,csumalpha

其中两种 —— GIAI 与 GINC —— 根本没有校验位。任何不超过 30 个字符的串在结构上都是合法的,所以号码本身没有任何东西能告诉你它被打错了。而其中的 GMN 以两个校验字符结尾,而不是一位校验位,它同时也是欧盟医疗器械的 Basic UDI-DI。

扩展代码是按什么校验的

XKEY-L01 该键的长度不对

每个 GS1 键的长度都由规范固定:GSRN 18 位,GSIN 17 位,GRAI 14 位(一个前导零加 13 位),GDTI 与 GCN 在可选流水号之前是 13 位。长度不同不是写法偏好,而是另一个号码。

修复: 查一下这个值是从哪里复制来的 —— 截断与多余前缀是两个最常见的原因。

GS1 Barcode Syntax Dictionary ↗

XKEY-C01 校验位不匹配

GRAI、GSRN、GDTI、GCN 与 GSIN 的数字部分都以一位 GS1 模 10 校验位结尾,由前面各位算出。不匹配意味着号码里某一位是错的。

修复: 照着源头重新录入。这里给出了应有的校验位,但校验位不对通常说明前面某一位就已经错了。

GS1 Barcode Syntax Dictionary ↗

XKEY-C02 校验字符对不匹配

全球型号代码(GMN)以两个校验字符结尾,而不是一位校验位 —— 用质数权重对 1021 取模算出,取自 GS1 字符集 32(该字符集去掉了容易误读的 I、O、0、1)。这是自研实现最常算错的算法,而在欧盟医疗器械场景里它是强制的。

修复: Recalculate the pair from the model number itself; this tool shows the expected characters.

GS1 Barcode Syntax Dictionary ↗

XKEY-F01 字符超出允许集合

数字型键只收数字。字母数字型键(GIAI、GINC、GMN,以及 GRAI 或 GDTI 的流水号部分)使用 GS1 字符集 82 —— 字母、数字与有限的一组标点。空格或货币符号不在其中。

GS1 Barcode Syntax Dictionary ↗

XKEY-Z01 GRAI 必须以零开头

AI (8003) 的语法是一个字面的零,后接 13 位资产类型及其校验位。这个零不是补位:它是既定结构的一部分,把它去掉的编码器产出的值会被接收方系统拒收。

修复: 把前导零加回去。

GS1 Barcode Syntax Dictionary ↗

XKEY-S01 流水号部分过长

GRAI、GDTI 与 GCN 后面可选的流水号各有自己的上限 —— 16、17 与 12 个字符。超出会让整个单元数据串失效,而不只是流水号那一段。

GS1 Barcode Syntax Dictionary ↗

XKEY-N01 这个键根本没有校验位

GIAI 与 GINC 不带校验位:任何不超过 30 个字符、取自 GS1 字符集 82 的串,在结构上都是合法的。号码本身没有任何东西能告诉你它被打错了 —— 所以这两个键上的错字传得最远。

修复: 在正确性要紧的场合,拿它去和签发这个号码的系统核对。

GS1 Barcode Syntax Dictionary ↗

XKEY-A01 值把它的应用标识符也带上了

这个值以引出该键的 AI 开头,那是它在条码或 EDI 报文里的样子。AI 不是键的一部分,不该和键一起存储。

GS1 Barcode Syntax Dictionary ↗