Valide o dígito verificador de um VIN de 17 caracteres
O Número de Identificação do Veículo contém um dígito verificador que ajuda a revelar erros de transcrição antes que um VIN entre em um cadastro, estoque, processo de seguro ou banco de dados de manutenção.
Executar grátis
Este validador aplica a transliteração e a ponderação padrão aos 17 caracteres, calcula o nono caractere esperado e o compara com o informado. O resultado apresenta claramente se o VIN passou, os dois dígitos e o resto do módulo, sem consultar nem armazenar detalhes do veículo.
O que o dígito verificador do VIN pode informar
Um VIN moderno é um identificador estruturado com 17 caracteres, e a nona posição é reservada ao dígito verificador nos sistemas que adotam a regra padrão. Este validador responde a uma pergunta específica: o nono caractere está de acordo com os demais no cálculo de transliteração ponderada? Um resultado aprovado é uma evidência útil de que o identificador foi copiado de maneira consistente. Uma reprovação indica que você deve compará-lo com a placa do painel, a etiqueta de certificação, o documento do veículo ou a fonte original. Ela não comprova, porém, que o veículo é autêntico, está legalmente registrado ou foi descrito corretamente. É possível criar um VIN fictício com um dígito matematicamente correto. Além disso, fabricante, mercado e período histórico podem determinar o uso dessa convenção. Considere o resultado um controle de qualidade para erros comuns e recorra a registros oficiais em questões de identidade, propriedade, roubo, recall ou especificações.
Como funciona o cálculo de transliteração ponderada
Primeiro, o cálculo converte cada letra permitida em um valor numérico, enquanto os algarismos mantêm seus próprios valores. As letras I, O e Q são excluídas dos VINs porque podem ser confundidas com números. Cada um dos 17 valores é multiplicado pelo peso da respectiva posição: 8, 7, 6, 5, 4, 3, 2, 10, zero para a posição do verificador e depois 9, 8, 7, 6, 5, 4, 3 e 2. Os produtos são somados e o total é dividido por 11. O resto se torna o dígito esperado; restos de zero a nove usam o algarismo correspondente, e o resto 10 é representado por X. O peso zero impede que o dígito informado influencie o próprio cálculo. A capacidade devolve o VIN normalizado em maiúsculas, o nono caractere recebido, o calculado e o resto, permitindo que você inspecione a decisão em vez de receber apenas um valor verdadeiro ou falso.
Como usar a validação com segurança em formulários e fluxos
Envie o VIN exatamente como uma string de 17 caracteres. Letras minúsculas são aceitas e convertidas para maiúsculas, mas espaços, pontuação, separadores decorativos e quebras de linha não são removidos silenciosamente. Essa rigidez é intencional: uma integração deve identificar uma entrada inesperada, e não alterar um identificador sem aviso. Qualquer outro comprimento gera erro de entrada inválida, assim como caracteres fora do alfabeto VIN. Um VIN bem formado com dígito divergente é diferente de uma entrada malformada e, por isso, retorna um resultado normal com valid igual a falso. Essa distinção permite que a interface explique se a pessoa precisa corrigir o formato do campo ou conferir o identificador. Em importações em lote, preserve a fonte original junto ao resultado normalizado, encaminhe divergências para revisão e não rejeite registros legais ou históricos apenas por esse cálculo quando a jurisdição ou o ano-modelo puder seguir regras diferentes. A automação via API custa US$ 0,002 por solicitação, enquanto o executor do navegador faz localmente o mesmo cálculo determinístico.
Casos de uso
Detecte erros no cadastro de estoque
Confira um VIN digitado ou escaneado antes de criar o registro e encaminhe divergências para comparação com o veículo.
Valide formulários de agendamento
Diferencie identificadores malformados de VINs bem formados cujo nono caractere não corresponde ao dígito calculado.
Verifique registros de veículos importados
Acrescente um controle determinístico à importação e mantenha as verificações oficiais de identidade como etapa separada.
Perguntas frequentes
Quanto custa validar o dígito de um VIN?
A API custa US$ 0,002 por solicitação. O executor do navegador realiza gratuitamente o mesmo cálculo determinístico nesta página.
Qual caractere é o dígito verificador do VIN?
É o nono caractere do VIN de 17 caracteres. Pode ser um algarismo de 0 a 9 ou a letra X.
Por que o dígito calculado pode ser X?
O cálculo usa módulo 11. Quando o resto é 10, a representação padrão do dígito verificador é X.
Um dígito válido prova que o veículo é autêntico?
Não. Ele verifica apenas a consistência matemática. Use registros oficiais para identidade, propriedade, roubo, recalls e especificações.
Letras minúsculas são aceitas no VIN?
Sim. Elas são convertidas para maiúsculas. Espaços e pontuação não são removidos, e I, O e Q são rejeitadas.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
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)Exemplo de requisição
{
"vin": "1M8GDM9AXKP042788"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "misc2.vin_check_digit_validate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |