Validez le chiffre de contrôle d’un VIN à 17 caractères
Le numéro d’identification du véhicule contient un chiffre de contrôle qui aide à repérer les erreurs de transcription avant qu’un VIN n’entre dans un registre, un stock, un dossier d’assurance ou une base d’entretien.
Lancer gratuitement
Ce validateur applique la translittération et la pondération standard aux 17 caractères, calcule le neuvième caractère attendu et le compare à celui fourni. Le résultat indique clairement si le VIN réussit le contrôle, avec les deux chiffres et le reste du modulo, sans rechercher ni conserver de renseignements sur le véhicule.
Ce que le chiffre de contrôle du VIN peut vous indiquer
Un VIN moderne est un identifiant structuré de 17 caractères, dont la neuvième position est réservée au chiffre de contrôle dans les systèmes appliquant la règle standard. Ce validateur répond à une question précise : le neuvième caractère concorde-t-il avec les autres selon le calcul de translittération pondérée ? Une réponse positive constitue un indice utile que l’identifiant a été copié correctement. En cas d’échec, vous devriez le comparer à la plaque du tableau de bord, à l’étiquette de certification, au certificat d’immatriculation ou à la source originale. Ce résultat ne prouve toutefois ni l’authenticité du véhicule, ni la légalité de son immatriculation, ni l’exactitude de sa description. Un VIN entièrement fictif peut être construit avec un chiffre mathématiquement correct. Le constructeur, le marché ou l’époque peuvent aussi influer sur l’emploi de cette convention. Utilisez donc ce contrôle pour détecter les fautes courantes, puis consultez des registres officiels pour l’identité, le titre, le vol, les rappels ou les caractéristiques.
Fonctionnement du calcul de translittération pondérée
Le calcul convertit d’abord chaque lettre autorisée en valeur numérique, tandis que les chiffres gardent leur propre valeur. Les lettres I, O et Q sont exclues des VIN, car elles peuvent être confondues avec des chiffres. Chacune des 17 valeurs est multipliée par le poids de sa position : 8, 7, 6, 5, 4, 3, 2, 10, zéro pour la position de contrôle, puis 9, 8, 7, 6, 5, 4, 3 et 2. Les produits sont additionnés et la somme est divisée par 11. Le reste devient le chiffre attendu : les restes de zéro à neuf utilisent le chiffre correspondant, tandis que le reste 10 est représenté par X. Le poids nul garantit que le caractère fourni n’influence pas son propre calcul. La capacité renvoie le VIN normalisé en majuscules, le neuvième caractère fourni, le caractère calculé et le reste, afin que vous puissiez examiner la décision au lieu de recevoir uniquement une valeur vraie ou fausse.
Utiliser la validation sans risque dans les formulaires et processus
Envoyez le VIN exactement sous la forme d’une chaîne de 17 caractères. Les lettres minuscules sont acceptées et converties en majuscules, mais les espaces, la ponctuation, les séparateurs décoratifs et les retours à la ligne ne sont jamais supprimés silencieusement. Cette rigueur est volontaire : une intégration doit signaler une entrée inattendue plutôt que modifier un identifiant à votre insu. Toute autre longueur provoque une erreur de saisie, tout comme un caractère absent de l’alphabet VIN. Un VIN bien formé dont le chiffre ne concorde pas renvoie un résultat normal avec valid défini sur faux ; il ne s’agit pas d’une entrée mal formée. Cette distinction permet à l’interface d’expliquer s’il faut corriger le format ou vérifier l’identifiant. Pour les imports en masse, conservez la source originale avec le résultat normalisé, soumettez les échecs à un examen et ne refusez pas un dossier légal ou historique sur ce seul calcul si sa juridiction ou son millésime peut suivre d’autres règles. L’automatisation par API coûte $0.002 par requête, tandis que l’outil du navigateur exécute localement le même calcul déterministe.
Cas d’usage
Repérez les erreurs de saisie en stock
Contrôlez un VIN saisi ou numérisé avant de créer la fiche et faites comparer toute divergence avec le véhicule.
Validez les formulaires d’atelier
Distinguez un identifiant mal formé d’un VIN valide en forme dont le neuvième caractère diffère du chiffre calculé.
Contrôlez les dossiers de véhicules importés
Ajoutez un contrôle qualité déterministe à l’import tout en conservant la vérification officielle de l’identité comme étape distincte.
Questions fréquentes
Combien coûte la validation du chiffre d’un VIN ?
L’API coûte $0.002 par requête. L’outil du navigateur réalise gratuitement le même calcul déterministe sur cette page.
Quel caractère correspond au chiffre de contrôle du VIN ?
Il s’agit du neuvième caractère du VIN à 17 caractères. Ce peut être un chiffre de 0 à 9 ou la lettre X.
Pourquoi le chiffre calculé peut-il être X ?
Le calcul emploie le modulo 11. Lorsque le reste vaut 10, la représentation standard du chiffre de contrôle est X.
Un chiffre valide prouve-t-il l’authenticité du véhicule ?
Non. Il vérifie uniquement la cohérence mathématique. Consultez des registres officiels pour l’identité, le titre, le vol, les rappels et les caractéristiques.
Les lettres minuscules sont-elles acceptées dans le VIN ?
Oui. Elles sont converties en majuscules. Les espaces et signes ne sont pas supprimés, et I, O et Q sont refusées.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/misc2/vin-check-digit-validate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"vin":"1M8GDM9AXKP042788"}'const res = await fetch("https://api.kit.forhosting.com/misc2/vin-check-digit-validate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"vin": "1M8GDM9AXKP042788"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/misc2/vin-check-digit-validate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"vin": "1M8GDM9AXKP042788"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/misc2/vin-check-digit-validate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"vin":"1M8GDM9AXKP042788"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"vin":"1M8GDM9AXKP042788"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/misc2/vin-check-digit-validate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"vin": "1M8GDM9AXKP042788"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "misc2.vin_check_digit_validate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |