QRコードは技術的には、誤り訂正レベルを最低にした場合で数千文字のテキストを格納できます。しかし、これは上限値であって目標値ではありません。実際には、データを詰め込むほどパターンが密になり、スキャンしにくくなります。そのため、確実に読み取れるコードの多くは、短いURLか数十文字程度の内容になっています。この記事では、容量を決める要素、実用上はなぜ短くするのが良いのか、そしてデータ量が多くなってもスキャンしやすく保つ方法を解説します。
QRコードの容量を実際に決めるもの
QRコードの最大容量は、3つの要素で決まります。バージョン、エンコードモード、誤り訂正レベルです。どれか1つでも変われば、入るデータ量も変わります。
バージョン。 QRコードには40個のバージョンがあります。バージョン1は21×21のモジュール(マス)の格子で、バージョンが1つ上がるごとに各辺に4モジュールずつ追加され、バージョン40は177×177の格子になります。格子が大きいほど、データの入れ物も広くなります。街中で見かけるコードの多くは、バージョン2から10程度の間に収まっています。
エンコードモード。 同じ格子でも、格納するデータの種類によって密度が変わります。代表的な3つのモードは次のとおりです。
- 数字モード: 数字(0〜9)のみ。最もコンパクトに格納できるモードです。
- 英数字モード: 大文字の英字、数字、一部の記号(空白、$、%、*、+、-、.、/、:)。数字モードより密度は低くなります。
- バイト(バイナリ)モード: 任意のバイト値。小文字の英字、日本語などの全角文字、ほとんどのURLはこのモードでエンコードされます。3つの中で最も密度が低いモードです。
URLに小文字が1つでも含まれるとバイトモードになり、同じ長さの数字だけのデータに比べて、格納できる文字数はおよそ半分になります。長いリンクを小さなコードに収めようとする前に、知っておくと有利な点です。
誤り訂正レベル。 QRコードは、破損しても読み取れるよう、意図的にデータの一部を重複して持っています。レベルはL・M・Q・Hの4段階で、Lは冗長部分が最も少なく、Hが最も多い。誤り訂正を高くすると、角が破れても中央にロゴが重なっていても読み取れるようになりますが、その分、実際のデータに使える空間は減ります。レベルLならバージョン5で済む内容が、レベルHではバージョン7や8が必要になることもあります。
この3つの要素は互いに影響し合います。「QRコードの容量」という単一の数値は存在せず、あるのは特定のバージョン・モード・誤り訂正レベルの組み合わせごとの容量だけです。
表を使わずに押さえる大まかな数値
正確な容量の数値は、QRコードの国際規格であるISO/IEC 18004で定められた対応表に記載されています。意思決定のためにこの表を覚える必要はありませんが、いくつかの目安を知っておくと便利です。
上限側では、バージョン40・誤り訂正レベルLのコードで、数字なら約7,000文字、英数字なら約4,000文字、バイトモードなら約2,900文字を格納できます。これが、ときどき引用される「最大値」です。
逆に下限側では、小さめのバージョン3・レベルMのコードで、バイトモードなら60〜70文字程度。中程度の長さのURLが入るかどうか、という水準です。
重要なのは正確な数値ではなく、曲線の形です。バージョンが数段上がるごとに容量はほぼ2倍になり、誤り訂正はそのかなりの部分を食います。文章を1段落そのまま格納したいなら、大きくて密度の高いコードになります。短いリンクで済むなら、中程度のバージョンで小さく読み取りやすいコードになります。
データが増えるほどスキャンしにくくなる理由
文字が1つ増えるごとに、格子を構成するモジュールが増えていきます。バージョン1のコードは441個のモジュールですが、バージョン10では1辺57個、つまり57×57で3,249個になります。各モジュールは黒か白の正方形で、スキャナーの仕事はその1つ1つをはっきりと判別することです。
密度が問題になるのは、2つの方向からです。
- 紙や画面でサイズが決まっている場合。 同じ2cmで印刷するなら、バージョン8のコードの1モジュールは、バージョン3のものよりはるかに小さくなります。小さなモジュールは、安価な印刷、斜めからの撮影、低解像度の画面表示でにじみます。その結果、PCのモニター上では読めるのに、印刷したチラシでは読めないコードが出来上がります。
- 距離がある場合。 実務では「読み取り距離はコードの幅の10倍まで」という経験則がよく使われます。密度の高いコードは、モジュールをカメラに大きく映す必要があるため、実質的にこの比率が短くなります。
人の心理も関係します。密度の高いコードは見た目が複雑で威圧的であり、同じ物理サイズでも小さく感じられるため、わざわざスキャンしようとする人の割合がわずかに下がります。
結論はシンプルです。容量は最大化すべき資源ではありません。最良のQRコードとは、目的を果たせる中で最も密度の低いコードです。
最大の改善策:URLを短くする
日常的に使われるQRコードの多くはURLをエンコードしており、URLは人がコードに入れようとするデータの中で最も長くなりがちです。URLを切り詰めて短縮することが、密度を下げる最も効果的な手段になります。
まず、自分で管理できる部分から手をつけましょう。
- 持っている中で最も短いドメインを使う。
shop.example.com/p/saleは、https://www.shop.example.com/products/summer-sale-2025.htmlあらゆる面で優っています。 - 生成ツールが許すなら
https://を省く。多くのスキャナーアプリはドメインだけでも扱えますが、スキームを残せば確実にリンクとして開いてもらえます。 - パスの無駄を削る。より短いパスで同じページに届くなら、そちらを使う。
リンク先自体を短くできない場合は、URL短縮サービスを使います。200文字のリンクを25文字程度に変換でき、コードのバージョンを数段下げられることもあります。ただしトレードオフは現実です。短縮サービスが稼働し続けることに依存するようになりますし、リンク先が見えないため、短縮リンクを疑うスキャナーやユーザーもいます。使うなら、5年後も存在していそうなサービスを選ぶか、さらに良ければ自分が所有するドメイン上の短縮機能を使いましょう。
動的QRコード:印刷し直さずにリンク先を変える
関連する手法が動的QRコードです。コード自体は短いリダイレクト用URLをエンコードしており、リダイレクト先は後から変更できます。印刷されたコードは変わらず、その裏側のリンク先だけが変わります。
これにより2つの問題が同時に解決します。第1に、エンコードする内容が短いため、コードは小さく読み取りやすいまま保てます。第2に、切れたリンクを直したり、古いポスターを新しいキャンペーンに向け直したりする際、印刷し直す必要がありません。
トレードオフは短縮サービスと同じ依存関係に加え、もう1つあります。動的コードは、リダイレクトサービスが稼働している間しか機能しないのです。完全なURLを埋め込んだ静的コードは、ウェブサイトの構成が変われば死にますが、第三者には依存しません。どちらの失敗なら許容できるかで選びましょう。長期間使う重要なもの、たとえば店舗の案内表示や製品パッケージには、自ドメインの短い静的URLのほうが堅牢な選択になることが多いです。
エンコード前にトラッキングパラメータを削る
マーケティング用のURLには、?utm_source=poster&utm_campaign=summer&gclid=... のような長いトラッキングパラメータが付いていることがよくあります。これでURLの長さが2倍、3倍になり、余裕のあるコードが一気に高密度化することがあります。
エンコードする前に、そのパラメータがコードに入る必要があるのかを考えてください。多くの場合、必要ありません。
- チャネル別の分析が必要なら、専用の短いパス(
example.com/posterなど)のほうが短く、自サイトの解析ツールで同じ帰属判定ができます。 gclidのようなクリック識別子はクリックごとに生成されるもので、印刷物のコードに埋め込んでも意味がありません。スキャンした人全員が同じIDを共有することになり、そもそもの目的を果たせません。- サイトによっては未知のパラメータを無視しますが、正規URLの一部として扱う場合もあります。削ったURLをブラウザのプライベートウィンドウで開き、正しいページに届くか確認してください。
パラメータの削除は無料で、第三者も不要です。しかも短縮サービスよりも多くの文字を削れることがよくあります。
誤り訂正レベル:双方向のトレードオフ
誤り訂正は、最大にすれば良い設定ノブではありません。耐性と密度のトレードであり、適切なレベルはコードが置かれる環境で決まります。
- レベルL: データ容量が最も大きく、冗長性は最も低い。画面表示向け。画面上でコードが擦れることはありません。
- レベルM: Many generatorsの標準的な中間レベル。きれいな紙に印刷する場合の妥当な選択です。
- レベルQ・H: 重大な破損や意図的な装飾に耐えます。中央にロゴを重ねる、ザラついた素材に印刷する、工場の現場で使う、といったケース向け。代償として容量が減り、同じ内容でもより大きく密度の高い格子が必要になります。
よくある失敗は、「念のため」とレベルHを選んだ結果、生成された高密度コードを小さすぎるサイズで印刷してしまうことです。高い誤り訂正レベルでも、モジュールが灰色のにじみに溶けたコードは救えません。スキャンのしやすさを優先するなら、「低い誤り訂正レベル+低密度のパターン」のほうが「高いレベル+高密度のパターン」より有利になるのが普通です。QとHは、ロゴの重ね合わせなど、物理的なリスクが明確に分かっている場合に取っておきましょう。
実際の印刷サイズでテストする
最後のステップであり、最も省略されがちなステップです。読み手がコードに接するのと同じ形でテストしてください。
- コードを生成したら、最終サイズそのままで印刷または表示します。「テストだから」と拡大してはいけません。机の上で10cmなら読めるコードが、名刺の上の2cmでは読めないことがあります。
- 複数のスマートフォンで、現実的な距離と角度、現実的な照明の下でスキャンします。光沢紙、画面の反射、曲面はいずれも読み取りを劣化させます。
- 画面に表示する用途なら、デスクトップのモニターだけでなく、小さなスマートフォン画面で実際のサイズ表示して確認します。
- 大量印刷に回すなら、印刷業者から校正刷りを取り寄せ、それをスキャンします。印刷品質と用紙の種類はモジュールの鮮明さに影響します。
実際のサイズで読めなかった場合、まず誤り訂正レベルを上げようとしないでください。データを減らします。URLを短くする、パラメータを削る、動的コードに切り替える。内容を削ることが、どの設定変更よりも確実に密度の問題を解決します。
まとめ
QRコードの容量は、バージョン、エンコードモード、誤り訂正レベルの組み合わせで決まります。ISO/IEC 18004で定められた真の最大値は数千文字規模です。しかし容量は上限であって目標ではありません。最も読み取りやすいコードは、目的を果たせる最短の内容を持ちます。切り詰めたURL、削除したトラッキングパラメータ、リンク先が本当に長い場合だけ使う短縮や動的リダイレクト、そして物理的なリスクに合わせた誤り訂正レベル。何をエンコードするにせよ、完成したコードを実際の印刷サイズで本物のスマートフォンでテストする。短い内容、適度な密度、実サイズでの検証。これが公式のすべてです。