QRコードの容量:シンボルバージョンと符号化モード別に見るデータ量

KoloQRチーム基本

緑の背景に置かれた、小さなドットでできた三角形の黄色いQRコード。内側に3つの輪の形のファインダーパターンがあり、その横に「4,296 characters」「7,089 digits」「2,953 bytes」と書かれた白い角丸の帯が3つ並んだ図。

QRコードに入るのは最大で7,089桁、英数字4,296文字、2,953バイト、または漢字1,817文字です。これらの上限はすべて同じシンボル、つまり177×177モジュールのバージョン40を、最も低い誤り訂正レベルで使った場合を指します。それより小さなコードは比例して少なくしか入りません。そして実務で意味を持つ数字は上限ではなく、あなたの内容がどのバージョンを強いるかです。モジュール数がそのまま、コードをどれだけ大きく印刷しなければならないかを決めるからです。

要点

  • QRコードの最大容量は7,089桁、英数字4,296文字、2,953バイト、または漢字1,817文字です。いずれもバージョン40、177×177モジュール、誤り訂正レベルLでの値です。
  • 容量はシンボルバージョン・符号化モード・誤り訂正レベルの3つで決まります。どれか1つを変えれば数字も変わります。
  • 最小のコードである21×21モジュールのバージョン1に入るのは、レベルLで17バイト、レベルHで7バイトです。ドメイン名だけでもすでにバージョン2か3のコードになります。
  • 大文字で書いたURLは、8ビットではなく1文字5.5ビットの英数字モードで符号化でき、シンボルバージョンを丸ごと1つ節約できることがよくあります。安全に大文字にできるのはスキームとドメインだけで、パスは大文字と小文字を区別します。
  • 容量が本当の限界になることはめったにありません。200文字のURLはレベルHで77×77モジュールのシンボルを必要とし、およそ34mmより小さくは正直に印刷できません。内容は、どの上限に近づくよりずっと手前でサイズを決めてしまいます。

QRコードの最大文字数:どれだけのデータが入るのか

QRコードに入るのは最大で7,089桁、英数字4,296文字、2,953バイト、または漢字1,817文字です。この4つの数字は1つのシンボル、つまり1辺177モジュールのバージョン40を誤り訂正レベルLで使った場合を指しており、この形式の天井であって、誰かが目指すべき目標ではありません。

誤り訂正レベル数字英数字バイト漢字
L7,0894,2962,9531,817
M5,5963,3912,3311,435
Q3,9932,4201,6631,024
H3,0571,8521,273784
バージョン40(177×177モジュール)における符号化モードと誤り訂正レベル別の最大容量です。レベルLからHへ上げると、どのバージョンでも容量の約57%が失われます。

実際に使える範囲は、この天井が示唆するよりずっと狭いものです。コート紙のモジュール下限である0.4mmでバージョン40のシンボルを印刷すると、余白を除いて71mmになります。しかもそのすべてのモジュールが撮影に耐えなければなりません。そのため、このサイズのコードは工業用の刻印に現れる程度で、ほかではほとんど見かけません。

ふだんの用途では、上限とは逆向きの問いのほうが役に立ちます。この内容に対して、それを収める最小のシンボルは何か、そのシンボルは印刷のミリメートルでいくらかかるのか。このページの最後の2つの節がその答えです。

シンボルバージョンとは

シンボルバージョンとは、コードのモジュール数に対してQR規格が付けた呼び名で、21×21モジュールのバージョン1から177×177のバージョン40まであります。バージョンVのコードは1辺が4V + 17モジュールなので、バージョンは4ずつ刻まれます。21、25、29、33、37という具合です。

バージョンは選ぶものではありません。エンコーダーは、指定された誤り訂正レベルで内容が収まる最小のバージョンを選びます。つまりバージョンは、あなたが実際に下す2つの判断、すなわちコードに何を入れるかと、どれだけの損傷に耐えるべきかの結果です。

ここから2つの帰結が生まれ、どちらもよく人を戸惑わせます。1つめは、容量が連続的にではなく段階的に増えることです。1文字足すのが無料のこともあれば、コードを丸ごと1バージョン押し上げることもあります。2つめは、バージョンが上がっても絵が大きくなるのではなく、密になるということです。印刷幅が同じなら、バージョン10のコードのモジュールはバージョン4のコードより約40%細く、同じ空間に33ではなく57のセルが並びます。そして小さなモジュールこそがスキャン失敗の材料です。

シンボル全体が内容に使えるわけでもありません。バージョン1のコードでは、441モジュールのうち233モジュールがデータではなく機能パターンと形式情報です。その内訳はファインダーパターンとQRコードの構造にまとめてあります。残りをあなたのデータとその誤り訂正が分け合います。

QRの4つの符号化モード

符号化モードとは、QRコードが文字をビットに変換する方式のことで、規格は数字・英数字・バイト・漢字の4つを定めています。それぞれ文字を詰め込む密度が違うので、内容がどのモードを許すかによって、同じシンボルに入る文字数は大きく変わります。

モード受け付ける文字1文字あたりのビット数バージョン40・レベルLでの容量
数字0から9の数字3⅓7,089桁
英数字0〜9、A〜Z、スペース、$ % * + - . / :4,296文字
バイト任意のバイト、実際にはUTF-8のテキスト82,953バイト
漢字Shift JISの2バイト文字131,817文字
数字モードは3桁を10ビットに、英数字モードは2文字を11ビットに詰め込むため、端数の値になります。ASCII以外のUTF-8文字はバイトモードで1バイトではなく2〜4バイトを消費します。

理解しておく価値があるのは英数字モードです。URLに適用されうる唯一のモードだからです。数字・大文字・スペース・8種類の記号からなる45文字の集合を使い、2文字を11ビットに詰め込むQRの符号化方式です。小文字はこの集合に含まれず、疑問符・アンパサンド・等号・アンダースコアも含まれません。

モードを選ぶのはエンコーダーであって、内容を入力する人ではありません。内容を解析して自動的にモードを切り替えるエンコーダーもあれば、内容を区切って区間ごとに別のモードを使うものもあり、何であれすべてバイトモードで符号化するものも多くあります。最後の場合が十分に多いので、確実に知る唯一の方法はコードを生成してモジュールを数えることです。

バージョンとモード別のQRコード容量

以下の表は、このページの残りが土台にしている一覧です。各シンボルバージョンが、各モード・各誤り訂正レベルで何文字収められるかを示しています。自分のレベルの行を探し、内容の長さを最初に上回る数字のバージョンを見つけてください。

バージョンモジュールレベル数字英数字バイト漢字
121×21L41251710
121×21M3420148
121×21Q2716117
121×21H171074
225×25L77473220
225×25M63382616
225×25H3420148
329×29L127775332
329×29M101614226
329×29H58352415
433×33L1871147848
433×33M149906238
433×33H82503421
537×37L25515410665
537×37M2021228452
537×37H106644427
641×41L32219513482
641×41M25515410665
641×41H139845836
1057×57L652395271167
1057×57M513311213131
1057×57H28817411974
1577×77L1,250758520320
1577×77M991600412254
1577×77H530321220136
2097×97L2,0611,249858528
2097×97M1,600970666410
2097×97H919557382235
25117×117L3,0571,8531,273784
25117×117M2,3951,451997614
25117×117H1,286779535330
40177×177L7,0894,2962,9531,817
40177×177M5,5963,3912,3311,435
40177×177H3,0571,8521,273784
各バージョンのデータコードワード数と文字数指示子のビット幅から計算し、ISO/IEC 18004のバージョン40の上限値と突き合わせて確認しています。レベルQは全体を通じてMとHの間に位置し、紙幅の都合でここでは省いています。目安としてMの約70%が収まります。

この表の2つのセルは並べて読む価値があります。バージョン25のレベルLには1,273バイトが入り、バージョン40のレベルHにもまったく同じ1,273バイトが入ります。モジュール面積が2倍以上あるシンボルが、その差をまるごと復元に使っているということです。コードを大きくして得る容量と、レベルを上げて失う容量は同じ通貨であり、2つの判断が2つの表ではなく1つの表に属する理由もそこにあります。

同じURLでも大文字にすると小さいコードに収まる理由

大文字で書いたURLは、バイトモードの8ビットではなく1文字5.5ビットの英数字モードで符号化できます。これは31%の節約であり、シンボルを丸ごと1バージョン下げることがよくあります。HTTPS://EXAMPLE.COM/MENUは45文字の英数字集合の文字だけを使いますが、https://example.com/menuは使いません。小文字が集合に含まれないからです。

内容の長さバイトモード・レベルM大文字・レベルMバイトモード・レベルH大文字・レベルH
30文字バージョン3バージョン2バージョン4バージョン3
45文字バージョン4バージョン3バージョン6バージョン4
70文字バージョン5バージョン4バージョン8バージョン6
120文字バージョン7バージョン5バージョン11バージョン8
200文字バージョン10バージョン8バージョン15バージョン11
同じ文字数を2通りに符号化した場合です。120文字・レベルHでは3バージョン分の差が出ます。81×81ではなく65×65のシンボルになり、同じ印刷幅ならモジュールが24%大きくなります。

難点は、URLのうち安全に大文字にできるのが一部だけだということです。スキームとホスト名は大文字と小文字を区別しないので、HTTPS://EXAMPLE.COMとhttps://example.comは同じサーバーに届きます。ホスト名より後ろはほとんどのWebサーバーで区別されるため、パスを大文字にすると、完璧に読み取れるのに404に着地するコードができかねません。

結果として残るのは、適用範囲は狭いものの本物の規則です。スキームとドメインは大文字にし、パスはサーバーが期待するとおりに残し、そのうえでシンボルが本当に小さくなったか確かめてください。大文字と小文字が混ざった内容はまるごとバイトモードに落ちるので、パスに小文字が1文字あるだけで節約は消えます。

さらに2つの限界も率直に述べておきます。英数字の集合には疑問符・アンパサンド・等号・アンダースコアがないため、クエリパラメーターを持つURLは大文字小文字にかかわらずバイトモードになります。またエンコーダー自身がモード切り替えに対応している必要があります。どんな内容もバイトモードで生成するものは多く、その場合は大文字にしても何も変わりません。両方の書き方でコードを生成し、1辺のモジュールを数えて比べてください。数が同じならモードは変わっていません。

誤り訂正は容量の話の半分

誤り訂正レベルをLからHへ上げると、シンボルの容量の約57%が失われます。復元用のコードワードとデータ用のコードワードが同じ固定の予算から出ているからです。どのバージョンでも4つのレベルは同じ総量を分け合い、レベルLはそのうち約7%、Mは約15%、Qは約25%、Hは約30%を復元に使います。

レベルバージョン2でのバイト数バージョン5でのバイト数バージョン10でのバイト数おおよその復元率
L321062717%
M268421315%
Q206015125%
H144411930%
よく使う3つのバージョンにおけるバイトモードの容量です。中央にロゴが必要なコードにはレベルHが要りますが、バージョン2のレベルHに入るのは14バイトで、素のhttps://ドメインにも足りません。

意外な相互作用は逆方向にも働きます。容量が段階的に増えるため、レベルを1つ上げても何のコストもかからないことがよくあります。内容が40バイトなら、レベルMでもレベルQでもバージョン4に収まり、高いほうのレベルは無料です。選んだレベルでコードを生成してモジュール数を控え、1つ上のレベルでも生成して比べてください。格子が変わらないなら、いつでも高いほうのレベルを取るべきです。

その復元能力が実際に何をもたらすのか、レベルごとにどれだけの大きさのロゴを許容できるのか、スキャン失敗の後にレベルを上げるとなぜたいてい改善ではなく悪化になるのかは、誤り訂正レベルL・M・Q・Hにまとめてあります。

URLの長さから印刷サイズへ

内容の長さがシンボルバージョンを決め、シンボルバージョンがそのコードを正直に印刷できる最小のサイズを決めます。レイアウトで効いてくるのはこの連鎖であり、URLを短くすることが整頓ではなく印刷上の判断である理由もここにあります。

URLの長さレベルMでのバージョン最小の印刷幅レベルHでのバージョン最小の印刷幅
25文字2(25×25)13.2mm4(33×33)16.4mm
50文字4(33×33)16.4mm6(41×41)19.6mm
75文字5(37×37)18.0mm8(49×49)22.8mm
100文字6(41×41)19.6mm10(57×57)26.0mm
150文字8(49×49)22.8mm12(65×65)29.2mm
200文字10(57×57)26.0mm15(77×77)34.0mm
300文字13(69×69)30.8mm18(89×89)38.8mm
最小の印刷幅は全体の占有寸法、つまりシンボルに4モジュールのクワイエットゾーンを加えたもので、コート紙のモジュール下限0.4mmで計算しています。非コート紙では下限が0.5mmなので、どの値も4分の1増えます。

最後の2行が、リンクを短くすべき理由を1か所にまとめています。200文字のトラッキングURLはレベルHではコート紙でおよそ34mmより小さく印刷できませんが、25文字なら16mmまで下げられます。同じ情報を同じコードで届けるのに、面積は4分の1未満で済みます。

これらは下限であって推奨値ではありません。コードは読み取り距離に合わせても寸法を決める必要があり、目安は10cmの距離につき幅1cmです。2つの数字のうち大きいほうが優先されます。その計算は印刷の最小サイズが最初から最後まで扱っており、QR印刷サイズ計算ツールは指定した距離について計算します。

内容が収まらないときにすること

実用的なサイズに収まらない内容は、ほとんどの場合QRコードの問題ではなくURLの問題です。シンボルは求められたとおりに動いていて、求めているものが長すぎるのです。節約幅のおおよその順に挙げます。

  • トラッキングパラメーターを外す。 クリックIDを含む完全なUTMのセットは、ふつうに80〜120文字を足します。それだけでシンボルバージョン3つか4つ分です。キャンペーンのデータは印刷したコードの中ではなく、リンク先の側で付けてください。
  • wwwと末尾のスラッシュを落とす。 わずかですが無料で、1文字が効いてくる短いURLではバージョン1つ分の価値があります。
  • 短いパスを使う。 example.com/restaurant/our-menus/lunch-menu-2026ではなくexample.com/menuにします。印刷では、パスを読むのはカメラであって人が入力することはないので、読みやすさは何も生みません。
  • 自分が管理するリダイレクトに向ける。 自社ドメイン上の短いパスから長いURLへ転送すれば、コードは小さいまま、リンク先は変更可能なままにできます。静的コードは本来それができません。
  • その内容の種類に必要な最小限だけを符号化する。 Wi-Fiコードが運ぶのはネットワーク名・パスワード・セキュリティ種別だけで、電話のコードが運ぶのは数字だけです。余計な項目はバージョンを消費します。各内容に本当に必要なものはQRコードの種類を参照してください。
  • ロゴがないなら誤り訂正レベルを下げる。 HからMへ下げるのは小さな節約ではありません。どのバージョンでも容量がほぼ倍になり、バージョン5では44バイトから84バイトになります。平らなコート紙上の素直なコードならレベルMで十分です。
  • 仕事を分ける。 内容が本当に長い場合、たとえばメニューや書類や証明書なら、コードの中ではなくURLの先に置いてください。2,000文字を収めたQRコードは、誰にも読み取れないコードです。

やってはいけないことが1つあります。長い内容を収めるために印刷サイズを上げて、そこで止めることです。うまくいきはしますが原因を隠してしまい、次の版では少し長いURLと少ない余白で同じ壁にぶつかります。

容量の境目が不揃いな理由

容量はバージョンとともに一様には増えず、それには3つの別々の仕組みが関わっています。それを知っていれば、上の表で一見でたらめに見える段差も説明がつきます。

文字数指示子の幅が広がる。 文字数指示子とは、内容が何文字あるかを宣言するQRコード内部の短いヘッダーで、そのビット幅はシンボルバージョンによって変わります。バイトモードではバージョン1〜9で8ビット、バージョン10以上で16ビットなので、その境界を越えると内容を1文字も入れないうちに1バイト分の余分がかかります。

誤り訂正のブロック分割が不均等。 バージョン5からは、復元の計算が扱いやすいままであるようにデータが異なる大きさのブロックに分けられ、そのブロック構成はほぼバージョンごとに変わります。そのため隣り合うバージョンで、20バイト増えたあとに38バイト増えるといったことが起こります。

剰余ビットが残る。 バージョンによっては、コードワードを配置したあとに3個、4個、7個のモジュールが余ります。これらはゼロで埋められ、何も運びません。モジュール数と容量がぴったり歩調を合わせない理由の一部です。

これらは何をすべきかを変えるものではありません。ただ、URLに1文字足しても何のコストもかからないときと、1辺に4モジュール加わるときがある理由は説明してくれます。そして、バージョンを知る唯一の確かな方法が、文字数から推測するのではなくコードを生成して数えることである理由も同じです。

容量が本当の限界ではないとき

ほとんどのコードは、容量の限界よりずっと手前で物理的な限界にぶつかります。この2つを取り違えるのが、この話題でよくある誤りです。バージョン20のシンボルはレベルMで666バイトを収められ、印刷する段になるまでは十分に思えます。ところが1辺97モジュールを下限0.4mmで印刷すると占有寸法は42mmになり、30mmの卓上スタンドに詰め込めばモジュールは0.29mmまで落ちます。ほとんどの印刷方式が保てる大きさを下回り、腕を伸ばした距離でスマートフォンのカメラが解像できる大きさも下回ります。

先に効いてくる限界を、たいてい訪れる順に挙げます。

  • 印刷されたモジュールの大きさ。 モジュールはコート紙で0.4mm以上、非コート紙で0.5mm以上にすべきです。これが内容の長さを最小幅に変換するものであり、デザインの側で交渉できるものではありません。
  • 読み取り距離。 コードにはカメラとの距離10cmにつき幅約1cmが必要です。壁の看板の密なコードは、人が立つ距離で失敗します。設計時に想定した距離で失敗するのではありません。
  • カメラのピント。 スマートフォンのカメラの最短撮影距離はおよそ10cmです。とても小さく密なコードは、読む人をカメラがピントを合わせられるより近くまで寄らせることになり、それは読み取れないコードとして体感されます。
  • コントラストと表面の仕上げ。 密なコードは低いコントラストや反射に弱くなります。1モジュールあたりのピクセル数が少ないからです。色の組み合わせは決める前にQRコントラストチェッカーで確かめてください。
  • 書き出しの解像度。 ラスター書き出しには1モジュールあたり整数個のピクセルが必要です。密なコードを小さなピクセルサイズで書き出すと、モジュールの縁がぼやけます。計算は解像度とDPIにあり、SVGならこの問題自体が起きません。

円形QRコードやカスタム形状のQRコードに対応した無料のQRコードジェネレーター、KoloQRはPNGとSVGの両方を書き出せるので、内容が高いシンボルバージョンを強いるコードでもベクター素材として配置でき、どの印刷サイズでも幾何学的に正確なままにできます。ただしそれで解決するのは書き出しに関する半分だけで、残る4つは解決しません。長い内容には、どの形式で書き出そうと、物理的に大きなコードが必要です。

QRコードの容量にまつわるよくある誤解

最もよくある誤解は、2,953バイトという上限を実務上の予算として扱うことです。これは最も低い誤り訂正レベルにおける177×177モジュールのシンボルを指しており、メニューにもラベルにもポスターにも向くコードではありません。その付近まで来る内容は、容量が制約になるよりずっと前に物理的な理由で失敗しているはずです。

すること理由
生成前の文字数ではなく、生成後のモジュール数を確認する容量は段階的に増え、印刷サイズを決めるのはバージョンという数字だから
容量を測る前に誤り訂正レベルを決めるレベルHはシンボルの容量の57%を奪うので、レベルを言わない容量の数字は答えになっていない
コードを大きくする前にURLを短くするUTMのセットを外すのはバージョン3つか4つ分の価値があり、レイアウト上のコストはゼロ
1つ上のレベルを試して格子を比べる内容がすでに同じバージョンに収まっていれば、レベルを上げるのは無料になることが多い
バージョンで寸法を決め、次に読み取り距離で決めるどちらも最小幅を与え、大きいほうが優先されるから
しないこと理由
バージョンとレベルを言わずに容量の数字を挙げる同じモードでもその2つの数字次第で7バイトから2,953バイトまで幅がある
場所を節約するためにURL全体を大文字にする大文字小文字を区別しないのはスキームとホストだけで、パスを大文字にすると読めるのに404へ着地するコードになりうる
長い内容をURLの先ではなくコードの中に入れる書類が入るほど密なコードは、通常の距離ではどのスマートフォンのカメラも解像できないコードになる
URLが長くなると絵が大きくなるだけだと考える同じ幅のまま密になるのであり、それが印刷でのスキャン失敗の大半の直接原因
文字数からバージョンを見積もる指示子の幅、ブロック構成、剰余ビットのせいで境目は不揃い。生成して数えるべき

QRコードを作る

無料、アカウント不要、透かしなし。形を選び、ロゴを重ね、コントラストを確かめて、SVG・PDF・EPS・PNGで書き出せます。サブスクリプションの要らない静的コードです。

QRコードを作成

Questions? Answered

7,089桁、英数字4,296文字、2,953バイト、または漢字1,817文字です。4つとも177×177モジュールのシンボルであるバージョン40を、誤り訂正レベルLで使った場合の値です。レベルHでは同じシンボルに1,273バイトしか入りません。復元用のコードワードがデータと同じ予算から出ているからです。

技術的には2,953文字までですが、実際には100文字程度です。おおよそ100文字を超えるとシンボルバージョンが急に上がり、レベルHのバージョン15のコードはコート紙でおよそ34mmより小さく印刷できません。トラッキングパラメーターを外すのはバージョン3つか4つ分の価値があり、ほとんどの場合そちらのほうが良い対処です。

21×21モジュールのバージョン1に入るのは、レベルLで17バイト、Mで14バイト、Qで11バイト、Hで7バイトです。ほとんどのURLには足りません。https://example.comは19文字なので、ドメインだけでもたいていバージョン2か3のコードになります。

密になり、その結果として大きく印刷せざるをえなくなります。内容が長くなるとシンボルバージョンが上がり、絵の寸法は変わらないまま各辺のモジュールが増えるので、印刷幅が同じなら1モジュールは小さくなります。モジュールを読める大きさに保つには、印刷サイズをバージョンに合わせて大きくする必要があります。

大文字・数字・8種類の記号は45文字の英数字集合に属し、この集合はバイトモードの1文字8ビットに対して2文字を11ビットに詰め込みます。31%の節約になり、しばしばバージョンが丸ごと1つ下がります。大文字にするのはスキームとホストだけにしてください。パスはほとんどのサーバーで大文字小文字を区別します。

はい、かなり減らします。データ用と復元用のコードワードはバージョンごとの固定予算を分け合うので、レベルLは約7%を、レベルHは約30%を復元に回します。LからHへ移すとどのバージョンでも容量の57%が失われます。バージョン5のコードはレベルLで106バイト、Hで44バイトです。

中央にロゴを置くということは実質的に誤り訂正レベルHであり、どのバージョンでも最も容量の小さい列にあたります。レベルHではバージョン4のコードに34バイト、バージョン6に58バイト、バージョン10に119バイトが入ります。トラッキングパラメーター付きのURLとロゴの組み合わせが、コードをバージョン12より先へ押し上げる原因です。

2,953バイトが実用的な画像ファイルより小さいという意味でしか、できません。QRコードが収めるのはテキストで、ファイルを入れるにはテキストとして符号化する必要があり、それだけで容量が何倍にも膨らみます。ファイルはサーバーに置き、コードにはURLを入れてください。30文字のリンクは部屋の反対側からでも読み取れますが、2,953バイトの内容は読み取れません。

シンボルバージョンとは、コードのモジュール数に対して規格が付けた呼び名で、21×21モジュールのバージョン1から177×177のバージョン40まであります。バージョンVのコードは1辺が4V + 17モジュールです。エンコーダーは、あなたが指定した誤り訂正レベルで内容が収まる最小のバージョンを選びます。

KoloQRを選ぶ理由

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