HandyTools Hub

条形码生成器

以多种格式创建专业条形码

条码生成器把一小段文本或数字转换成可扫描的黑白条码图像,在 HTML canvas 上实时渲染,并可下载为 PNG。它支持四种常见的零售与物流格式,无需账号或上传,并会按所选格式的规则校验每一个编码。

条码生成器使用方法

  1. 选择格式:Code 128、EAN-13、EAN-8 或 UPC-A。输入框下方的提示会说明该格式接受什么内容。
  2. 输入或粘贴数据。每次改动都会触发校验,在数值有效前下载按钮保持禁用。
  3. 用滑块设置宽度(200–800 px)和高度(50–300 px),并决定是否在条码下方打印人类可读文本。
  4. 查看实时预览。渲染器会在两侧各预留约为宽度 10% 的静区,方便扫描器识别起止模式。
  5. 点击”下载”把结果保存为名为 barcode.png 的 PNG。

校验对字符集很严格,但对业务规则并不校验:一个数值可以通过所有检查,却仍是未注册的号码,详见下文。

选择正确的格式

格式接受的输入校验位典型用途
Code 128可打印 ASCII 32–126,任意长度模 103,自动计算内部 ID、运输标签、资产标签
EAN-1312 或 13 位数字模 10,自动追加全球零售商品
EAN-87 或 8 位数字模 10,自动追加空间紧张的小包装
UPC-A11 或 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 团队审校 · 最后更新