写真の中のQRに何が入っているか、どこにつながるかを先に確かめます
QRコード画像スキャナーは、保存した写真やスクリーンショットからQRコードを探し、中に入っている文字を取り出して表示するツールです。画面に表示されたQRをもう一台の端末で撮り直す必要はなく、1枚の写真にQRが複数あってもすべて見つけて番号を付けます。判定カードは、QRがWebアドレスなら実際の接続先サイトを、Wi-Fiならネットワーク名とパスワードを、連絡先・2段階認証・決済QRなら項目ごとに分けて表示します。
写真はサーバーに送らず、このブラウザーの中だけで読み取ります。アドレスは自動では開かないため、内容と接続先を確認してから、必要なものだけをコピーするか自分で開いてください。
どんなときに使うか
QRはカメラで撮って読むことを前提にした仕組みですが、実際には画面や写真の中にすでにあるQRを読みたい場面が少なくありません。
- 同じスマホにあるQR: チャットで届いたイベント用QR、メールに貼られた入場QR、アプリの画面に出たQRは、そのスマホのカメラでは撮れません。スクリーンショットを保存して、このツールで選べば読み取れます。
- パソコンの画面にあるQR: Webページや資料のQRは、画面を撮ってCtrl+V(Macは⌘+V)で貼り付ければそのまま読み取れます。
- Wi-Fiのパスワード確認: Androidは接続中のWi-FiをQRコードで共有できます。その画面を撮って読み取れば、別の端末に手入力するパスワードを確認できます。
- 開く前のアドレス確認: ポスター・郵便物・駐車場の案内にあるQRが、本当にその会社や施設のアドレスにつながるかを、開く前に確かめられます。FBIも2022年に、犯罪者がデジタルと物理の両方のQRコードを改ざんして本物を悪意あるものに差し替えると警告しています。
- 印刷前の検品: 自作したQR画像が意図したアドレスや文言を含んでいるか、チラシ1枚に入れた複数のQRがそれぞれ正しいかをまとめて照合できます。
スキャナーの使い方
- 写真を選ぶを押すか、写真を作業エリアにドラッグ&ドロップします。コピーした画像は Ctrl+V(⌘+V)または貼り付けボタンで入れます。
- 選んだ時点で読み取りが始まります。写真の上を走査線が通り過ぎたあと、見つかったQRごとに枠と番号が付きます。
- 判定カード上部の番号チップ(または写真上の枠)を押して、読み取るQRを選びます。
- 種類ごとの解説とQRの原文を確認します。Webアドレスは、強調された「接続先」と表示された確認項目を先に見てください。
- 必要に応じて、原文のコピー、TXT保存、Wi-Fiパスワードのコピー、連絡先の.vcf保存を使います。アドレスは「開く」ボタンを自分で押したときだけ新しいタブで開きます。
最初に表示されている写真は、架空のカフェの案内カードで作ったサンプルです。実際の写真を選ぶとその写真に切り替わります。クリアを押すと写真と結果が消えますが、端末にある元のファイルや、すでにコピーした内容はそのまま残ります。
QRの中の文字の形と、このツールが表示する内容
QRそのものは文字を入れる容れ物で、「Wi-Fi」や「連絡先」といった種類は、入っている文字列の先頭部分の形で決まります。このツールは下の形式を見分けて項目に分けて表示し、見分けられなかった内容は原文のまま表示します。
| 種類 | QRの原文の始まり方 | 判定カードに表示される内容 |
|---|---|---|
| Webアドレス | https:// · http:// | 接続先(アドレス末尾のドメイン)、ホスト全体、パス、パラメーター、確認項目、開くボタン |
| Wi-Fi | WIFI:T:WPA;S:名前;P:パスワード;; | ネットワーク名、セキュリティ方式、伏せたパスワード、ステルスネットワークかどうか |
| 連絡先 | BEGIN:VCARD · MECARD: | 名前・会社・電話・メール・住所、.vcfファイルの保存 |
| 2段階認証 | otpauth://totp/ | サービス・アカウント・桁数、伏せた秘密鍵、漏えい警告 |
| 決済QR | 000201で始まり6304+チェック値で終わる | 支払先の店名・都市・金額、静的・動的の別、チェック値(CRC)の一致 |
| メール・SMS・電話 | mailto: · MATMSG: · SMSTO: · tel: | 宛先・番号、件名・本文 |
| 位置情報・予定 | geo: · BEGIN:VEVENT | 緯度・経度、予定の名前・開始・終了・場所 |
| アプリのアドレス | intent: などの 名前: 形式 | アドレスの種類のみ表示し、開かない |
| テキスト | 上のどれにも当てはまらない内容 | 文字数・行数と原文 |
Wi-Fiと連絡先の形式は、QR読み取りライブラリのZXingがまとめている慣例に従っています。Wi-Fiの文字列では \ ; , " : の記号の前にバックスラッシュを付けて書くため、このツールはバックスラッシュを外して、実際のネットワーク名とパスワードを表示します。
アドレスを開く前に「接続先」を見る
Webアドレスで実際に接続するサイトを決めるのは、ホスト名の末尾の部分です。前に付く名前はサイトの持ち主が自由に決められるため、見慣れた会社名や官公庁名が前のほうにあっても、末尾が違えば別のサイトです。判定カードはこの末尾部分を「接続先」として強調し、見直したほうがよい点があれば感嘆符で示します。
| QRの原文 | 接続先 | 表示される確認項目 |
|---|---|---|
https://yahoo.co.jp@evil.example/login | evil.example | @の前はサイト名ではない(開くボタンは非表示) |
https://www.city.tokyo.lg.jp.example.co.jp/notice | example.co.jp | 前にある lg.jp は名前にすぎない |
http://192.168.0.1:8080/pay | 192.168.0.1 | 暗号化されない接続、IPアドレス、標準ではないポート |
https://bit.ly/3Qr7xYz | bit.ly | 短縮URL(最終的な行き先は開かないと分からない) |
https://xn--80ak6aa92e.com/ | xn--80ak6aa92e.com | 国際化ドメイン(似た文字で見せかけられる) |
https://example.com/menu?table=7&utm_source=qr | example.com | 暗号化接続、utm_ による流入元の計測 |
- @を含むアドレス: アドレスの書式では@の前はユーザー名の位置で、ブラウザーは@の後ろに接続します。このツールは、こうしたアドレスには開くボタンを付けません。
- co.jp・lg.jp などの末尾: 誰でも名前を登録できる末尾(パブリックサフィックス)は、もう一つ前の部分までを含めて「接続先」とみなします。Public Suffix List のうちよく使われるものだけを収録しているため、まれなアドレスでは末尾2区切りだけの表示になることがあります。github.io や azurewebsites.net のように誰でもサブドメインを取れる共有ホスティングも、同じようにその前の名前まで「接続先」とみなします。
- 短縮URL: bit.ly や tinyurl.com などの短縮URLは、開いて初めて最終的な行き先が分かります。このツールはアドレスに事前にアクセスしないため、行き先までは表示しません。
- 安全の判定ではありません: 表示が出ていなくても安全とは限りません。本物の会社を装ったサイトもhttpsを使えるため、公式に案内されたアドレスと末尾が同じかどうかを比べてください。
米国のFBI(IC3)は2022年1月に、犯罪者がデジタルと物理の両方のQRコードを改ざんして、正規のコードを悪意あるコードに差し替えていると注意を促しました。店頭やポスターのQRに別のシールが重ねて貼られていないか、読み取り後に個人情報を求められたり不審なアプリの導入を促されたりしないかを確認するのが基本です。
Wi-Fi QRからパスワードを確認する
Wi-FiのQRの原文は、WIFI:T:WPA;S:Roberin Guest;P:latte-2026;; のような形をしています。Tはセキュリティ方式(WPA・WEP、パスワードなしなら nopass)、Sはネットワーク名、Pはパスワード、H:trueは一覧に名前が出ないステルスネットワークを表し、順序は入れ替わっていても構いません。サンプル写真の右側のQRがこの文字列で、判定カードにはネットワーク名「Roberin Guest」、セキュリティ方式 WPA/WPA2、伏せたパスワードが表示されます。
Androidでは、設定アプリの[ネットワークとインターネット]から[インターネット]を開き、Wi-Fiネットワークの[共有]をタップすると、同じネットワークに接続するためのQRコードが表示されます(Googleのヘルプに基づく手順で、機種によってメニュー名は異なることがあります)。そのQR画面を撮ってこのツールで読み取れば、パソコンなどQRを読めない端末に手入力するパスワードを確認できます。パスワードは最初は伏せられており、「表示」を押すと見えます。
2段階認証のQRは秘密鍵そのもの
認証アプリを最初に登録するとき画面に出るQRには、otpauth://totp/サービス:アカウント?secret=…&issuer=サービス という形のアドレスが入っています。Google Authenticator のアドレス形式の説明によると、secretは必須の値で、Base32で書かれた秘密鍵です。この鍵を持つ人は誰でも同じ認証コードを作れるため、このツールは秘密鍵を伏せ、漏えいへの警告をあわせて表示します。
バックアップのためにこのQRを確認する場合も、スクリーンショットをチャットやクラウドの共有フォルダーに置かないでください。鍵が漏れたかもしれないときは、そのサービスで2段階認証をいったん解除し、新しいQRで登録し直す必要があります。
決済QRは支払先の店名を確認する
世界の多くの店舗用決済QRは、EMVCoが定めた「店舗提示型(Merchant-Presented Mode)」の形式を使っています。日本の統一QR「JPQR」もその一つで、キャッシュレス推進協議会のガイドライン(Ver.3.0、2022年11月8日)は、統一静的QRコードのデータレイアウトがEMV仕様(MPM)に従うと定めています。原文は2桁の番号、2桁の長さ、値が続く形になっており、このツールは次の番号を読み解いて表示します。
- 59 店名・60 都市・58 国: 決済アプリに表示される支払先と同じかどうかを比べる値です。
- 54 金額・53 通貨: 金額がないQRは、支払いのときに自分で金額を入力するQRです。
- 01 QRの種類: 11は店頭に掲示しておく静的、12は決済ごとに新しく作る動的です。
- 63 チェック値(CRC): 前の内容から計算した値と一致する必要があります。一致しなければ、内容が書き換えられたか、誤って作られたQRです。
決済アプリを開く前に、店名が支払先と同じかを確かめるのが基本です。EMV形式ではない決済QR(アプリ専用のアドレスや形式)は、このツールではWebアドレスやテキストとして表示されます。どの形式でも、このツールは決済を行わず、店や金額が本物かどうかも確認しません。
文字化けして見えるとき
DENSO WAVEのFAQによると、QRはどのような文字コードのデータでもバイナリデータとして格納でき、読み取る側も同じ文字コードとして処理する必要があります。そのため、古いジェネレーターで作った日本語のQR(Shift_JIS)を UTF-8 として読むと、文字が化けたり、空に見えたりします。このツールは次の順序でエンコードを決めます。
- QR内にエンコード指定(ECI)があれば、そのエンコードで読みます。
- 指定がなければ、まず UTF-8 として読み、合わなければ Shift_JIS、EUC-KR、Latin-1 の順に、最初に合うものを選びます。
- 英数字だけのQRは、どのエンコードで読んでも同じ結果なので、エンコードは別に表示しません。
自動で選んだエンコードが違って文字がおかしいときは、判定カードの下にある「文字化けしたらエンコードを変更」で別のエンコードを押して読み直してください。日本語のQRで使われる漢字モードは、Shift_JISの表で文字に戻します。DENSO WAVEの説明では、漢字モードが扱えるのはShift_JISの8140h〜9FFChとE040h〜EAA4hの範囲で、それ以外の文字は8ビットバイトモードなどで格納されます。
QRのサイズ(バージョン)と入る量
QRにはバージョン1から40まであり、バージョンが一つ上がるごとに、縦横それぞれ4セルずつ増えます。判定カード下の「サイズ」に出るバージョンとセル数が、この表の値です。
| バージョン | 1辺のセル数 | バージョン | 1辺のセル数 |
|---|---|---|---|
| 1 | 21 × 21 | 10 | 57 × 57 |
| 2 | 25 × 25 | 20 | 97 × 97 |
| 3 | 29 × 29 | 30 | 137 × 137 |
| 4 | 33 × 33 | 40 | 177 × 177 |
最大のバージョン40で誤り訂正レベルを最も低いLにすると、数字のみなら7,089文字、英数字なら4,296文字、8ビットバイトなら2,953文字、漢字なら1,817文字まで入ります。日本語をUTF-8のバイトモードで入れると1文字が3バイトなので、上限は984文字ですが、Shift_JISの漢字モードで入れられる文字なら1,817文字まで入る計算です。内容が長いほどセルが細かくなり、小さい写真では読み取りにくくなります。
QRが見つからないときの確認点
DENSO WAVEは、QRの四辺に4セル分以上の余白(マージン)を確保するよう案内しています。ここでセルとは、QRを構成する小さな正方形1つのことで、余白がないと、QRの縁と周りの模様を見分けにくくなります。
- 切れている: スクリーンショットをQRの縁ぎりぎりで切り取らず、周りの空白も一緒に残します。
- ぼけ・反射: 光が映り込んだ写真より、元の画像や画面のキャプチャのほうが読み取れます。
- 小さいQR: 大きな写真の中でQRが小さいときは、余白を付けてその部分だけを切り抜き、もう一度アップロードします。このツールは長辺1,280pxで先に探し、見つからなければ大きな写真は元の大きさを超えない範囲で最大2,560pxで、長辺が1,280px以下の写真は2〜4倍に拡大して、もう一度探します。
- 隠れ・装飾: ロゴ・シール・しわが大きく覆っていると、誤り訂正でも復元できないことがあります。
- 反転QR: 暗い背景に明るいセルで写ったQRも探します。その場合は「色: 反転」と表示します。
見つからなかったという結果は、写真からQRを読み取れなかったという意味にすぎず、QRが期限切れである、あるいは空であるという意味ではありません。
写真はブラウザーの中だけで読み取る
MDNのFile APIの解説にあるとおり、Webページはユーザーが選んだファイルをその端末の中で読み取れます。このツールはその方法でだけ写真を読みます。選んだ写真を画面に描画してから、画素をブラウザー内のワーカー(Web Worker)に渡してQRを探し、写真も結果も保存せず、アドレスバーにも載せません。読み取りエンジンには、公開ライブラリのjsQR 1.4.0をサイト内にそのまま置いて使っています。
ただし、このページや機能ファイル、広告を読み込む通信まで存在しないという意味ではありません。Wi-Fiのパスワードや2段階認証のQRなど、機密性の高い内容を確認したときは、共用のパソコンでは確認後にクリアを押してから、ウィンドウを閉じてください。
間違えやすい点
- QRの下に印刷された文字を期待する: QRの読み取りは、写真の中の文字を読む文字認識(OCR)とは別のものです。QRの横に印刷された案内文や番号は、結果には出ません。
- アドレスに会社名があるから本物と判断する: 会社名がアドレスの前のほうにあっても、末尾が違えば別のサイトです。
- 読み取れたからクーポンやチケットも有効と判断する: QRの原文が読めても、クーポンが使えるか、チケットの有効期限がいつかは、発行元のシステムにしか分かりません。
- 画像のアドレスを貼り付ける: 貼り付けは画像データを受け取る機能なので、画像のアドレス(文字)を貼っても読み取りません。画像をコピーするか、ファイルとして保存して選んでください。
- 拡張子だけを変える: HEICのファイル名を .jpg に変えても形式は変わらず、開けないことがあります。写真アプリでJPGに書き出すか、スクリーンショットを使ってください。
限界と注意
- 一度に読めるのは写真1枚で、20MB・3,200万画素までです。1枚の写真からは最大12個のQRを探し、読み取りが1つのサイズで20秒を超えると停止します。
- 読み取るのはQRコードだけです。棒状のバーコード、マイクロQR、データマトリックスなど他の2次元コードは読みません。複数のQRに分けて入れる連結方式も、1つにはまとめません。
- カメラでの撮影、読み取り履歴の保存、外部の画像アドレスの読み込みはできません。PDFはスクリーンショットにする必要があり、HEICは対応するブラウザーでのみ読み取れます。
- アドレスの「接続先」は、パブリックサフィックスリストの一部に基づいて示しています。サイトの安全性や、短縮URLの最終的な行き先は調べません。
- 種類の表示は原文の形から付けた案内であり、Wi-Fiのパスワードが今も正しいか、決済QRの店が本物かどうかは分かりません。
基準日 QRの規格・形式の慣例・公式の警告の出典は、2026-10-20に確認しました。
出典
- 01DENSO WAVE: コード領域を確定するためのポイント四辺に4セル分以上のマージン(余白)が必要
- 02DENSO WAVE: QRコードの情報量とバージョンバージョン1(21セル×21セル)から縦横4セルずつ増え、バージョン40(177セル×177セル)まで
- 03DENSO WAVE: QRコード規格化・標準化最大 数字7,089文字・英数字4,296文字・8ビットバイト2,953文字・漢字1,817文字
- 04DENSO WAVE: FAQどの文字コードのデータもバイナリとして格納でき、読み取り側も同じ文字コードで処理する。漢字モードはShift_JISの8140h〜9FFCh・E040h〜EAA4h
- 05ZXing: Barcode ContentsWIFI・MECARD・SMSTO・geo・tel・mailtoの形式、Wi-Fi記号のエスケープ
- 06Google Authenticator: Key Uri Formatotpauth://TYPE/LABEL?PARAMETERS、secretは必須のBase32の値
- 07FBI IC3: QRコードの改ざんに関する警告(2022-01-18)犯罪者がデジタルと物理のQRコードを改ざんし、正規のコードを悪意あるコードに差し替える
- 08Android ヘルプ: Android デバイスを Wi-Fi ネットワークに接続するWi-Fiネットワークの[共有]をタップするとQRコードが表示される
- 09EMVCo: QRコード決済の規格店舗提示型 v1.1: 59 店名、54 金額、01 静的11・動的12、63 CRC(多項式1021・初期値FFFF)
- 10キャッシュレス推進協議会: コード決済に関する統一技術仕様ガイドライン【店舗提示型】MPM Ver.3.02.1 統一静的QRコードのデータレイアウトはEMV仕様(MPM)に従う
- 11Public Suffix Listインターネットの利用者が直接名前を登録できる末尾(パブリックサフィックス)の一覧
- 12MDN: ウェブアプリケーションからのファイルの使用ユーザーが選んだローカルファイルをWebページが読み取る方法
- 13WHATWG: Encoding Standardブラウザーが読むEUC-KR・Shift_JIS・windows-1252(Latin-1)のラベル
- 14jsQR読み取りエンジン、Apache-2.0、1.4.0を使用
よくある質問
同じスマホに保存したQRの写真も読み取れますか?
はい。チャットで届いたQR画像や、画面を撮ったスクリーンショットを保存して、「写真を選ぶ」で選べば読み取れます。別の端末で画面を撮り直す必要はありません。このツールはカメラを起動せず、保存された画像だけを読み取ります。
1枚の写真にQRが複数あるとどうなりますか?
写真の中のQRをすべて探し、上から下、左から右の順に番号を付けます。番号チップや写真上の枠を押すと、そのQRの内容が判定カードに表示されます。1枚の写真から最大12個まで探します。
アップロードした写真やQRの内容はサーバーに送られますか?
送られません。写真はこのブラウザーの中で画素として読み取り、QRの判定もブラウザー内のワーカー(Web Worker)が行います。写真と結果は保存せず、アドレスバーにも残しません。ページ・機能ファイル・広告を読み込む通信は、これとは別です。
リンクを開いても安全かどうか分かりますか?
安全かどうかは判定しません。代わりに、アドレスが実際に接続するサイト(アドレス末尾のドメイン)を強調し、暗号化されないhttp、@を含むアドレス、IPアドレス、国際化ドメイン、短縮URLなど、見直したい点を表示します。アドレスは自動では開かず、自分で押したときだけ新しいタブで開きます。
Wi-Fi QRからパスワードを見られますか?
はい。WIFI: で始まるQRなら、ネットワーク名・セキュリティ方式・パスワードを分けて表示します。パスワードは最初は伏せられており、「表示」を押すと見え、パスワードだけを別にコピーすることもできます。このツールがWi-Fiに接続することはありません。
日本語が文字化けするのはなぜですか?
QRは文字をバイトとして格納するため、読む側が作った側と同じ文字コードで解釈しないと正しく表示されません。このツールは、QRにエンコード指定(ECI)があればそのとおりに従い、なければ UTF-8、Shift_JIS、EUC-KR、Latin-1 の順に、合うものを選びます。それでも化けるときは、判定カードの下でエンコードを手動で切り替えてください。
QRが見つからないときは何を確認しますか?
QRの周囲に4セル分の余白があるか、写真がぼけていたり光が反射していたりしないか、写真全体に対してQRが小さすぎないか、ロゴやシールが大きく覆っていないかを確認してください。このツールは長辺1,280pxで先に探し、見つからなければ大きな写真は最大2,560pxで、小さい写真は2〜4倍に拡大して、もう一度探します。
PDF・HEICファイルや棒状のバーコードも読み取れますか?
PDFは直接は読み取らないので、QRが見えるページをスクリーンショットにしてアップロードしてください。HEIC写真は、Safariのように対応するブラウザーでのみ読み取れ、ほかのブラウザーではJPGに変換してから使います。棒状の商品バーコードはQRではないため読み取りません。