二维码生成器

把网址、文本、Wi-Fi信息或联系人名片转换成二维码。可选择纠错等级和保存尺寸,并显示当前二维码的版本、模块数和容量占用。所有生成过程都在浏览器内完成。

二维码是怎么存放信息的

二维码(QR Code)是日本电装波(Denso Wave)在1994年发明的二维条码,用一个由黑白小方格(模块)组成的正方形网格来记录数据。 三个角上的大方块叫定位图案,让扫描设备知道二维码的位置、大小和方向,所以从任何角度都能扫出来。 数据区里除了你的内容,还有里德-所罗门纠错码,因此二维码被弄脏、划伤或遮住一部分时,仍可能被还原。 内容会按模式打包:纯数字、字母数字(数字、大写字母、空格以及 $ % * + - . / : 共45个字符)或字节模式。 小写字母的网址和中文都走字节模式(UTF-8),其中一个汉字通常占3个字节。

二维码的尺寸不是随意的,共有40个版本:版本1是21×21个模块,每升一级,每边增加4个模块(每边模块数 = 17 + 4 × 版本),版本40为177×177。 内容越长、纠错等级越高,版本就越高,格子也越密。预览下方的统计会随输入显示当前的版本、模块数和字节数,你可以直观看到内容越短、格子越稀、越好扫。

这个二维码在哪里生成

二维码由本页自带的JavaScript二维码库在你的浏览器里绘制:浏览器算出模块矩阵,画到canvas上,你下载的PNG也是直接从这个canvas导出的。 你输入的网址、Wi-Fi密码、电话等内容,不会被发送到任何第三方二维码接口,也不会为了生成图片而上传到我们的服务器。 生成的是静态二维码:内容直接编码在图案中,没有有效期,中间也没有用于统计的跳转,即使本站不在了,已生成的码照样能扫。 代价是印出来后不能再改内容,也看不到扫描次数。如果需要事后更换目标地址或统计扫码量,就要用另外的“动态二维码”服务,它会在中间放一个自己的跳转。

纠错等级怎么选(L、M、Q、H)

纠错等级分四档,大致可恢复约7%、15%、25%、30%的损坏。等级越高越耐脏,但冗余占的空间越多,同样内容需要更高的版本,每个格子就更小。 下表是在版本40中放入单字节内容(如英文和网址)时各等级的最大字符数,是本页构建时用实际使用的库算出来的。

等级大致恢复能力最大字符数(单字节)最大字符数(3字节,如汉字)
L(低)约7%2,953984
M(中)约15%2,331777
Q(较高)约25%1,663554
H(高)约30%1,273424

如果全是数字,还能放得更多:标准允许等级L最多7,089位数字,字母数字模式最多4,296个字符,但日常几乎用不到。选择时可以这样考虑:

“H最安全”是常见的误解。在打印尺寸固定时,同一个链接用H比用M的格子更小,所以在名片这类小面积上放长网址再用H,反而可能更难扫。 如果不担心损坏,缩短链接并使用M会更稳。

印刷尺寸多大合适

能否扫出来,取决于单个模块的实际大小和周围留白,而不是整体大小。标准要求四周至少留4个模块宽的空白,所以总宽度 = (模块数 + 8) × 单格大小,本工具保存的PNG也带有4格留白。 常见经验是二维码边长约为扫描距离的十分之一;普通纸张打印时,单格0.5毫米左右接近实用下限,0.8毫米以上比较从容(仅为经验值,与打印机、纸张、光线有关)。 下表按网址长度算出版本和含留白的总宽度。

网址长度M:版本/模块数M,0.5毫米M,0.8毫米H:版本/模块数H,0.8毫米
25字符v2 / 25×2516.5毫米26.4毫米v4 / 33×3332.8毫米
50字符v4 / 33×3320.5毫米32.8毫米v6 / 41×4139.2毫米
100字符v6 / 41×4124.5毫米39.2毫米v10 / 57×5752.0毫米
200字符v10 / 57×5732.5毫米52.0毫米v15 / 77×7768.0毫米

算例1:25个字符的网址用等级M,是版本2、25×25个模块。单格0.8毫米时,(25 + 8) × 0.8 = 26.4毫米见方,放在名片一角没问题。

算例2:200个字符的网址用等级M需要版本10、57×57个模块,同样0.8毫米时要 (57 + 8) × 0.8 = 52.0毫米。把链接缩短到50个字符,就降到版本4、32.8毫米。

算例3:100个字符的网址在等级M下是版本6(41×41),0.8毫米时为39.2毫米;同一链接改用等级H,变成版本10(57×57),需要52.0毫米。更强的容错是用更大的尺寸换来的。

用于印刷时请保存1024像素以上。把小PNG在排版软件里放大会让格子边缘发虚,而大图缩小则没有这个问题。

各类型的内容与注意事项

网址与文本

越短越好,多一个字符都可能让版本升高,没用的追踪参数请去掉。请以 https:// 开头;没有协议头时,有的扫描器只会当作普通文本而不提示打开链接(检测到时本工具会提醒)。 印刷品建议先指向你自己控制的短地址,再由它跳转到最终页面,这样以后目标变了也不用重印。印刷前,请至少用一部iPhone和一部安卓手机实际扫一遍样张。

Wi-Fi

内容采用通行的格式 WIFI:S:网络名;T:加密方式;P:密码;;。加密方式为 WPA(WPA2、WPA3网络一般也用这个值)、WEP,或无密码的 nopass;隐藏网络再加上 H:true;。 网络名或密码中如有 \ ; , : " 这些字符,要在前面加反斜杠,例如 Cafe;Guest 要写成 Cafe\;Guest,本工具会自动处理。 作为参照,WIFI:S:HomeWiFi;T:WPA;P:correct-horse-9;; 共41个字符,在等级L和M下是版本3(29×29),Q为版本4,H为版本5。 密码是以明文放在二维码里的,看到码的人都能读出密码,所以建议另设访客网络,公开张贴前要慎重。

联系人(vCard)

使用vCard 3.0格式(BEGIN:VCARD 到 END:VCARD),可放姓名、单位、电话、邮箱和网站,扫描后会提示添加到通讯录,适合名片。 字段越多版本越高、格子越密,所以只放必要的,或者只放一个指向详细信息页面的链接。不同手机和相机应用对vCard的显示方式略有差异,请在目标人群常用的设备上测试。

扫不出来时怎么排查

生成之后怎么用

常见问题

这里生成的二维码会过期吗?

不会。本工具把你输入的内容原样编码进图片,是静态二维码,没有有效期。不过如果码里的网址失效,或Wi-Fi密码改了,这个码当然也就没用了。

我的Wi-Fi密码会被发送到别处吗?

二维码在浏览器中生成,PNG也由页面上的canvas导出,不会把密码提交给二维码服务。但密码以明文存在于做好的图案里,任何能扫到这个码的人都能读出来。

可以在中间放Logo吗?

可以,因为纠错能还原被遮住的部分,但遮挡面积必须在可恢复范围之内(即便等级H也约为30%),且不能盖住三个角的方块。实际操作中Logo约占整体的十分之一,使用等级Q或H,并在多部手机上测试。

为什么放中文会让二维码变得很密?

中文以UTF-8字节存储,一个汉字约占3个字节,所以同样的字数比英文需要多得多的模块。例如“你好世界”4个字是12个字节。与其把长文直接放进去,不如放一个指向该文本页面的英文短链接,扫描更可靠。

一个二维码最多能放多少内容?

最大的版本40在等级L下约可放2,953个单字节字符,等级H约1,273个(见上表)。接近上限时格子极密、很难扫,实际使用建议网址控制在100个字符以内。

相关工具