開発者ツール

クレジットカード番号バリデーター|Luhnアルゴリズム・ブランド判定

クレジットカード番号を入力するとLuhnアルゴリズムでチェックデジットを検証し、Visa・Mastercard・Amex等のブランドを自動判定します。フォームのバリデーション実装確認にも便利です。

[[ labels.client_side_note ]]


[[ labels.format_error ]]
[[ labels.sample_label ]]:
[[ labels.no_input ]]

[[ labels.result_label ]]

[[ labels.formatted_label ]] [[ result.formatted ]]
[[ labels.brand_label ]] [[ brandName ]] [[ labels.brand_unknown ]]
[[ labels.checksum_label ]] ✓ [[ labels.checksum_valid ]] ✗ [[ labels.checksum_invalid ]]

対応ブランドと判定条件(IIN・桁数)

ブランド 先頭の数字(IIN) 桁数
Visa 4 13, 16, 19
Mastercard 51–55, 2221–2720 16
American Express 34, 37 15
Discover 6011, 65 16
JCB 3528–3589 16
Diners Club 300–305, 36, 38 14
UnionPay 62 16–19

使い方のヒント

  • 実在するカード番号ではなく、サンプルボタンのテスト番号(Visa: 4111 1111 1111 1111 など)で動作を確認できます。
  • スペースやハイフンが含まれていても自動で除去して判定するため、コピー&ペーストした番号もそのまま入力できます。
  • 本ツールの判定はLuhnアルゴリズムによる書式チェックのみです。実際の与信確認・残高照会は決済代行会社のAPIで行ってください。
  • フォームバリデーションの実装時に、正常系(有効な番号)・異常系(無効な番号)の両方をこのツールで作って確認すると効率的です。

よくある質問

いいえ、防げません。本ツールが行っているのはLuhnアルゴリズムによる書式チェックのみで、そのカードが実在するか、利用停止されていないか、残高が十分かどうかは判定できません。実際の与信確認には決済代行会社の認証システムが必要です。

入力された番号はサーバーに送信されず、すべてブラウザ内のJavaScriptで計算が完結します。ただし動作確認が目的であれば、実在の番号ではなくサンプルボタンで提供しているテスト番号のご利用をおすすめします。

1954年にIBMのHans Peter Luhnが考案した誤り検出アルゴリズムです。カード番号の右端から1桁おきに2倍し、各桁の合計が10の倍数になれば書式として有効と判定します。タイプミスの大半を検出できます。

カード番号の先頭の数桁(IIN:発行者識別番号)と桁数の組み合わせから判定しています。例えばVisaは「4」から始まり13・16・19桁、Mastercardは「51〜55」等から始まり16桁、JCBは「3528〜3589」から始まり16桁、といった公開されている規則に基づいています。詳しい対応表はツール下部の「対応ブランドと判定条件」をご覧ください。

いいえ。Luhnアルゴリズムに通るのは「書式として矛盾がない」ことの確認にすぎません。実在しないランダムな数字列でも、末尾の1桁を調整すればLuhnチェックを通過させることができます。
ツールくん

余談ですが ― チェックデジットの父、Hans Peter Luhn

クレジットカード番号の末尾に埋め込まれた「チェックデジット」は、1954年にIBMのエンジニアであるHans Peter Luhn(ハンス・ピーター・ルーン)が考案したアルゴリズムで検証されています。彼はこの功績で1960年に特許を取得しましたが、現在は特許が失効し誰でも自由に利用できる公開アルゴリズムとなっています。

Luhnアルゴリズムの仕組みは意外にシンプルです。カード番号の右端から1桁おきに数字を2倍し、その結果が2桁になる場合は各桁を足し合わせます(例: 8×2=16 → 1+6=7)。すべての桁を合計した数値が10で割り切れれば、そのカード番号は書式として有効と判定されます。

このアルゴリズムはクレジットカードだけでなく、IMEI番号(スマートフォンの識別番号)やカナダの社会保険番号など、さまざまな識別番号のタイプミス検出にも応用されています。ただし注意点として、Luhnアルゴリズムはあくまで「打ち間違いを検出する」ためのものであり、そのカード番号が実在するか、残高があるかどうかを判定するものではありません。

カード番号の先頭6〜8桁は「IIN(発行者識別番号)」と呼ばれ、どの国際ブランド・どの発行銀行が発行したカードかを識別する情報が埋め込まれています。本ツールのブランド判定機能も、このIINの範囲パターンをもとに動作しています。