QR コードの容量はどれくらい?データ量の限界を知る
QR コードの最大容量
QR コードに格納できるデータ量の上限は、最大サイズのバージョン 40 (177×177 モジュール) で、数字なら 7,089 桁、英数字なら 4,296 文字、バイナリデータなら 2,953 バイト、漢字 (Shift JIS) なら 1,817 文字です。数字だけで比べると、 13 桁しか入らない一般的なバーコード (EAN-13) の 500 倍を超える情報量にあたります。
ただし、これらは誤り訂正レベルを最低の L に設定した場合の値です。実用でよく使うレベル M では L の約 8 割 (数字 5,596 桁、バイナリ 2,331 バイト) に、訂正能力の高いレベル H では約 4 割 (数字 3,057 桁、バイナリ 1,273 バイト) まで下がります。容量を見積もるときは、上限値ではなく実際に使う誤り訂正レベルでの値を基準にしてください。
用途別のデータ量の目安
実際の用途でどれくらいのデータが入るか、誤り訂正レベル M を前提に目安を示します。カッコ内は、そのデータ量を収められる最小のバージョンとモジュール数です。
- 短い URL (例: https://example.com): 19 バイト。小文字を含むためバイトモードで扱われ、バージョン 2 (25×25 モジュール) に収まる
- パラメータ付きの URL: 100 バイト前後ならバージョン 6 (41×41 モジュール)、追跡用の文字列を足して 200 バイトになってもバージョン 10 (57×57 モジュール) で収まる
- Wi-Fi 接続情報: SSID とパスワードを含めて 50-80 バイト程度。バージョン 5 (37×37 モジュール) までで収まる
- vCard (連絡先): 名前・電話番号・メール・住所まで入れると 200-500 バイトで、バージョン 10 から 17 (57×57 から 85×85 モジュール) になる
- 長文テキスト: 日本語を UTF-8 のバイトモードで格納すると 1 文字あたり 3 バイトを使うため、数百文字でもバージョンが大きく上がり、模様が細かくなる
データ量が増えるとコードはどう変わるか
QR コードにはバージョン 1 からバージョン 40 までの規格があり、バージョン 1 は縦横 21 モジュール (白黒のセル)、バージョン 40 では 177 モジュールになります。 1 つ上がるごとに縦横それぞれ 4 モジュールずつ増える決まりで、格納するデータが増えると、それを収められる最小のバージョンが自動的に選ばれます。
バージョンが上がって困るのは、印刷する大きさが同じままだと 1 モジュールが小さくなる点です。 2 cm 角に印刷する場合、バージョン 2 なら 1 モジュールは 0.8 mm ですが、バージョン 10 では 0.35 mm ほどになります (周囲の余白を除いた単純計算)。モジュールが小さいほどカメラの解像度や印刷のにじみに影響されやすく、読み取りエラーが増えます。
そのため、長い文章をコードへ直接詰め込むよりも、 Web ページの URL だけを格納して詳細はリンク先で読んでもらう方が確実です。用途ごとにどのバージョンを選ぶかというバージョンの違いの見極め方は、別の記事で個別に扱っています。
誤り訂正レベルとのトレードオフ
QR コードには、汚れや欠けがあっても読み取れるようにする誤り訂正の仕組みがあり、その強さは 4 段階から選べます。訂正レベルを高くするほど、復元のための余分なデータが増えるため、同じサイズのコードに格納できる実際の情報量は減ります。屋外の看板など汚れやすい場所では高いレベルが安心ですが、その分だけ容量を消費します。逆に、室内で短い URL を載せるだけなら低いレベルで十分です。用途に応じて、丈夫さと容量のどちらを優先するかを選ぶことになります。
文字の種類による容量差
QR コードに格納できる文字数は、入れるデータの種類によって変わります。数字だけのデータが最も効率よく収まり、英数字、漢字、その他の記号を含むデータの順に、同じサイズでも入る文字数は少なくなります。これは、種類ごとに一文字を表すのに必要なデータ量が異なるためです。記号を多く含む長い URL が意外に容量を使うのは、この仕組みによるものです。容量を節約したいときは、不要な記号を減らし、できるだけ単純な文字構成にすることが有効です。
実際に試して確かめる
容量の感覚をつかむには、内容を少しずつ変えながら生成して見比べるのが早道です。次の 3 つを作ると、何がバージョンを押し上げるのかが目で見て分かります (いずれも誤り訂正レベル M の場合)。
- 誤り訂正レベルだけを変える: 同じ URL をレベル L と H で作ると、内容が同じでも H の方がバージョンが上がり、模様が細かくなる
- 短い URL と追跡パラメータ付きの URL: 19 バイトのものはバージョン 2 (25×25 モジュール) で収まるが、 utm_source などを足して 120 バイトにするとバージョン 7 (45×45 モジュール) が必要になる
- 数字だけの文字列と記号入りの文字列: 同じ 100 文字でも、数字だけならバージョン 3 (29×29 モジュール) に収まるのに対し、記号が混じってバイトモードになるとバージョン 6 (41×41 モジュール) まで上がる
できあがったコードのバージョンは、辺のモジュール数を数えれば分かります。縦横のモジュール数から 21 を引いて 4 で割り、 1 を足した値がバージョンです (57 モジュールならバージョン 10)。最後に、実際に使う大きさで紙に印刷し、想定する距離から読み取れるかまで確かめておくと、印刷後に読み取れないという失敗を防げます。
データ量を減らすコツ
QR コードをコンパクトに保つためのコツです。
- URL 短縮サービスを使う: 長い URL を bit.ly などで短縮すると、 QR コードが小さくなる
- 不要なパラメータを削除する: URL の末尾に付く追跡パラメータ (utm_source 等) を必要最小限にする
- 英数字モードを活用する: 小文字を含む一般的な URL はバイトモード (1 文字 8 ビット) で符号化される。英数字モードで扱えるのは数字・大文字 A-Z・スペースと記号 9 種だけだが、そこに収めれば 1 文字 5.5 ビットで済む
- 情報は Web に置く: QR コードには URL だけを格納し、詳細情報はリンク先のページに記載する
QR コードの容量制限を正しく理解しておけば、「データが入りきらない」というトラブルを未然に防げます。