二维码生成器

把任意文本或网址生成二维码,可下载 PNG 或 SVG。在浏览器内生成——内容不上传,也不会插入跳转追踪。

所有处理均在你的浏览器内完成,数据不会上传。

2版本
25×25模块数
23编码字节数

级别越高越耐损坏——蹭花的贴纸、中间盖了 logo 都还能扫——但同样的内容需要更密的码。一般选 M;只有当二维码会印得很小、会被反复触碰,或者中间要盖 logo 时才用 H。

四周的空白是规范的一部分,不是装饰。缺了它,很多扫码器根本定位不到这个码——二维码紧贴深色图案时扫不出来,多半就是这个原因。

这里生成的每一种码,发布前都会在测试里被真实的二维码解码器重新扫一遍——生成错误的二维码看上去和正常的毫无区别,无法靠肉眼检查。

使用方法

  1. 输入或粘贴内容——网址、纯文本都可以。
  2. 选择纠错级别,M 是合适的默认值。
  3. 需要更宽或更窄的边框时,调整静区留白。
  4. 一般用途下载 PNG;要印刷或缩放则下载 SVG

关于二维码

二维码是一格格黑白模块组成的网格,它存储数据时带有足够的冗余,因而可以从一张照片里读回 来——哪怕有角度、光线差、局部破损。三个角上的大方块让扫码器找到这个码并判断方向;它们之间 那条黑白相间的线确定模块间距;而围在最外面的那圈空白,也就是静区,让扫码器能把码和背景 分开。这圈留白是规范规定的,不是装饰,省掉它是印刷出来的二维码扫不出来最常见的原因。

冗余来自 Reed-Solomon 纠错,与 CD 和深空通信用的是同一族编码。共有四个级别,分别可以 恢复大约 7%、15%、25% 和 30% 的损失。更高的纠错不是白来的:额外的恢复数据总要占地方, 于是同样的内容需要更密的网格。在固定的印刷尺寸下,网格越密模块越小,摄像头越难分辨—— 所以最高级别并不自动等于最保险。它适用于你预期会有磨损,或者打算用 logo 盖住一部分的场合。

关于免费二维码服务,有一点值得知道:很多服务编码的是一个指向它们自己域名的链接,再跳转到 你的目标地址。这让它们能统计扫码次数,同时也意味着一旦它们关停,你的码就失效了,而且日后 可以被改向或转为收费。直接编码你自己网址的码没有这层依赖——只要你的网址还在,它就一直有效。 本工具生成的正是这种码。

最后说一下这个生成器是怎么验证的。一个存在细微错误的二维码看上去完全正常——模块依然是排列 合理的黑白方块,在有人真去扫之前没有任何迹象表明它有问题,靠肉眼根本无法检查。所以这个工具 能产生的每一类码,都会在测试中被生成出来、再用真实的二维码解码器重新扫一遍,覆盖不同的内容 类型、纠错级别和符号版本。开发过程中正是这样抓到了三个各自独立的缺陷,它们生成的码看起来都 毫无问题,却完全扫不出来。

常见问题

生成的二维码会过期或失效吗?

不会。二维码直接编码你输入的内容,中间没有任何短链可能失效或被替换。很多免费二维码服务会生成一个经由它们自己域名的跳转,这让它们能统计扫码次数,也意味着日后可能更改目标地址或开始收费。这里生成的码永远指向你输入的东西本身。

内容会被上传吗?

不会。二维码在你的浏览器内计算,图片也在本地绘制。你输入的任何内容都不会被传输——如果你要编码的是内部网址、WiFi 密码或私有链接,这一点很重要。

纠错级别该选哪个?

多数场合选 M。级别越高越耐损坏——蹭花的贴纸、中间盖了 logo 都还能扫——但同样的内容会被压进更密的网格,在相同印刷尺寸下每个模块更小。当二维码要印得很小、会被反复触碰或部分遮挡时选 H;只有当内容很长且只在干净屏幕上扫时才选 L。

为什么二维码周围要留白?

静区是规范的一部分,不是装饰。扫码器靠在纯净背景上找出三个角上的方块来定位,没有留白往往根本锁不定。二维码紧贴深色图案时扫不出来,几乎都是这个原因。

该下载 PNG 还是 SVG?

要印刷或需要缩放的场合用 SVG——它把模块存成图形而不是像素,放到任何尺寸都清晰。不接受 SVG 的地方(多数社交平台和聊天工具)用 PNG。这里的 PNG 是逐个模块按整数像素边界绘制的,边缘锐利而不会发虚。

可以在中间放 logo 吗?

可以,纠错就是为此准备的——H 级别下即使丢失约 30% 仍能解码。logo 面积控制在 20% 以内、居中放置,绝不要盖住角上的方块:扫码器靠它们定位和判断方向。印一千张之前,先用真手机扫一次。

最多能放多少文字?

最大版本在最低纠错级别下约 2900 字节,但那么大的码实际上很难扫。实践中应尽量短:100 字符以内的网址生成的码,手机在一臂距离就能稳定扫出。文字越长网格越密,越密就越需要更大的印刷尺寸或更近的镜头。