QRコードデコーダー

QRコードの画像をドロップすると、シンボルが持っているものがすべて表示されます。フィールドごとに分けた復号済みのペイロード、バージョンとモジュール数、誤り訂正レベル、マスクパターン、符号化モード、そして16進数の生のバイト列です。復号はこのタブの中で行われるので、画像が端末の外に出ることはありません。

QRコードの画像をここにドロップ、または貼り付け

PNG、JPG、WebP、GIF

ブラウザ内で復号しています。ファイルがアップロードされることはなく、その内容が保存されたりどこかへ送られたりすることもありません。

スキャナーには見えず、QRコードデコーダーには見えるもの

QRコードデコーダーとは、画像からQRコードを読み取り、格納されたデータと、それを運ぶシンボルの構造をあわせて報告するプログラムです。スマートフォンのカメラは前半で止まります。コードがなぜその大きさなのか、作成ツールが予想外のものを出力したときに何が起きたのかを説明するのは、構造のほうです。

すべてのQRコードの中にある6つのもの

名刺用の21モジュールのコードから177モジュールのコードまで、すべてのQRコードは同じ6種類の情報を格納しています。QRコードの規格であるISO/IEC 18004が、そのそれぞれを定義しています。

  • バージョン は、1から40までのシンボルの大きさです。バージョン1は21 x 21モジュールで、バージョンが1つ上がるごとに1辺が4モジュール増えるので、バージョン40は177 x 177になります。
  • 誤り訂正レベル は、L、M、Q、Hのいずれかで、それぞれシンボルのおよそ7%、15%、25%、30%を復元します。レベルが高いほどシンボルのより多くを冗長性に使うので、同じペイロードでもより大きなバージョンが必要になります。
  • マスクパターン は、0から7の番号が付いた8つのパターンのうちの1つで、モジュールを反転させて、大きな空白の領域やファインダーパターンに似た形がコードにできないようにします。同じデータを持つ2つのコードでも、マスクが違えば見た目はまったく別物になります。
  • 符号化モード は、数字モード、英数字モード、バイトモード、漢字モードです。数字モードは3桁を10ビットに、英数字モードは2文字を11ビットに詰め込みますが、バイトモードは1文字ごとに8ビットを使います。
  • ペイロード は、テキストそのものです。リンク、Wi-Fiの接続情報、連絡先カードなどがこれに当たります。QRコードが格納するのはテキストだけで、スマートフォンがそれをどう扱うかは、テキストがどう始まるかで決まります。
  • 誤り訂正コードワード は、損傷したデータをデコーダーが再構築できるようにするReed-Solomonの冗長データです。誤り訂正コードワードは復号の過程で消費されるので、デコーダーが表示するのはコードワードではなく結果のほうです。

パスワードも含めて、あなたの端末の中で復号します

画像はこのブラウザタブの中で復号され、アップロードされることはありません。これはほかの多くのツールよりも、デコーダーにとって重要な点です。人が中身を調べるペイロードは、機密性の高いものだからです。Wi-Fi QRコードはネットワークのパスワードをそのままの文字列として持ち、2要素認証の設定コードは、今後のログインコードをすべて生成する秘密鍵を持っています。

デコーダーはWi-Fiのパスワードを専用の行に表示します。パスワードを読むことが、たいていそのコードを復号した理由だからです。2要素認証のコードについては発行者とアカウントを一覧に表示しますが、秘密鍵は生のペイロードの中に残し、コピーするには意図的な操作が必要になるようにしています。

画像からQRコードを復号する手順

画像ファイルから、その中のQRコードの中身と構造のすべてまでの4ステップ。

QRコードを作成
  1. 1

    画像を追加する

    PNG、JPG、WebP、GIFをパネルにドラッグするか、ファイルを選ぶか、クリップボードからスクリーンショットを貼り付けます。切り取るときは、コードの周りの明るい余白を残してください。デコーダーはその余白を使ってシンボルの端を見つけます。

  2. 2

    ペイロードとそのフィールドを読む

    復号されたテキストが、種類の名前とともに全文表示されます。リンクはスキーム、ドメイン、パス、クエリ文字列に、Wi-Fiコードはネットワーク名、セキュリティ方式、パスワードに、連絡先カードは名前、電話番号、メールアドレスに分けて表示されます。

  3. 3

    シンボルの構造を確認する

    バージョン、モジュール数、誤り訂正レベル、マスクパターン、符号化モードが、ペイロードの下に一覧で表示されます。バージョン1から20については、ペイロードがシンボルの容量のうち何バイトを使っているかもデコーダーが表示します。

  4. 4

    必要なら生のバイト列を調べる

    16進ダンプは、文字として解釈される前の、格納されたままのペイロードを表示します。目に見えない文字、バイトオーダーマーク、間違った文字コードで保存されたテキストを探すなら、ここを見てください。

デコーダーが適したツールになる場面

中身だけでは足りず、QRコードの構造が答えになる4つの状況。

QRコード生成ライブラリのデバッグ

生成ライブラリが、予想より大きなコードを出力した。デコーダーはその原因をひと目で示します。Mのつもりだった誤り訂正レベルがHになっている、あるいは数字だけのペイロードが数字モードではなくバイトモードで格納されている、といった具合です。

コードがなぜこれほど密なのかを調べる

長いトラッキング用URLはコードをバージョン8以上に押し上げ、モジュールは2 cmで印刷するには小さすぎるものになります。容量の行はペイロードが何バイトを使っているかを示し、フィールドの表は、どのクエリパラメータを削れるかを示します。

Wi-Fiや連絡先のコードの本当の中身を確かめる

ゲスト用のWi-Fiコードを印刷する前に、復号してフィールドを読んでください。間違ったセキュリティ方式や、パスワードに紛れ込んだ空白は、表の中では見えますが、パターンの中では見えません。

QRコードのパズルを解き進める

QRコードのパズルやCTF(キャプチャー・ザ・フラッグ)の課題では、デコーダーが、読み取れるコードのバージョン、誤り訂正レベル、マスクを確認してくれます。手作業での復号を、分かっている答えと照らし合わせることができます。

QRコードが復号される仕組みを順番に

すべてのQRコードデコーダーが実行する10のステップを、順番どおりに。QRコードを手作業で解く人がたどるのも、同じ手順です。

  • 3つのファインダーパターンを見つける

    デコーダーは、ファインダーパターンを横切る線がどの角度でも生み出す、暗と明の1:1:3:1:1の比率を探します。3つのファインダーパターンから、QRコードの位置、大きさ、回転が分かります。ファインダーパターンのない角が右下です。

  • 大きさからバージョンを割り出す

    モジュール数はファインダーパターンどうしの距離から求められ、バージョンは(モジュール数 - 17)/ 4です。バージョン7以上では、ファインダーパターンの脇に18ビットのブロックとして、バージョン番号も2回格納されています。

  • 形式情報を読む

    ファインダーパターンの脇にある15ビットは、誤り訂正レベルを2ビット、マスクパターンを3ビットで持ち、さらに自身のための誤り訂正を10ビット持ちます。形式情報は2回格納されているので、片方のコピーが損傷しても復号は止まりません。

  • 固定の形式マスクを外す

    15ビットの形式情報は、配置される前に固定のパターン101010000010010とXORされるので、形式情報がすべてゼロになることはありません。デコーダーは同じパターンとXORして、本来の値を取り戻します。

  • データマスクを元に戻す

    形式情報に記されたマスクパターンをデータ領域にもう一度適用すると、元のモジュールが復元されます。マスクが影響するのはデータと誤り訂正のモジュールだけで、ファインダーパターン、タイミングパターン、位置合わせパターンには決して影響しません。

  • モジュールをジグザグの順に読む

    データは、右下の角から始まる2モジュール幅の列で読まれます。上へ進み、次の列の組では下へ進み、機能パターンはすべて飛ばします。8モジュールで1つのコードワードになります。

  • コードワードのブロックのインターリーブを解く

    大きなシンボルは、コードワードをいくつかのブロックに分けて互い違いに配置します。そのため、1本の傷は1つのブロックのすべてではなく、すべてのブロックを少しずつ損傷させます。デコーダーは訂正の前に、ブロックをふたたび分離します。

  • Reed-Solomonの誤り訂正を適用する

    各ブロックは、自身の誤り訂正コードワードを使って検査され、修復されます。中央にロゴを載せてもQRコードが生き残れるのはこのステップのおかげです。そして損傷が大きすぎるコードは、間違ったデータを返すのではなく、ここで完全に失敗します。

  • モード指示子と文字数を読む

    訂正されたビット列は、4ビットのモード指示子で始まります。0001が数字、0010が英数字、0100がバイト、1000が漢字、0111がECIです。その後ろに文字数が続き、バージョン1から9のバイトモードでは8ビットの長さです。

  • 終端パターンまでセグメントを復号する

    各セグメントはそのモードに従って復号され、1つのシンボルが複数のセグメントを続けて持つこともあります。データは0000の終端パターンで終わり、残りの容量は、交互に並ぶ埋め草バイト11101100と00010001で埋められます。

KoloQRの作成ツールでQRコードをデザインし、ダウンロードできる状態になっている様子

復号しがいのあるコードを作る

円形やカスタム形状のQRコードを作れる無料のQRコード作成ツールであるKoloQRは、リンク、Wi-Fiネットワーク、メール、電話番号、SNSプロフィール用の静的QRコードを作り、SVG、PDF、EPS、PNGで書き出します。

KoloQRのコードはすべて誤り訂正レベルHで生成されます。ロゴや装飾的なモジュールパターンのための余地が残るのはそのためです。KoloQRのコードをここで復号すれば、構造のパネルがまさにそのとおりに表示します。KoloQRは動的QRコードを作らないので、復号したペイロードはリダイレクトではなく、行き先そのものです。

QRコードを作成

Questions? Answered

スキャナーはQRコードが何を言っているかを返し、デコーダーはそれに加えて、シンボルがどう組み立てられているかも返します。このデコーダーは、ペイロードとあわせて、バージョン、誤り訂正レベル、マスクパターン、符号化モード、生のバイト列を報告します。中身とスキャンしやすさのスコアだけでよければ、QRコードスキャナーのほうが近道です。

コード自身の誤り訂正が許す範囲までです。QRコードはレベルに応じてシンボルの約7%から30%を復元でき、デコーダーはそのすべてを自動的に使います。その限界を超えた場合や、ファインダーパターンが欠けている場合は、どのデコーダーも結果を返しません。そのコードは、形式情報をもとに手作業で再構築するしかありません。

QRコードを画像として保存するかスクリーンショットを撮り、そのファイルをこのページのデコーダーにドロップしてください。画像はノートパソコンやデスクトップのブラウザ内で復号され、カメラも、アプリも、アップロードも必要ありません。紙に印刷されたコードは、先に写真に撮るかスキャンしてファイルにする必要があります。

マスクパターンとは、QRコード作成ツールがデータ領域に適用する8つの固定パターンのうちの1つで、大きな空白の領域やファインダーパターンに似た形を崩すためのものです。作成ツールは8つすべてを試し、ペナルティスコアが最も低いものを採用します。選ばれたマスクの番号は形式情報に格納されるので、デコーダーはマスクを元に戻せます。

データを変えずにパターンを変える設定が3つあります。誤り訂正レベル、マスクパターン、バージョンです。同じリンクをレベルMとレベルHでエンコードした2つの作成ツールは、異なるパターンを出力し、多くの場合は大きさも異なります。両方を復号すると、ペイロードは同一で、構造の行だけが違っています。

分かりません。QRコードが格納するのは、ペイロードと、それを読むために必要な構造上の設定だけです。シンボルの中には、作成者も、作成日も、端末の識別子も、スキャン回数のカウンターもありません。そのような情報があるのは動的QRコードだけで、それもコードの中ではなく、提供事業者のサーバーに保存されています。

QRコードを復号して、ドメインを読んでください。ペイロードが想定していた最終的なアドレスなら、そのコードは静的です。ペイロードがQRコード提供事業者のドメインの短縮リンクで、別の場所へ転送するものなら、そのコードは動的で、事業者がリンクを無効にすれば機能しなくなります。このトレードオフは静的QRコードと動的QRコードの違いで扱っています。

ペイロードは誤り訂正を使ってシンボル全体から復号されますが、レベルとマスクは、ファインダーパターンの脇にある15ビットの形式情報から読み取られます。解像度の低い画像や装飾の強い画像では、ペイロードは復号できても、その小さな領域をきれいにサンプリングできないことがあります。同じコードのより大きく鮮明な画像を使えば、通常はその行が埋まります。

読めません。このデコーダーが読むのはQRコードだけで、角丸や点状のモジュールのコード、暗い背景に明るいモジュールのコードも含みます。Data Matrix、Aztec、PDF417、1次元バーコードは構造が異なり、別のリーダーが必要です。ファインダーパターンが1つだけのMicro QRコードにも対応していません。

16進表示は、テキストとして解釈される前の、QRコードに格納されたバイト列としてのペイロードを示します。ほとんどの作成ツールはテキストをUTF-8で格納するので、ふつうのラテン文字はASCIIの値として現れます。この表示は、テキストでは隠れてしまうものを明らかにします。先頭のバイトオーダーマーク(ef bb bf)、末尾の改行、Wi-Fiのパスワードの中のノーブレークスペースなどです。

KoloQRを選ぶ理由

  • ウェブサイト、メニュー、Wi-Fi、PDF、名刺用のQRコードを作成
  • 色・ロゴ・オリジナルの形をカスタマイズ
  • 高品質なPNG・SVGファイルをダウンロード
  • 印刷にもデジタルにも対応
QRコードを作成
シンプルな黒いQRコードと、同じコードをブランドカラーの円形にデザインし直したもの