ZXing QR スキャナー

ZXing のエンジンを WebAssembly にしたものを、ページ内で動かします。

カメラはボタンを押したときだけ要求します。フレームは端末内で解読し、そのまま破棄します。

ZXing はオープンソースのバーコードライブラリの参照実装で、多くの Android スキャンアプリの背後にあるのと同じエンジンです。ここでは WebAssembly として動くので、ブラウザのネイティブ API が公開していない形式も読めます。

代償はダウンロードサイズです。wasm モジュールは 1 メガバイト前後あるため、必要になった時点で取得します。このページでは ZXing 自体が目的なので即座に読み込みますが、汎用スキャナーのほうは QR 以外の形式が必要になったときだけ取りに行きます。

使い方

  1. 普通にスキャンします。ネイティブ検出器が扱えない形式なら、ZXing が自動で読み込まれます。
  2. DataMatrix や PDF417 のような珍しい体系は、この経路で読めます。
  3. 結果カードのデコーダ行を見ると、どのエンジンが動いたか分かります。

ZXing とネイティブ BarcodeDetector

ネイティブ API は速く、読み込みコストもゼロですが、対応形式はプラットフォームが決めるためばらつきます。Android の Chrome は Safari より多くを公開しています。ZXing はブラウザを問わず一貫し、より多くの体系を扱います。引き換えに 1 メガバイトのダウンロードと、1 フレームあたりの遅い解読を受け入れます。

実運用で妥当な戦略は、このページがやっていることそのものです。まずネイティブを試し、API がないか対応形式を報告しない場合に ZXing へ落とす。

確認日:2026-10-21。このツールはすべてブラウザ内で動作します。サーバーもアカウントもなく、生成した内容は保存されません。

よくある質問

ZXing は無料で使えますか?

使えます。Apache-2.0 ライセンスです。ここで使っている WebAssembly 版は、同じコアをブラウザ向けに保守している移植版です。

最初のスキャンが遅いのはなぜ?

wasm モジュールが 1 メガバイト前後あり、初回に取得されます。以降はブラウザにキャッシュされ、すぐ動きます。

ZXing のほうが破損したコードに強いですか?

低コントラストや回転に対しては、一般的にネイティブ API より寛容です。ただし位置検出パターンが失われたコードは、どちらも復元できません。

関連ツール

QR コードのその他のツール。