Validateur de carte bancaire
DévValidez les numéros de carte avec la somme de contrôle Luhn et détectez la marque (Visa, Mastercard, Amex, UnionPay, Discover). Entièrement dans votre navigateur.
Les URL distantes ne sont pas récupérées ; collez votre JSON directement.
- Marque
- Contrôle Luhn
- Longueur
Sur cette page
Qu’est-ce qu’un validateur de numéro de carte ?#
Un numéro de carte de paiement (le PAN, ou Primary Account Number) n’est pas une chaîne aléatoire. Ses premiers chiffres forment un préfixe BIN qui identifie l’émetteur (Visa commence par 4, Mastercard par 51–55 ou 2221–2720, etc.), sa longueur totale tombe dans une bande étroite par marque, et son dernier chiffre est une clé calculée pour que le nombre entier satisfasse l’algorithme de Luhn. Un validateur sépare ces trois signaux et vous dit, pour toute chaîne de chiffres, si elle est bien formée — et non si c’est une carte réelle, émise, payable.
Cette page fait exactement cela, entièrement dans votre navigateur. Saisissez ou collez un numéro et elle identifie la marque depuis le préfixe BIN, formate les chiffres en groupes de 4 lisibles, exécute la somme de contrôle de Luhn, et vérifie la longueur par rapport à ce que cette marque utilise réellement. C’est l’outil que vous atteignez en bâtissant un formulaire de paiement (ma validation au niveau champ correspond-elle aux vraies règles BIN ?), en apprenant comment Luhn fonctionne, ou en vérifiant un fixture de test.
Ne saisissez jamais un vrai numéro de carte. Utilisez des PAN de test (ceux que les passerelles de paiement publient pour les bacs à sable) ou des nombres que vous avez générés vous-même pour apprendre. Tout ici s’exécute localement et rien n’est transmis, mais traiter tout PAN comme sensible est le bon réflexe.
Comment l’utiliser#
- Lisez la note de confidentialité au-dessus de l’entrée — elle confirme que le numéro ne quitte jamais votre navigateur.
- Saisissez ou collez un numéro dans le champ Numéro de carte. Espaces, tirets, points et lettres sont retirés automatiquement ; vous pouvez coller
4111-1111 1111.1111et il sera lu comme4111111111111111. - Cliquez sur Exemple pour charger un PAN de test Visa bien connu, ou Effacer pour réinitialiser.
- Lisez la carte de résultat :
- La ligne verdict dit si le numéro est bien formé.
- Le badge de marque affiche l’émetteur détecté (Visa, Mastercard, American Express, Discover, UnionPay) ou « unknown » quand aucun préfixe BIN ne correspond.
- Groupé affiche les chiffres formatés en tronçons de 4, prêts à copier.
- Les trois lignes de contrôle rapportent marque, Luhn (réussite / échec) et longueur (ok / hors plage) séparément, pour que vous voyiez quelle règle a échoué plutôt qu’un plat « invalide ».
Fonctionnalités clés#
- Somme de contrôle Luhn, implémentée à partir de zéro. Le même algorithme que les cartes portent depuis les années 1960 : parcourir les chiffres de droite à gauche, doubler un chiffre sur deux, sommer et vérifier la divisibilité par dix. Le chiffre de contrôle final est ce qui fait qu’une coquille sur un seul chiffre échoue toujours.
- Détection de préfixe BIN pour cinq marques. Visa, Mastercard, American Express, Discover et UnionPay, matchées par ordre de priorité pour que les marques à préfixe
6(Discover 6011/65 vs UnionPay 62) n’entrent pas en collision. - Vérification de longueur par marque. Amex c’est 15 chiffres ; Visa 13 ou 16 ; Discover et UnionPay peuvent aller de 16 à 19. La règle de longueur appliquée est celle de la marque détectée, avec repli sur la plage générale 12–19 quand le préfixe est inconnu.
- Normalisation de chiffres sûre selon la locale. Les glyphes de chiffres arabes-indiques (٤١١١), persans, devanagari, bengalis et pleine chasse (123) sont tous translittérés en ASCII 0–9 avant validation, donc le même PAN valide quel que soit le mode de saisie ou la locale de l’utilisateur.
- Regroupement par 4 pour l’affichage. Un PAN à 16 chiffres devient
4111 1111 1111 1111; un Amex à 15 chiffres devient le familier3782 8224 6310 005(4-4-4-3). - Strictement local. Pas de backend, pas de requête réseau. Le PAN est traité en mémoire et rendu dans la carte de résultat à la même frappe.
Exemple commenté#
Cliquez sur Exemple pour charger le PAN de test canonique Visa, ou saisissez 4111 1111 1111 1111. La carte de résultat indique :
verdict Valid
brand Visa
grouped 4111 1111 1111 1111
Luhn pass
length ok (16 digits)
Essayez maintenant un PAN de test American Express avec un espacement malcommode — collez 3782 822463 10005. L’outil retire les espaces, détecte Amex depuis le préfixe 37, et le reformate dans le propre groupement d’Amex :
verdict Valid
brand American Express
grouped 3782 8224 6310 005
Luhn pass
length ok (15 digits)
Enfin, changez un chiffre du numéro Visa en 4111 1111 1111 1112. La marque et la longueur sont encore bonnes, mais Luhn échoue maintenant — et l’outil vous le dit explicitement, au lieu de cacher quel contrôle a cassé :
verdict Invalid
brand Visa
grouped 4111 1111 1111 1112
Luhn fail
length ok (16 digits)
Cette séparation compte quand vous déboguez un formulaire : un Luhn échoué pointe vers une coquille, tandis qu’une longueur échouée pointe vers la mauvaise marque ou un collage tronqué.
FAQ#
« Valide » veut-il dire que la carte fonctionnera réellement ?#
Non. « Valide » signifie seulement que le numéro est bien formé — son préfixe mappe à une marque connue, sa longueur correspond à cette marque, et il satisfait Luhn. Cela ne dit rien sur le fait que la carte ait déjà été émise, soit active ou dispose de fonds. Traitez cela comme un contrôle de format, de la même façon que vous valideriez la forme d’un e-mail sans savoir si la boîte de réception existe.
Pourquoi Luhn rattrape-t-il chaque coquille d’un seul chiffre ?#
À cause de la façon dont la somme de contrôle double les chiffres alternés : changer un chiffre décale la somme d’une quantité qui n’est jamais un multiple de dix, et inverser deux chiffres adjacents modifie la somme d’une façon que Luhn détecte aussi (à une exception étroite près). Il a été conçu précisément pour rattraper les erreurs de frappe que les humains font sur un clavier.
Le numéro que j’ai collé a des chiffres non latins. Fonctionnera-t-il quand même ?#
Oui. Le validateur translittère les glyphes de chiffres arabes-indiques, persans, devanagari, bengalis et pleine chasse en ASCII avant toute autre chose, donc ٤١١١ est traité comme 4111. Cela garde la validation cohérente à travers les locales et les méthodes de saisie, et la forme « groupée » affichée utilise toujours des chiffres ASCII.
Quelles marques de cartes sont reconnues ?#
Visa, Mastercard, American Express, Discover et UnionPay, par leurs plages de préfixe BIN publiques. Les numéros dont le préfixe ne correspond à aucune de celles-ci (par exemple, commençant par 1 ou 9) rapportent une marque « unknown », mais si la longueur est dans la plage générale 12–19 et Luhn passe, le numéro est quand même rapporté comme bien formé — il n’est simplement pas l’une des cinq marques modélisées.