信用卡号校验器
新用 Luhn 算法校验卡号并识别其卡组织品牌。
This verifies the Luhn checksum, the brand prefix and the length so you can build and test payment forms. A “valid” result means the number is well-formed — not that a card exists, is active, or has funds. Everything runs in your browser; numbers are never sent anywhere. Please don’t use it for fraud.
Enter a card number to validate.
| Brand | Starts with | Length | CVV |
|---|---|---|---|
| Visa | 4 | 13, 16, 19 | 3 |
| Mastercard | 51–55, 2221–2720 | 16 | 3 |
| American Express | 34, 37 | 15 | 4 |
| Discover | 6011, 644–649, 65 | 16–19 | 3 |
| Diners Club | 300–305, 36, 38, 39 | 14–19 | 3 |
| JCB | 3528–3589 | 16–19 | 3 |
| UnionPay | 62, 81 | 16–19 | 3 |
| Maestro | 50, 56–69 | 12–19 | 3 |
Runs entirely in your browser. Nothing is uploaded.
在浏览器中验证任何卡号
这款信用卡验证器通过Luhn算法、卡片品牌和预期长度来检查卡号是否格式正确——在您输入时实时验证。粘贴或输入一个卡号,您将立即看到识别出的品牌及其标志、Luhn校验和长度检查结果,以及可选的CVV和有效期格式检查。
它专为开发人员设计,帮助他们搭建结账表单;同时也适合任何希望在提交付款前发现输入错误的用户。所有功能都在本地浏览器中运行,无需服务器,因此它也是一个私密的卡号验证器和Luhn校验计算器,即便在有严格出站流量限制的企业网络中也能使用。
Luhn算法的工作原理
Luhn算法,也称为mod-10校验,是几乎所有卡片网络自1954年Hans Peter Luhn获得专利以来一直使用的校验和公式。从右侧开始,每隔一位数字乘以2;如果结果超过9则减去9,然后将所有数字相加。当总和能被10整除时,该号码有效。例如,4242 4242 4242 4242的总和为80——能被10整除——因此它是Luhn有效的。
本页的逐步Luhn分解面板会将您输入的任何数字的计算过程可视化:它突出显示翻倍的数字,显示每个数字对累计总和的贡献,并打印最终总和及其余数。这是理解Luhn校验实际工作方式的最快途径,当您需要在代码中自行实现时非常有用。
从IIN/BIN识别卡片品牌
卡片的前六到八位数字是其发卡机构识别号(IIN)——历史上称为银行识别号(BIN)——用于识别网络。这款卡片品牌检测器能识别Visa(以4开头)、Mastercard(51–55和2221–2720)、美国运通(34/37)、Discover(6011、644–649、65)、大来卡(300–305、36、38、39)、JCB(3528–3589)、银联(62、81)和Maestro,并在品牌规则表中显示每种品牌的接受长度和CVV位数。
品牌检测在您输入时实时触发,因此在输入前四位数字时,您就能知道该号码属于Visa、Mastercard还是Amex。这与电商网站支付表单在输入框中显示正确卡片标志所进行的检查完全相同。
与cardguru.io和creditcardvalidator.org的对比
搜索量最高的免费卡片验证器是cardguru.io和creditcardvalidator.org。两者都检查Luhn算法并识别品牌。Cardguru.io增加了BIN查询(发卡行、国家),但通过服务器端API调用实现,这意味着您的卡号会离开浏览器。Creditcardvalidator.org完全在客户端运行,但在验证器旁边显示广告,也不提供测试卡生成或批量检查功能。
namso-gen.com等类似网站专注于测试卡生成,有时批量生成,但其生成的号码被用于欺诈测试。本验证器清晰地分离了各项功能:验证号码、生成测试卡或批量验证——全部离线运行,与任何滥用行为无关。
测试卡号、生成器和批量模式
内置的测试信用卡号库按品牌列出了Luhn有效的沙盒号码(Stripe、Adyen和PayPal风格),每个号码都清晰标注为仅供测试,附有复制和"使用"按钮。需要新号码?生成器可为任何品牌创建随机的Luhn有效号码,让您无需查阅Stripe文档即可在几秒钟内填写支付表单。
批量模式允许您粘贴一列号码——来自电子表格导出或测试固件文件——并获得一张包含品牌、长度、Luhn结果以及每行有效/无效判决的表格。这在QA期间非常有用,当您有来自第三方数据源的号码列表并需要快速了解哪些格式正确时。
在代码中验证卡号——以及服务器端不能忽略的事项
要在代码中验证信用卡号,请直接实现Luhn:反转数字字符串,将每隔一位字符翻倍(超过9时减去9),求所有值的总和,当总和mod 10等于0时返回有效——在JavaScript或Python中大约六行代码。添加品牌前缀正则表达式和针对识别品牌的长度检查,以实现完整的客户端格式验证。
在客户端使用此检查可为用户提供即时反馈——它在网络请求触发之前捕获最常见的输入错误。但永远不要仅依赖它:始终通过经认证的支付处理商(Stripe、Adyen、Braintree、Square等)在服务器端运行真实授权。通过Luhn校验只是格式检查,不是财务保证。这里无需注册、无需费用、无服务器——每次检查都在您的浏览器中进行,您输入的号码永远不会离开您的设备。
Frequently asked questions
什么是信用卡验证器?
信用卡验证器通过三项测试检查卡号是否格式正确:Luhn校验和、卡片品牌(通过开头数字识别,称为IIN或BIN)以及该品牌的预期长度。它在浏览器中即时给出结果。开发人员用它测试支付表单,购物者用它在提交前发现错误。它不会联系银行,因此无法告知您真实卡片是否曾被发行或是否有余额。
Luhn算法是什么,它如何工作?
Luhn算法,也称mod-10校验,是一种校验和公式,能捕获大多数输入错误的卡号。从最右边的数字开始向左移动,每隔一位数字翻倍;如果翻倍结果为两位数(10或更多),则减去9。然后将所有数字相加。如果总和能被10整除,该号码通过校验。本页的逐步分解面板会为您输入的任何号码展示相同的计算过程。
有效号码意味着该卡是真实的或有效的吗?
不。"有效"结果仅意味着该号码格式正确:它通过了Luhn校验和,并符合已知品牌的前缀和长度模式。这完全不能说明该卡是否曾被银行发行、是否属于真实的人、是否当前有效或是否有可用信用额度。确认这些事实需要对发卡行系统进行实时授权,这只在通过支付处理商进行真实交易时才会发生。
在这里输入卡号安全吗?
是的。所有检查都完全在您的浏览器中通过JavaScript运行——您输入的任何内容都不会发送到任何服务器、不会被记录,也不会被您设备之外的任何人看到。验证器本身没有后端、没有API调用、没有第三方分析。作为最佳实践,当您只需要测试支付表单时,优先使用内置的测试号码,避免分享无特定原因的真实卡片数据。
如何从号码识别卡片品牌?
卡片的前六到八位数字是其发卡机构识别号(IIN),编码了网络品牌。Visa号码以4开头;Mastercard以51–55或2221–2720开头;美国运通以34或37开头;Discover以6011、644–649或65开头;大来卡以300–305、36、38或39开头。本验证器从您输入的前几位数字检测品牌,并立即显示标志、接受长度和CVV位数。
每种卡片类型有多少位数字?
Visa和Mastercard号码为16位。美国运通为15位。大来卡为14位(尽管部分联名卡为16位)。Discover、JCB和银联根据产品类型为16至19位。Maestro可为12至19位。长度是验证的一部分:以4开头的15位号码即使通过Luhn校验也不是有效的Visa,因为Visa要求16位。
如何在代码中验证信用卡号?
直接实现Luhn:反转数字数组,将每隔一个元素翻倍(若结果超过9则减去9),求所有元素的总和,当总和mod 10等于0时返回true。在JavaScript或Python中约为六行代码。然后使用正则表达式添加品牌前缀检查,以及针对识别品牌的长度检查。在客户端使用此检查获得即时反馈,但始终在服务器端通过您的支付处理商运行真实授权。