二维码生成器

全球通用工具

二维码是一个容器。链接、Wi-Fi 密码、电话号码或整张联系人卡片放进去,手机摄像头再把它取出来;大多数生成器含糊的地方也在这里。码能扫,但什么也没发生,或者发生了错误的事,因为里面的字符串拼错了:Wi-Fi 密码里的分号、姓氏里的逗号、本不该出现的空格。

二维码只是一个容器。这个设置决定放什么进去,下方字段会随之变化。

实际被编码的内容:大小写、重音字符、emoji 和换行都包括在内。不会替你缩短或跟踪。

损坏到什么程度的码仍然能读。H 能承受中间放 logo;M 是屏幕显示的常用选择。

除非设计需要固定形状,否则保持自动。固定版本太小时会被拒绝,并给出本来能容纳的版本。

下载文件和上方图片的尺寸。模块是码里的一个黑色或白色方块。

四周的白色边距。标准要求至少 4 个模块;更小的静区节省空间,却降低扫描可靠性。

边输入边更新。所有计算都在你的浏览器里完成,数据不会离开本机。

版本 2 二维码,纯文本

25 × 25 个模块

264 × 264 像素,每模块 8 像素,静区 4 个模块。19 字节以「8 位字节(UTF-8)」模式写入,纠错等级 M 可恢复代码的 约 15%。

版本
40 个版本中的第 2 个
模块数
25 × 25 个模块
使用的掩码
掩码 6,共 8 种
纠错
M,可恢复 约 15%

你的二维码

版本 2 二维码,25 × 25 个模块,纠错等级 M,承载纯文本

264 × 264 像素,每模块 8 像素。打印前先把手机摄像头对准屏幕:屏幕能扫,打印就能扫。

白底黑字、全对比度才是扫描器读取的东西。不要反色,不要叠在花哨照片上;如果中间放 logo,请把纠错提高到 H,因为中间正是 logo 覆盖代码最多的地方。

扫描器会显示文本,并在它看起来像链接时提供打开选项。任何手机能显示或复制的内容都可以:网址、优惠码、预订编号、给下一位的留言。

这个码是如何构建的

  1. 你的文本以「8 位字节(UTF-8)」模式写入,每八位一个字节。这是 QR 没有更紧字母表时的回退方式 —— 小写字母、标点、重音字符和 emoji 都走这条路 —— 也是一个看起来很短的链接仍然可能需要大符号的原因。共 19 个字符、19 个字节。
  2. 版本 2 是在 M 级下能容纳这 19 字节的最小版本:25 × 25 个模块。再小一个版本就放不下。
  3. 纠错等级 M 把符号的一部分用于修复数据:即使约 15% 被遮住、撕坏或褪色,扫描器仍能读取。H 意味着更多修复数据和同样文本下更大的符号;L 意味着最小符号和最低容忍度。
  4. 标准定义了八种掩码模式,用来打散让扫描器难以处理的大片同色区域。编码器尝试了全部八种,按标准列出的同样四条惩罚规则评分,最后保留模式 6。
  5. 承载等级和掩码的 15 个格式位包在 BCH 纠错码里,随后从成品符号中读回,而且从它们写入的两个位置分别读取:它们写的是等级 M 和掩码 6,也就是实际绘制的内容,并且彼此一致。
  6. 625 个模块中有 334 个是暗的,占符号的 53%。扫描器比较暗模块和亮模块,所以它们之间的对比度才承载信息。
  7. 符号四周的白色边距每边 4 个模块。标准要求至少 4 个,而紧贴边缘的码会让扫描器找不到起点。

实际编码的内容

行内容
1https://danfio.com/

这就是完整的有效载荷,没有缩短服务、没有跟踪参数,也没有关于代码在哪制作的元数据。码的私密程度完全取决于你把它印在哪些地方。

各版本与纠错等级可容纳的字节数

版本模块数LMQH
版本 121 × 21 个模块1714117
版本 225 × 25 个模块32262014
版本 329 × 29 个模块53423224
版本 433 × 33 个模块78624634
版本 537 × 37 个模块106846044
版本 641 × 41 个模块1341067458
版本 745 × 45 个模块1541228664
版本 849 × 49 个模块19215210884
版本 953 × 53 个模块23018013098
版本 1057 × 57 个模块271213151119
版本 2097 × 97 个模块858666482382
版本 30137 × 137 个模块17321370982742
版本 40177 × 177 个模块2953233116631273

这是字节模式的容量,也就是最坏情况:小写字母、标点和任何非拉丁文字都各占一个字节。数字每十位装三个、大写字母数字每十一位装两个,所以同样的信息在这些模式下可能需要更小的版本。

印 500 张标签之前,先用两部手机测试,每个手机家族各一部。在你制作它的屏幕上能扫,只是容易的一半;纸张、光线和摄像头质量是另一半。

这个页面为人们真正会编码的六种内容组装有效载荷:文本或链接、Wi-Fi 网络、电子邮件、短信、电话号码和 vCard 联系人;在标签页里画出符号,并交付用于打印的 SVG 和用于其他场景的 PNG。没有上传,没有缩短,没有账号、跳转或过期,因为码里装的是你的数据,而不是指向别人服务器的指针。

关于这个工具

人们通常把二维码当成链接,所以当手机读到方块却什么都没打开时会感到意外:码只是一个容器,里面的字节决定摄像头是提供加入 Wi-Fi、保存联系人,还是显示一句普通的话。这个页面正确构建六种有效载荷,并打印它实际编码的精确字符串。

每种载荷都有自己的拼装规则和独立检查,所以 Wi-Fi 密码里的分号会被转义,姓氏里的逗号会在 vCard 中转义,过长的地址会按 75 个八位组折行。符号在浏览器本地绘制,因此链接、密码或联系人都不会被上传到任何地方。

码本身不能加入网络、发送消息或保存联系人;它只是填好一张表单,等待人来按下按钮。把二维码贴到墙上、标签上或菜单上之前,先用真实手机测试成品,尤其是载荷里含有密码的时候。

它是怎么工作的

二维码是容器,不是链接

摄像头读到的方块只是字节。让手机提出加入网络而不是显示一句话的,是这些字节的形状:网络的 `WIFI:T:WPA;S:the network;P:the password;;`、邮件的 `mailto:`、号码的 `tel:`、短信的 `SMSTO:`,以及联系人的 version 3.0 vCard。每种格式都有自己的转义规则,也都有自己的失败方式,而且看起来和成功一模一样:码能扫,什么也没打开,错误却看不见。

所以这里的每种载荷的拼装规则都带独立检查。包含分号的 Wi-Fi 密码会被转义,因为有效载荷是分号分隔的列表;姓氏里的逗号会在 vCard 中转义,否则它会开始一个新的姓名字段;手机可能截断的长地址会按 75 个八位组折行并标出续行,这是 vCard 规范的要求。结果面板会打印进入码里的精确有效载荷,因此可以逐字符检查,而不是只能相信。

码的种类也决定扫描器能拿它做什么,仅此而已。二维码不能自己加入网络、发送消息或保存联系人:它填好一张表单,等待人按下按钮。把 Wi-Fi 码贴到墙上之前值得知道这一点,因为密码就在码里。

版本、模式,以及一个短链接为什么变成大方块

二维码有四十种尺寸,称为版本。版本 1 是 21 × 21 个模块,版本 40 是 177 × 177,每升一级每边增加四个模块。自动模式下,会画出能容纳数据的最小版本,因为模块越少,码越小,也越容易扫描;结果会说明用了哪个版本,以及再小一级需要多少空间。

能装多少取决于模式——数字最便宜,其余内容按自己的编码方式计费。这就是为什么一个三十字符的小写链接可能需要比八十位数字更大的符号,也是页面会说明所用模式的原因。

纠错是尺寸的另一半。等级 L 把约 7% 的符号用于修复数据,M 约 15%,Q 约 25%,H 约 30%,所以同一段文本在 H 下需要更大的版本。容量值得随手记住:版本 1 在 M 级可装 14 字节小写文本,版本 10 在 M 级可装 213 字节,版本 40 在 M 级可装 2331 字节,在 L 级可装 2953 字节。码下方的表格列出了全部。

纠错、对比度,以及 logo 的诚实边界

修复数据让扫描器能读取被雨淋过、印得很差或部分被遮住的码。它也是中间放 logo 能成立的原因:H 级能承受约 30% 的符号不可读,所以盖在中央的标记是经过计算的风险,而不是魔法。覆盖超过这个比例,或者在 logo 下面使用 M 级,码会停止扫描,却对人眼依然完好。

纠错修不了的是对比度。扫描器寻找的是明暗模块之间的边界,所以反色码、彩色码,或叠在照片上的码,是手机拒绝一个本来完美的符号的常见原因。白底黑字、平整、四周保留标准的四个模块静区(四条白边),是标准假定的条件,这也是这个页面没有颜色选择器的原因。

纸张上的尺寸是另一个实际限制。一条沿用多年的经验法则:码大约应为扫描距离的十分之一,所以在 30 厘米处读取的码约 3 厘米宽,一米或两米外读取的海报码则要远大于最小值。低于约半毫米的模块在家用打印机上会糊成一片,这也是这里的设置以每模块像素而不是厘米为单位的原因之一。

这个页面检查什么,又刻意省略什么

编码本身是本站唯一没有按规范自己写的部分。条形码是一张条宽表加校验和,所以这里的条形码生成器可以拥有自己的实现并证明表是对的;二维码是有限域上的 Reed-Solomon 算术、八种掩码模式按四条惩罚规则评分,以及随每个版本和每个等级变化的块布局。所以这个页面使用一套成熟的二维码编码器,它完全在你的浏览器里运行,然后我们再检查它的工作,而不是直接相信。

检查在结果里可见。承载纠错等级和掩码模式的十五个格式位会从成品符号中读回,而且从它们写入的两个位置分别读取,两者必须一致;从版本 7 起,符号还会用自身受纠错余数保护的十八位声明版本号,同样会被读回。因此码下方打印的数字是关于图像的事实,而不是设置的重复。

我们还会更进一步,用一个按同一标准独立编写的解码器把输出读回来:每种模式、每个等级、渲染成像素的符号、压缩后的 PNG 再读回,以及容量表的每一行都通过编码恰好该长度和再多一字节的有效载荷来确认。最后这项检查在编写时发现了本页自己表格里的一个真实错误:版本 30 在 Q 级可装 982 字节,而不是原先输入的 964。

以下内容不包含,值得明说:会跳转的动态或可编辑码,这正是“以后再改链接”的真正含义,它把码放在别人的服务器上;扫描分析;logo 和颜色;Micro QR;零售供应链使用的 GS1 Digital Link 和 FNC1 参数;超长有效载荷的结构化追加符号;以及汉字模式。日文在这里按 UTF-8 字节编码,每部手机都能读,只是比专用汉字编码器多占一点空间。

示例

示例使用页面自带的默认输入,只改设置;下面的结果与你在页面上看到的完全一致。

菜单、传单或橱窗上的链接

这个码用来做什么: 文本或链接 · 文本或链接: https://danfio.com/tools/qr-code-generator/

版本 4 二维码,纯文本

33 × 33 个模块

328 × 328 像素,每模块 8 像素,静区 4 个模块。43 字节以「8 位字节(UTF-8)」模式写入,纠错等级 M 可恢复代码的 约 15%。

版本: 40 个版本中的第 4 个 · 模块数: 33 × 33 个模块 · 使用的掩码: 掩码 4,共 8 种 · 纠错: M,可恢复 约 15%

整个链接逐字符放进码里。因为小写字母必须作为字节传输,这个 43 字节的链接需要版本 4;同样的信息写成数字会小得多。

柜台使用的访客 Wi-Fi

这个码用来做什么: Wi-Fi 网络,扫描后加入 · 网络名称(SSID): Danfio Guest · Wi-Fi 密码: •••••••• · 安全性: WPA / WPA2 / WPA3,几乎所有现代网络 · 隐藏网络: 否,它会广播名称

版本 3 二维码,Wi-Fi 加入码

29 × 29 个模块

296 × 296 像素,每模块 8 像素,静区 4 个模块。41 字节以「8 位字节(UTF-8)」模式写入,纠错等级 M 可恢复代码的 约 15%。

版本: 40 个版本中的第 3 个 · 模块数: 29 × 29 个模块 · 使用的掩码: 掩码 2,共 8 种 · 纠错: M,可恢复 约 15%

有效载荷是 `WIFI:T:WPA;S:Danfio Guest;P:latté-2026;;`,重音字符按 UTF-8 字节进入。密码就在码里,所以任何能拍到它的人都能加入网络。

会议胸牌上的联系人卡片

这个码用来做什么: 联系人卡片,vCard · 姓名: Lovelace, Ada · 公司: Danfio · 职位: Editor · 电话: +1 555 010 1234 · 邮箱: ada@danfio.com · 网站: https://danfio.com/

版本 10 二维码,联系人卡片

57 × 57 个模块

520 × 520 像素,每模块 8 像素,静区 4 个模块。188 字节以「8 位字节(UTF-8)」模式写入,纠错等级 M 可恢复代码的 约 15%。

版本: 40 个版本中的第 10 个 · 模块数: 57 × 57 个模块 · 使用的掩码: 掩码 0,共 8 种 · 纠错: M,可恢复 约 15%

逗号把姓名拆成 vCard 格式需要的姓和名两部分,电话号码在进入时去掉括号和连字符,tel 拨号器没有它们会更顺畅。

客人可以拨打的号码,以及可以发送的消息

这个码用来做什么: 电话号码 · 电话号码: +44 20 7946 0958

版本 2 二维码,电话号码

25 × 25 个模块

264 × 264 像素,每模块 8 像素,静区 4 个模块。17 字节以「8 位字节(UTF-8)」模式写入,纠错等级 M 可恢复代码的 约 15%。

版本: 40 个版本中的第 2 个 · 模块数: 25 × 25 个模块 · 使用的掩码: 掩码 6,共 8 种 · 纠错: M,可恢复 约 15%

纯数字的电话号码是二维码能承载的最便宜内容,所以这个符号很小。把类型切换成短信会增加 `SMSTO:` 和消息文本,消息长时版本也会上升。

常见问题

这些码会过期吗?

不会。静态二维码就是数据本身画成方块,所以只要它指向的东西还在,它就继续工作;2015 年印的码今天仍然能扫。会过期的是它链接到的网页,那是另一个问题。码永不过期,正是这个页面不缩短链接的原因:缩短服务是一个中间人,可能倒闭、改条款或开始收费。

它免费吗,有水印吗?

免费,没有水印、没有账号、没有注册、没有下载次数限制。你下载的 SVG 和 PNG 只包含码本身,没有署名行、边框或彩色外框。没有需要标注的来源,这个页面上也没有任何地方索要邮箱地址。

你们会保存二维码,或者知道它们什么时候被扫描吗?

不会,原因值得说准确。码是在你的浏览器里根据你输入的内容构建的;本站没有可以接收它的端点,页面背后也没有数据库。这也是取舍:这里无法统计扫描次数或说明扫描发生在哪里,因为码从不与服务器通信。统计扫描需要让码指向一个跳转服务,那是另一种产品,带着另一套承诺,而且服务停止时它也会失效。

应该选择哪个纠错等级?

M 是通常的答案:它修复约 15% 的符号,占用的空间比 H 少得多。当码会印得很小、放在容易脏或损坏的地方,比如设备标签、桌上的菜单,或者在弱光下扫描、被 logo 覆盖时,使用 Q 或 H。只有当每一毫米都重要、并且码会在干净屏幕上近距离读取时,才使用 L。

应该印多大?

长期沿用的经验法则是,码大约应为扫描距离的十分之一:在 30 厘米处读取,就做成约 3 厘米宽;从一米处读取,就做成约 10 厘米。低于约半毫米的模块在家用打印机上会糊在一起,所以要把码整体放大,而不是缩小模块;SVG 与分辨率无关,任何尺寸都清晰。也要保留静区:它是码的一部分,不是装饰。

为什么我的 Wi-Fi 码无法加入网络?

四个常见原因,按频率排序:网络名区分大小写,手机把 “Cafe” 和 “cafe” 当成两个不同的网络;密码含有构建有效载荷时没有转义的字符,这个页面会转义,别处生成的码不一定;网络只支持 WPA3 或只支持 WEP,而手机早于那个标准;或者网络使用强制门户,任何 Wi-Fi 码都无法登录,那需要一个正常打开的网页。始终先用手机对着屏幕上的码:屏幕都加入不了,打印出来也不行。

我可以把 logo 放在码中间吗?

这个页面不绘制 logo,但在任何地方添加之前,值得知道 logo 的代价:它会覆盖扫描器需要的模块,所以纠错必须提高到 H,约 30% 可恢复,标记面积应控制在符号面积的大约四分之一以内。印超过一小批之前,用几部手机、按码实际使用的尺寸和距离测试。

印出来之后还能改码指向的地方吗?

静态码不能,目的地就在方块里,改它意味着换一个新码。通常的变通方法是动态码:印出来的方块指向别人服务上的短网址,再由它跳转到你的真实目的地并统计扫描。这换来了可编辑性和分析,代价是一个依赖、过期风险,以及多数服务上的月费。如果你能控制目的网址,静态码是更耐久的选择。

码指向的内容由谁负责?

由你负责。码只承载你输入的数据,这个页面不缩短、不跟踪、不审查也不批准它,它只是编码器,不是你粘贴内容的作者。本站不声称任何目的地合法、安全或适合任何受众,所以在公开印刷之前,请逐字符阅读码下方「实际编码的内容」那张表。

资料来源与统计口径

  • 符号遵循 ISO/IEC 18004(QR Code Model 2):版本从 21 × 21 到 177 × 177 个模块,四级纠错,静区四个模块。
  • Wi-Fi 密码不会写进网页地址,复制出去的链接带不走它;超长内容、logo 嵌入和彩色或反色符号不提供。
  • 内容和符号都在浏览器里本地生成,不会上传。

最近复核于 2026-09-16.

本页在您的浏览器本地运行,请保留原文件备份;不涉及财务建议。 阅读完整免责声明。