# 怎么做一个二维码，并证明它扫得出来

二维码最贵的错误不是做码：是在现场才发现海报扫出来指向一个错别字。在这里，生成和验证是两个工具；开印之前跑一遍第二个只花一分钟，却能拦下印刷厂本来会替你寄出去的几乎所有事故。

[打开二维码与条形码识读](https://abox.tools/zh/qr-barcode-reader/): 把摄像头对准码，或者把拍下来的图丢进来。读这件事只发生在这里，别处都没有。

最后更新 2026年8月26日

## 简短的答案

1. **生成。**打开[二维码与条形码生成器](https://abox.tools/zh/qr-barcode/)，选好用途——一个链接、一个 Wi-Fi 网络、一张联系人名片——核对二维码将要携带的那串一字不差的内容，页面把它亮出来而不是藏起来。印刷导出 SVG，屏幕导出 PNG。
2. **印一张。**真实尺寸，真实纸张，在两百张的批量之前。
3. **证明。**用手机给打样拍张照——斜着拍，就用现场的光——把照片拖进[二维码与条形码识别器](https://abox.tools/zh/qr-barcode-reader/)。它显示解码出的内容；是链接的话，还显示它真正抵达的主机。和你想的一致，批量就是安全的。

两个工具都在你的浏览器里跑，什么也不往任何地方发——对一个 Wi-Fi 码来说，这意味着里面的密码从来没被敲进过别人的网站。

![填了网址的二维码生成工具，显示做好的码以及它的版本、纠错等级和还剩多少余量。](https://abox.tools/screens/make-a-qr-code-and-prove-it-scans/made.webp)

码，做好了。

## 验证真正能拦下什么

- **错别字。**最常见的故障不是码，是码里的网址。读回来是唯一检验“实际编进去的是什么”而不是“你以为粘贴了什么”的办法。
- **尺寸与距离。**隔着大厅扫的码，需要比名片上那种更粗的模块。从人们将要站的位置给打样拍照，才是诚实的测试；生成器的纠错等级会把每一级在密度上的代价明说出来。
- **颜色。**浅底深印的码扫得出来；低对比度的品牌配色常常不行。这个识别器比大多数手机都能扛：连*它*都在照片上费劲的话，大堂里最旧的那部手机就毫无机会。
- **折痕与反光。**Reed-Solomon 纠错让被遮住一部分的码照样能读——上限是你选的那一级。要经风吹日晒的海报，配得上最高一级，以及它换来的略密一点的码。

![拿到同一张图的读取工具：它报出码里的网址、码制，以及在图中的哪个位置找到的。](https://abox.tools/screens/make-a-qr-code-and-prove-it-scans/read.webp)

再把同一张图交给另一个工具读回来，这是唯一能抓住做坏了的码的检验。读取工具只显示它读到了什么，并不会打开。

## 同一个识别器，用在不是你做的码上

验证也是打开别人印的二维码的安全方式。识别器在*任何东西被打开之前*就亮出完整地址和它真正抵达的主机，还会点名那些给链接化装的把戏：@ 前面的用户名、形近的字母表、一层跳转。停车咪表上的贴纸配得上这道检查；会议胸牌也一样。没有任何东西替你打开，你扫到的内容也不会被发往任何地方。

## 如果你每周都做这件事

生成和检验分住在两个页面上是有意为之：每一个只做一件事，每一个都能独自证明没有任何东西离开你的电脑。但两个都是开源的：MIT 许可证，零依赖的 ES 模块——生成器的编码器和识别器的 Reed-Solomon 解码器，各配一份把它讲清的 README。

如果每周都有码从你桌上发出去，就把代码代理指向[代码仓库](https://github.com/A-Box-of-Tools/website)，让它做一个页面：生成之后立刻把画出来的码送回解码器过一遍——每次导出都自带一次自检。这些模块就是写来被读的，把它们带走，正是许可证存在的意义。
