QRコードの容量と誤り訂正レベル
このQRコード容量・誤り訂正検索では、QR Code Model 2の指定したバージョンと訂正レベルについて、数字、英数字、バイトの各モードに格納できる最大文字数を返します。標準のバージョン1から40までと、L、M、Q、Hの全レベルに対応しています。シンボルを生成する前の上限比較、適切なサイズの選定、同じ内容が訂正レベルによって収まったり収まらなかったりする理由の確認にご利用いただけます。
無料で実行
最初にバージョンと誤り訂正レベルを選びます
QRコードのバージョンはシンボルの寸法を表します。バージョン1は21×21モジュールで始まり、以降は一辺につき4モジュールずつ増え、バージョン40まで続きます。モジュールが増えるほど空間は広がりますが、誤り訂正レベルに応じて、その一部が復元用データに割り当てられます。Lはペイロードに使える容量が最も多く、M、Q、Hの順に訂正用コード語の割合が増えます。本ツールはこの2項目を固定条件として、3種類の上限を提示します。1から40までの整数バージョンと、4つの標準レベルのいずれかを選択してください。結果には正規化されたレベル、利用可能なデータコード語数、対応する各モードの最大文字数が含まれます。内容を解析してバージョンを自動選択する機能ではありません。そのため、仕様書の確認、別のQRライブラリの検証、符号化前の候補比較において一貫した回答を得られます。認識できないバージョンやレベルは、丸めたり置き換えたりせずエラーになります。
符号化モードによって容量が変わる理由
3種類の容量が異なるのは、QRの各モードで文字を格納するビット効率が違うためです。数字モードは数字をまとまり単位で圧縮するので最大文字数が最も多くなりますが、使用できるのは0から9までに限られます。英数字モードでは、大文字、数字、空白、一部の記号から成るQR規格所定の45文字を使用します。バイトモードは8ビット単位で格納し、一般的な文章やバイナリーデータの実用的な基準となるため、上限は低くなります。計算では、誤り訂正後に残るデータコード語から、4ビットのモード指示子とバージョン別の文字数フィールドを考慮し、収まる最大ペイロードを求めます。バイトの値は、見た目の文字数ではなくバイト数です。UTF-8では、アクセント付き文字、非ラテン文字、絵文字が複数バイトになる場合があります。実際のエンコーダーはモード切替、ECI指示子、メタデータを追加することもあるため、上限付近では正確なビット列をご確認ください。
読み取り性能を過信せず結果を活用します
容量は、選択したモード、バージョン、訂正レベルにおける厳密な格納上限ですが、印刷または表示したシンボルを確実に読み取れることまでは保証しません。物理的なモジュール寸法、クワイエットゾーン、コントラスト、焦点、面のゆがみ、印刷不良、カメラ条件も重要です。まず正しい単位でペイロードを測定し、返された上限以下であることをご確認ください。超える場合は、バージョンを上げる、環境に問題がなければ訂正レベルを下げる、内容を短縮する、適用可能な高密度モードに変える、といった対応ができます。上限ちょうどの場合は、モードヘッダーや追加セグメントで最終ビット量が変わり得るため、本番用エンコーダーとスキャナーでお試しください。高い訂正能力は傷や遮蔽が想定されるラベルに有効ですが、シンボルを拡大しなければ容量が減り、印刷寸法が一定なら各モジュールも小さくなります。APIリクエストは1回$0.002で、決定論的な結果を返すため、検証規則、資料作成、ビルド時チェックに繰り返し利用できます。
活用例
ペイロード上限の検証
製品仕様で指定されたバージョン、訂正レベル、符号化モードに収まらない内容を事前に検出できます。
QR設定の比較
シンボル寸法を決める前に、L、M、Q、Hの間で容量がどのように変わるか確認できます。
連携条件の文書化
機器、ラベル形式、エンコーダー処理について、数字・英数字・バイトの正確な上限を明記できます。
よくある質問
どのQRバージョンに対応していますか?
QR Code Model 2のバージョン1から40まで、すべてに対応しています。
使用できる誤り訂正レベルはどれですか?
L、M、Q、Hをご指定ください。認識できないレベルはエラーになります。
バイト容量は文章の文字数と同じですか?
各文字が1バイトの場合に限ります。UTF-8文字は複数バイトになることがあるため、符号化後のバイト長を測定してください。
訂正能力を高くすると容量が減るのはなぜですか?
復元情報に割り当てるコード語が増え、ペイロード用のコード語が少なくなるためです。
最大値にはモードの付加情報も含まれますか?
はい。4ビットのモード指示子と、バージョンによって長さが変わる文字数フィールドを考慮しています。
APIリクエストの料金はいくらですか?
APIリクエストは1回$0.002です。計算は決定論的で、外部サービスを使用しません。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/doc/qr-code-error-correction-capacity \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"version":10,"level":"Q"}'const res = await fetch("https://api.kit.forhosting.com/doc/qr-code-error-correction-capacity", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"version": 10,
"level": "Q"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/doc/qr-code-error-correction-capacity",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"version": 10,
"level": "Q"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/doc/qr-code-error-correction-capacity", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"version":10,"level":"Q"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"version":10,"level":"Q"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/doc/qr-code-error-correction-capacity", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"version": 10,
"level": "Q"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "doc.qr_code_error_correction_capacity",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_mb | 25 |
max_pages | 200 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |