条码生成器把一小段文本或数字转换成可扫描的黑白条码图像,在 HTML canvas 上实时渲染,并可下载为 PNG。它支持四种常见的零售与物流格式,无需账号或上传,并会按所选格式的规则校验每一个编码。
条码生成器使用方法
- 选择格式:Code 128、EAN-13、EAN-8 或 UPC-A。输入框下方的提示会说明该格式接受什么内容。
- 输入或粘贴数据。每次改动都会触发校验,在数值有效前下载按钮保持禁用。
- 用滑块设置宽度(200–800 px)和高度(50–300 px),并决定是否在条码下方打印人类可读文本。
- 查看实时预览。渲染器会在两侧各预留约为宽度 10% 的静区,方便扫描器识别起止模式。
- 点击”下载”把结果保存为名为
barcode.png的 PNG。
校验对字符集很严格,但对业务规则并不校验:一个数值可以通过所有检查,却仍是未注册的号码,详见下文。
选择正确的格式
| 格式 | 接受的输入 | 校验位 | 典型用途 |
|---|---|---|---|
| Code 128 | 可打印 ASCII 32–126,任意长度 | 模 103,自动计算 | 内部 ID、运输标签、资产标签 |
| EAN-13 | 12 或 13 位数字 | 模 10,自动追加 | 全球零售商品 |
| EAN-8 | 7 或 8 位数字 | 模 10,自动追加 | 空间紧张的小包装 |
| UPC-A | 11 或 12 位数字 | 模 10,自动追加 | 美国和加拿大零售 |
Code 128 是唯一能承载字母和标点符号的选项;三种零售格式都只接受数字。只在美国或加拿大销售的产品,本地惯例是 UPC-A。销往国际的产品请选 EAN-13。EAN-8 把同样的思路压缩成更短的符号,也意味着号码空间更小、可用于区分产品的余地更少。
零售号码有固定结构。UPC-A 由一位数字系统码、五位厂商码、五位产品码和一位校验位组成。EAN-13 由 GS1 前缀、公司前缀、商品参考号和校验位组成。工具可以算出最后一位,但无法分配厂商或公司部分——那需要向 GS1 申请。
各符号系统的编码方式
Code 128 使用 Code Set B,每个字符对应的符号值等于其 ASCII 码减去 32,因此空格是 0,~ 是 94。编码器写入起始符、每个字符一个符号、一个校验符号和停止符,用宽度从 1 到 4 个模块的条和空交替表示。校验值为 (104 + Σ 位置 × 数值) mod 103。对 ABC 而言,数值分别是 33、34、35,加权和为 104 + 1×33 + 2×34 + 3×35 = 310;310 mod 103 = 1,所以校验符号携带数值 1。
零售格式使用模 10 校验位,数字从右向左按 3 和 1 交替加权。对 12 位主体 590123412345,加权和为 83,因此校验位是 10 − 3 = 7,完整编码为 5901234123457。只要你输入短形式,工具就会替你加上这一位,条码始终编码校验后的完整数值。
实操示例
- 以 EAN-13 输入
590123412345。预览会编码5901234123457,并在条码下方打印该号码。 - 以 Code 128 输入
INV-2024-0001,用于混合了字母、数字和连字符的内部标签。 - 以 UPC-A 输入
03600029145。第 12 位会自动计算并追加。 - 以 EAN-8 输入
1234567。第 8 位会被加上,为小包装生成紧凑的条码。
常见错误
- 输入完整 13 位 EAN 但校验位写错。 工具接受 13 位输入,但编码器只用前 12 位生成条码,从不校验最后一位。如果打印数字与条码不一致,扫描器只信条码。
- 在 Code 128 中使用带重音的字母或排版标点。 只接受 ASCII 32–126,所以
Café会被拒绝,而Cafe可以通过。 - 打印得太小。 被压缩到几毫米的条码会丢失扫描器赖以工作的窄条对比度。两侧要保留静区,零售码的打印宽度不要低于约 2 厘米。
- 以为看起来合法的编码就是已注册的。 一个号码可以通过校验位测试,却不对应任何公司,这种情况下没有零售系统会识别该产品。
- 切换格式时不重新输入数据。 对 Code 128 有效的字符串通常对 EAN-13 无效,因此输入会被重新校验,旧值也会从画布上清除。
本工具不做的事
它不签发 GS1 前缀,所以零售 EAN/UPC 码仍需使用 GS1 分配的公司前缀。它不支持 Code 39、ITF-14、PDF417、Data Matrix 或 QR,不支持 GS1-128 应用标识符或 FNC1 转义码,不支持批量或 CSV 生成,也不提供 SVG 输出——下载的是 PNG。颜色固定为白底黑色以获得最大对比度,渲染结果是位图,因此事后放大小尺寸 PNG 会让条码边缘变模糊。
相关工具
常见问题
生成器会自动补上 EAN-13 的校验位吗?
会。如果你只输入 EAN-13 的 12 位主体,工具会用模 10 算法算出校验位并追加,然后编码完整的 13 位数值。EAN-8(输入 7 位)和 UPC-A(输入 11 位)同理。如果你自己粘贴了完整的 13 位,工具会按原样使用。
为什么 Code 128 会拒绝破折号或带重音的字母?
编码器实现的是 Code Set B,只覆盖从 32(空格)到 126(波浪号)的可打印 ASCII。é、ü、’ 或 — 这类字符超出该范围,会被拒绝。请在生成前把它们转写为纯 ASCII(例如用 Cafe 代替 Café)。
可以编码 (01) 或 (10) 这类 GS1-128 应用标识符吗?
不可以。虽然两者都叫 Code 128,但 GS1-128 额外加入了 FNC1 转义字符和应用标识符语法,本工具并未实现。它只生成纯 Code 128 Code Set B,适合内部资产和库存标签,但不适用于 GS1 供应链数据。
如果我输入 EAN-13 的全部 13 位,会校验最后一位吗?
不会。当你提供 13 位时,编码器始终用前 12 位生成条码,不会确认第 13 位是否正确。扫描器读的是条码,所以校验位输错可能导致打印数字与机器可读码不一致。建议只输入 12 位主体。
条码最小能印多小,扫描器才不会读不出来?
这取决于扫描器,但一般规则是零售 EAN/UPC 码宽度至少 2 厘米、高度超过约 1 厘米,并在两侧保留可见的空白静区。调高宽度滑块会把相同数量的模块分散到更多像素上,从而提高打印时的窄条对比度。
只在美国销售的产品应该选哪种格式?
UPC-A。它是美国和加拿大大多数零售商使用的 12 位标准,而 EAN-13 是国际通用的 13 位标准。面向北美以外销售的包装请选 EAN-13,只有当标签面积太小、放不下全尺寸条码时才用 EAN-8。
由 HandyTools Hub 团队审校 · 最后更新