§

画像をドロップまたはクリックして選択

画像をドロップまたはクリックして選択 PNG・JPG・GIF・BMP・WebP — またはクリップボードから貼り付け
§

カメラでスキャン

カメラへのアクセスはこのトグルがオンのときのみ要求されます。アップロードや録画は一切行いません。
§

デコードされた内容

日本では QR コードは日常のあらゆる場面に存在します。交通系 IC カードのチャージ画面、PayPay・LINE Pay などのキャッシュレス決済、マイナンバーカードの読み取り、電子マネー付き商品、イベントの入場チケット、飲食店のメニュー表示、名刺の電子化。スマートフォンのカメラを使えばすぐにスキャンできますが、デスクトップのブラウザで中身を確認したいとき — ポスターの URL が正規サイトかどうかの確認、ルーター設定ページに印刷された Wi-Fi QR コードからのパスワード復元、名刺の vCard を確認してから連絡先に追加する場合など — このリーダーが役立ちます。画像バイトとデコードされた内容はタブの中に留まります。

QR コードリーダーとは何ですか?

QR コードは、ISO/IEC 18004 で定義された二次元マトリックスバーコードです。テキスト、URL、連絡先カード、Wi-Fi 認証情報などの短いペイロードを、黒白の正方形モジュールのグリッドとして、部分的な損傷やロゴのオーバーレイがあってもシンボルをデコードできるリード・ソロモン誤り訂正データとともにエンコードします。QR コードリーダーはその逆を行います。このリーダーは、オープンソースの jsQR ライブラリ(約 130 KB、MIT ライセンス)を使用してブラウザ内で直接デコードパイプラインを実行します。ドロップ、貼り付け、またはカメラでスキャンした画像はタブの外に出ません。アップロードのステップはありません。

QR デコードはどのように機能しますか?

デコードはすべてあなたのデバイス上で実行されます。各画像はペイロードテキストが返される前に固定のパイプラインを通過します:

  1. 画像ファイル(PNG・JPG・WebP、またはカメラフレーム)がオフスクリーンの HTML <canvas> に描画されます。Canvas API は生のピクセルデータを RGBA バイト配列として返します。
  2. jsQR ライブラリがピクセル配列をグレースケールビットマップに変換し、QR シンボルの角にある 3 つの特徴的なファインダーパターン正方形をスキャンします。
  3. ファインダーパターンが見つかると、デコーダーは透視変換を計算し、完全なモジュールグリッドを抽出して、各セルをバイナリの 0 または 1 として読み取ります。
  4. モジュールグリッドは QR 仕様に従って解析されます。フォーマットとバージョン情報が最初に読み取られ、次にデータモジュールがデインターリーブされ、リード・ソロモン誤り訂正が適用されます。
  5. 訂正されたデータコードワードがセグメントモード(数字、英数字、バイト、漢字)に従ってデコードされ、元のペイロード文字列が得られます。
  6. このツールはその後、小さな正規表現セットでペイロードを分析してコンテンツタイプ(URL、Wi-Fi 認証情報、vCard など)を識別し、適切なアクションボタンとともに結果を表示します。

ブラウザベースの QR リーダーを使う理由は何ですか?

  • 画像バイトがデバイスの外に出ることはありません。Wi-Fi パスワード、社内のステージング URL、個人の電話番号を含む vCard が隠れた QR コードを貼り付けても、その内容はノートパソコンの中に留まります。他の QR リーダーはリモートサーバーでデコードを実行し、先に画像をアップロードするよう求めます — このツールは違います。
  • ページが読み込まれれば、デコードはオフラインでも動作します。jsQR ライブラリはタブの中に存在します。Wi-Fi を切断し、QR 画像をページにドロップしても、ペイロードが返ってきます — フライト中、地下、社内ネットワークがサードパーティのスキャナーをブロックする環境でも役立ちます。
  • デスクトップやノートパソコンにウェブカメラがあれば、アプリをインストールしたりスマートフォンを取り出したりせずに、印刷された QR コードをカメラで指して読み取ることができます。カメラストリームはブラウザ内に留まり、コードがデコードされた瞬間に停止します。
  • リーダーは URL、Wi-Fi 接続文字列、vCard、MeCard、mailto、SMS、位置情報ペイロードを認識し、それに合ったアクションボタンを表示します。URL を開く、Wi-Fi パスワードをコピーする、連絡先カードを保存する — QR コードが実際に含むものに応じて。

QR コードリーダーの一般的な用途

スマートフォンを向けずに QR コードが実際に何をエンコードしているか確認したいとき:

  • 生成した QR コードのデバッグ。アプリが生成した QR コードを貼り付け(または隣の QR コードジェネレーターからスクリーンショットを撮影)て、印刷、パッケージング、ポスターに送る前にエンコードされた URL やペイロードが意図したものと一致するか確認します。
  • Wi-Fi 認証情報の復元。ルーター設定ページ、ホテルのウェルカムカード、または AirBnB リスティング写真の Wi-Fi QR コードをスキャンすると、リーダーが SSID、セキュリティタイプ、パスフレーズをプレーンテキストで返し、別のデバイスにコピーできます。
  • 監査とアクセシビリティ。スキャンされた文書、製品ラベル、会議バッジ、またはソーシャル投稿のスクリーンショット上の QR コードをデコードして、内容をスプレッドシート、コンプライアンスログ、または支援ソフトウェアに抽出します。

実際の QR コードのデコードはどのように見えますか?

コーヒーショップの窓に貼られた Wi-Fi QR コードを例に取ります。シンボルの裏には、WIFI: URI スキームに従った生のペイロードがあります:WIFI:S:CafeGuest;T:WPA;P:espresso2026;H:false;;。シンボルを撮影し、アップロードゾーンに画像をドロップすると、パイプラインが動作します。Canvas がピクセルを読み取り、jsQR が 3 つのコーナーファインダーパターンを特定し、透視変換がグリッドを正規化し、リード・ソロモンがグレアや圧縮ダメージを修正し、バイトモードセグメントが URI 文字列を生成します。リーダーはその後 WIFI: プレフィックスを検出して種類を Wi-Fi とラベル付けし、ネットワーク名を CafeGuest、セキュリティタイプを WPA、パスフレーズを espresso2026 としてパースします。コピー ボタンでパスワードをクリップボードに入れれば、OS のネットワーク選択画面に貼り付けられます。

この QR コードリーダーは一つの仕事のために作られました:サーバーを介さず、ブラウザの中だけで、QR コードが何をエンコードしているかを正確に示すことです。画像をドロップし、クリップボードから貼り付け、またはウェブカメラをオンにすると、デコードされた内容とその種類が 1 秒未満で画面に表示されます。画像バイトはアップロードされません。カメラフレームは記録されません。デコードされたペイロードはあなたのもとに返ってくる途中で誰かのログを通過しません。

画像はサーバーにアップロードされますか?

いいえ。画像はメモリ内の HTML キャンバスに描画され、タブ内で実行されるクライアントサイドの JavaScript によって完全にデコードされます。画像のいかなるピクセルもサーバーに送信されたり、ログに記録されたり、保存されたりすることはありません。これを確認するには、DevTools を開いてネットワークパネルを表示し、画像をドロップしてみてください。ファイルの内容に紐付けられた XHR、fetch、アナリティクスのビーコンは一切発生しません。

カメラスキャンはどのように機能しますか?

カメラモードを有効にすると、ブラウザは標準の getUserMedia API を通じてデバイスのカメラへのアクセス許可を要求します。ビデオフレームは最大 640×480 解像度でオフスクリーンキャンバスにキャプチャされ、jsQR に渡されてデコードされます。各フレームは次のフレームが到着した瞬間に破棄され、最初のデコードが成功した時点でカメラストリームは停止します。フレームの記録もフレームの送信もなく、権限のプロンプトはページ読み込み時ではなくトグルをオンにしたときのみ表示されます。

一部の QR コードの内容が自動的に Wi-Fi や vCard として検出されるのはなぜですか?

Wi-Fi 認証情報の QR ペイロードは WIFI:S:ssid;T:type;P:password;; の形式に従い、vCard は BEGIN:VCARD で始まります。このリーダーはこれらのパターンを、他の標準的なプレフィックス(mailto:geo:smsto:MECARD:https://)とともに認識し、ペイロードで実際に行いたいことに合ったアクションボタンが表示されるよう、コンテンツタイプを自動的にラベル付けします。

QR コードがスキャンできないのはなぜですか?

よくある原因:画像が小さすぎるか解像度が低い(最低 ~100×100px、300×300 以上で安定してスキャン可能)、シンボルにロゴのオーバーレイによる損傷が多い、静止帯(モジュール周囲の余白)がない、またはコントラストが低い。カメラモードでは、照明を改善するかコードをレンズに近づけてください — jsQR はファインダーパターンを検出するために各モジュールをはっきりと識別する必要があります。