# 怎么做一个到了别人手机上还扫得出来的二维码

做个二维码是一秒钟的事。做一个在湿漉漉的菜单上、在公交站牌上、在昏暗光线下一臂之外还扫得出来的二维码，得先定四件事，而且四件都在开印之前。下面讲的就是每一件到底管什么。

[打开二维码与条形码生成](https://abox.tools/zh/qr-barcode/): 打进去，就变成一个码。生成过程不往外送任何东西。

最后更新 2026年10月12日

## 先说结论

打开[二维码与条形码生成](https://abox.tools/zh/qr-barcode/)，把链接粘进去，等级保持 **M**，留白保持 **4**，下载那个 SVG。印出来至少两厘米宽，用哑光材质，深色在浅色上。订一千份之前，先拿一部不是你自己的手机，扫一下印出来的那张。

绝大多数情况到这儿就完了。这一页剩下的部分是给例外准备的：要经得起反复摸的码、中间要放 logo 的码、要贴在很小的东西上的码，还有一个特别容易做错、又得等上一年才发现的决定。

## 二维码里到底装着什么

一串字符，就这么点东西。扫一个二维码，等于把一段文本递给手机。之后打开网页也好，连上网络也好，问你要不要存联系人也好，都是手机认出了这段文本的样子，然后主动提议照着办。

所以根本没有“Wi-Fi 二维码”这么一个码种。有的只是一个普通二维码，里面装着 `WIFI:T:WPA;S:My Network;P:the password;;`，而近十年出的手机都认得它。生成器把拼好的那串字符摆出来给你看，正是为了这个：码没干出你以为它会干的事时，值得看的只有那串字符。

这也意味着，二维码一旦印出来就改不了，不会往家里打电话，也不会过期。除非有人往里面塞了一个指向他们自己服务器的链接，而那正是本页最后一节要说的事。

![一枚做好的二维码，下面是它的信息：码制、版本、纠错等级和容纳的字符数。](https://abox.tools/screens/make-a-qr-code/result.webp)

码里有什么，用这篇指南后面会用到的说法讲了一遍。版本随内容一起变大，下面那两个设置之所以重要，正是因为这一点。

## 第一件事：纠错等级

二维码在数据旁边还带着一组校验码字，算法让读取器能把没看清的部分重建出来。一个缺了角的码还能扫出来，靠的就是它。校验码字放多少，就是等级，一共四档：

- **L** — 全部码字的约 7%。
- **M**，大约 15%。
- **Q**，大约 25%。
- **H**，大约 30%。

[DENSO 以全部码字为分母定义这些百分比](https://www.qrcode.com/en/about/error_correction.html)，并非任意模块或图像面积。检测图形受损可能使扫描在纠错前就失败。更高纠错能力也需要更多空间：相同内容通常会生成更密集或更大的符号。

**L** 给屏幕用：幻灯片里、邮件里、网页上的码。没什么东西会去损坏它，而每多一个模块，隔远了就更难读。

**M** 是默认值，也是大多数印刷品的正确答案。会被人拿在手里翻两下的纸、传单、名片。

**Q 和 H** 留给会被折腾的码：每天要擦一遍的菜单、贴在车间机器上的标签、板条箱上的标贴、晒得到太阳的橱窗里的码。中间能放 logo，也得靠 H，下面还会讲。

![二维码选项：纠错等级菜单设在中等，静区为四个模块。](https://abox.tools/screens/make-a-qr-code/options.webp)

两者都关乎这枚码能否在现实世界里活下来，一道折痕、一个标志、一次糟糕的印刷，而且两者都在绘制之前就定好了。

## 第二件事：留白，它是码的一部分

二维码周围那圈白，不是内边距，也不是设计选择。读取器靠它判断这个图形到哪儿为止。规范要求四边各留四个模块的静区，而一个被裁到边的码，是印出来的码失灵最常见的单一原因。

这话值得说得直白些，因为裁掉它实在太顺手了。码看着周围白得太多，于是在版式里被裁了一刀，或者被扔到一块一直铺到方块边上的彩色底上，或者干脆放到一张照片上。这几种做法，每一种都把读取器本来要用的那条边界拿走了。

连着留白显得太大，那就把码做小。别动那圈留白。

## 第三件事：印多大

经得起现实检验的那条经验法则是**一比十**：码的宽度，大约要有扫描距离的十分之一。

- 名片或者菜单，30 厘米处扫：两厘米左右。
- 两米外扫的海报：二十厘米左右。
- 五米外扫的公交站牌、橱窗：五十厘米左右。

两厘米是底线，不是目标。小到 1.5 厘米以下，印得再好，普通手机也开始吃力，因为单个模块的尺寸已经逼近它摄像头里一个像素了。

文字少，模块就少；模块少，同样的印刷尺寸就能在更远处读出来。所以码该指向 `example.com/x`，而不是一个末尾挂着一百个字符跟踪参数的网址。

另外，印刷请用 **SVG**。二维码是由边缘构成的，而 PNG 只有固定数量的像素来拼这些边缘，放大之后每条边都发虚，而发虚恰恰是扫描器最头疼的。SVG 是以指令表达的方块，印在名片上和印在广告牌上一样锐利。

## 颜色、对比度，以及常见的两个错

读取器量的是深色模块和浅色模块之间的差别，所以对比度就是全部。有两件事经常出错：

**深底上的浅色码。**看着是挺抓眼，可相当多的读取器直接不认：它们找的是浅底深图，不会去试反相。有些会试。而你的客户手上是哪一种，你根本不知道。

**差别不够大。**白底中灰，或者两个分量相近的品牌色，在屏幕上量着没问题，一旦印上纸，油墨扩散加上手机的自动曝光，就失灵了。真要给码上色，就让深的那部分深得够真。

凡是会在灯下被扫的东西，哑光胜过亮面，而这两者又都胜过印在一张照片上。要把码放到彩色底上，透明背景很好用，但记得看清最后垫在它后面的到底是什么，深底上的透明码，无非是上面那第一个错多绕了几道。

## 中间放一个 logo

小标志有时可行，但无法保证任何图像面积比例都安全。DENSO 所说 H 级约 30% 的恢复率以全部码字为分母，并非任意方块。保留定位和校正图形，使用 H 级，并用多部手机测试最终印刷品。[DENSO 的纠错说明](https://www.qrcode.com/en/about/error_correction.html)解释了这个比例。

选择 H 级并让标志保持较小。没有保证安全的面积比例：位置、版本、损坏分布和印刷质量都会影响结果。保留定位和校正图形，并用印刷样张判断设计能否可靠扫描。

然后拿真手机测。加了 logo，一个码就从“总是能用”变成了“在这么多余量下能用”，而想知道还剩多少余量，只能去试。

## 最容易让人后悔的那个决定：静态还是“动态”

搜二维码生成器，出来的结果大半想让你注册个账号，因为他们卖的是*动态*码。动态码里装的不是你的链接，是一个指向生成方自己服务器的短链接，再由那边跳到你这儿。

它换来的东西是真的：印出来之后你还能改这个码指向哪儿，而且每一次扫描都有计数。印量六位数的推广活动，这钱花得值。

它的代价也是真的，而且值得事前知道，别等事后：

- **他们不干了，你的码就废了。**服务关停、域名到期、免费额度用完，你印出去的每一个码都会死掉，而那时它们已经躺在一万张菜单上了。
- **每一次扫描都成了别人的数据。**那个跳转看得到每一个扫码人的 IP 地址、时间和设备。
- **那个链接是他们的，不是你的。**扫的人会看见一个陌生域名一闪而过，而这正是大家被反复叮嘱要提防的东西。

折中办法一分钱都不用花：用*你自己域名上*的一个短网址做静态二维码，跳转由你自己来做。改目的地的能力还在，统计数据也还在，而这个码的任何一部分，都不取决于一家你素未谋面的公司明年还在不在。

[这里的生成器](https://abox.tools/zh/qr-barcode/)只做静态码，也没有账号可注册。你打进去什么，码里就装什么。

## 印一千份之前

扫一下这个码。别扫屏幕上那个，扫印出来的打样，在它将要待的那个地方，用一部不是你做它时用的手机。这要花一分钟，却能一网打尽这一整页讲的所有毛病：被版式吃掉的留白、漏了 `https://` 的链接、在纸上量出来完全不同的颜色、在桌上管用、上了墙就不管用的印刷尺寸。

还要看扫完之后会发生什么。扫出来是扫出来了，可打开的页面在手机上根本没法读，那也是个失败的码。

## 这些事一样都不用上传

二维码就是对一串字符做算术。没有文件要送，也没有哪件事是服务器能做而浏览器做不了的，所以[这里的工具](https://abox.tools/zh/qr-barcode/)全都在你自己的机器上完成，拔了网线照样能用。

这一点比听上去要紧，因为人们往二维码里塞的是什么东西。Wi-Fi 那个格式最常见的用途，就是把一个网络的真实密码打进一个网页里。那个页面有没有地方可以把它送出去，值得先弄清楚。
