二维码扫描器

用摄像头扫,或把截图拖进来;图片始终留在设备上。

只有点击按钮时才会请求摄像头权限。每一帧都在本机解码后立即丢弃。

这个扫描器完全在页面里运行。用摄像头扫描时,视频帧在本地解码后立即丢弃,没有任何一帧被发出去;上传图片时,文件只读进内存,同样不会传输,打开开发者工具的 Network 面板就能确认。解码走三级回退:先试浏览器原生 BarcodeDetector,不可用时用内置的 jsQR,遇到它不支持的符号体系再加载 ZXing WebAssembly。

两种输入并存,是因为它们解决的问题不同。摄像头处理你眼前的码,上传通道处理截图、PDF 导出件或别人发来的照片,这类图片手机的系统相机根本读不了。解码出的链接不会自动跳转,页面先把目标域名摆出来让你看。

使用方法

  1. 点打开摄像头并允许权限弹窗,或者把图片拖到上传区。
  2. 把码放进取景框,它会自动解码,不需要按快门。
  3. 先看清结果再决定是否打开,尤其是链接。

解码是怎么工作的

扫描器先试浏览器原生的 BarcodeDetector,它速度快,加载成本为零。这个 API 不可用时(Safari 是典型例子),改由页面内置的 jsQR 解码,体积 40 KB 而不是 1 MB,对普通二维码的识别同样准确。再往上还有一层:只有遇到 jsQR 不支持的符号体系,页面才去加载 ZXing WebAssembly。

摄像头画面在解码前先缩到约 640 像素宽,并以每秒约 8 次的频率处理,而不是每帧都过一遍。这样检测成功率仍然很高,CPU 占用却明显下降,在手机这种摄像头和浏览器共享散热预算的设备上尤其重要。

审校于 2026-10-21。这个工具完全在你的浏览器里运行——没有服务器、不需要账号,生成的内容也不会被保存。

常见问题

用它扫二维码安全吗?

扫描本身是安全的,风险来自码里的内容,链接可以指向任何地方。这个扫描器从不自动打开链接,会先把目标域名显示出来。

为什么摄像头打不开?

通常是权限被拒绝、摄像头正被别的应用占用,或者页面不是 HTTPS。每种情况都会给出对应提示,并退回上传入口,那条路径不需要任何权限。

能从截图里读码吗?

可以,上传通道就是为此准备的。桌面端复制截图后在页面里按 Ctrl+V 也能直接粘贴。

iPhone 上能用吗?

能,Safari 里可用。iOS 不提供原生条码 API,页面在那边改用内置的 JavaScript 解码器,摄像头画面和上传的照片都能读,数据始终不离开设备。

相关工具

更多二维码工具。