Validador de Número CNH BR (registro)
Valide o número de registro da CNH brasileira (11 dígitos) pelo dígito verificador oficial. Útil para cadastros, RH e validação de documentos.
Número da CNH vs RENACH: dois identificadores distintos no mesmo cartão
Ao olhar para uma CNH - Carteira Nacional de Habilitacao e tentar extrair "o número", logo se percebe que o plastico impresso tem mais de um campo numérico. Os dois que importam para validação são o número da CNH (também chamado de "número de registro" ou "número do espelho") e o RENACH (Registro Nacional de Carteiras de Habilitacao). Eles não são a mesma coisa, e confundi-los e a fonte mais comum de bug em fluxos de onboarding de apps de delivery, mobilidade e KYC.
O número da CNH e uma sequência de 11 dígitos emitida pelo Detran estadual quando um determinado espelho físico e impresso. Historicamente mudava a cada renovação, a cada upgrade de categoria e, obviamente, quando o titular trocava de UF. O RENACH, ao contrário, e um registro nacional vitalício que segue o condutor por todas as renovacoes, mudanças de categoria e transferencias de estado. O campo 5 da CNH moderna mostra o RENACH; o campo 4 costuma mostrar o número da CNH.
Esta ferramenta valida especificamente o número da CNH — os 11 dígitos com dois verificadores ao final. Se você precisa validar o algoritmo conforme as regras dos sistemas de impressão do Detran, e a ferramenta certa. Se precisa rastrear o mesmo motorista através de várias CNHs ao longo do tempo, o campo que você realmente quer e o RENACH.
O algoritmo modulo 11 com a regra do decremento global
Os 11 dígitos da CNH se compoem de 9 dígitos base + 2 verificadores (DV1 e DV2). Diferente do CPF, o algoritmo da CNH usa pesos decrescentes começando em 9 e aplica um decremento global quando o primeiro verificador estoura. Implementação de referência:
// Digitos verificadores do numero da CNH
pesos1 = [9, 8, 7, 6, 5, 4, 3, 2, 1]
pesos2 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
dec = 0
soma1 = sum(digito[i] * pesos1[i] for i in 0..8)
dv1 = soma1 % 11
if dv1 == 10:
dv1 = 0
dec = 2
soma2 = sum(digito[i] * pesos2[i] for i in 0..8)
dv2 = (soma2 % 11) - dec
if dv2 < 0: dv2 += 11
if dv2 == 10: dv2 = 0
O dec = 2 e a parte que mais bibliotecas de terceiros erram. Quando o DV1 estoura para 10, ele e forcado para 0 e o DV2 precisa ser calculado com o offset. Esquecer o decremento gera validadores que rejeitam cerca de 1 em cada 11 CNHs reais.
Exemplo sobre 048.814.725-61
- Dígitos base:
0 4 8 8 1 4 7 2 5. - Soma1 = 0*9 + 4*8 + 8*7 + 8*6 + 1*5 + 4*4 + 7*3 + 2*2 + 5*1 = 187. 187 mod 11 = 0 -> DV1 = 0 (sem decremento).
- O DV1 impresso e 6: o exemplo padrão
04881472561depende de como zeros a esquerda são preservados. Sempre complete a base com zeros até 9 dígitos antes do cálculo.
Lei 14.071/2020, CPF como chave única e a convergencia com a CIN
A Lei Federal 14.071/2020 reformou o Código de Trânsito Brasileiro (CTB) e, entre muitas outras mudanças, estreitou o vinculo entre CNH e CPF. Na pratica, o CPF virou o identificador único funcional do condutor, mesmo que o número da CNH e o RENACH continuem existindo por compatibilidade. Sistemas do SENATRAN indexam por CPF, e apps integrados a stack gov.br (Carteira Digital de Trânsito, e-Social, cruzamento com Bolsa Família) esperam o CPF como chave primária.
A tendencia se acelera com a CIN (Carteira de Identidade Nacional), novo documento definido pelo Decreto 10.977/2022, que adota o CPF como número único de identificação em todos os documentos federais. A CIN deve, ao longo dos anos, unificar RG, CPF, número da CNH e outros identificadores em uma so chave numérica, mas até a adesao total o número da CNH segue como artefato distinto, validavel, impresso no cartão.
eCNH, CDT e o gemeo digital do plastico
A CNH Digital, ou eCNH, vive dentro do app Carteira Digital de Trânsito (CDT), distribuido pelo SENATRAN no ecossistema gov.br. A eCNH carrega o mesmo número da CNH e o mesmo RENACH do plastico — o algoritmo de validação não muda. A versão digital acrescenta um QR Code que resolve para um JSON assinado pelo SERPRO contendo CPF, número da CNH, RENACH, categoria, validade e assinatura criptografica.
Um validador puramente de formato como este olha apenas para os 11 dígitos. Não consegue dizer se o cartão e digital ou físico, se o titular esta suspenso, se a CNH foi cassada nem se a foto e a biometria batem. Essas checagens exigem sessão em portal do Detran ou integracao paga com bureau do SENATRAN.
Casos de uso: apps de delivery, KYC e dados de teste
Cenários reais onde um validador offline de número de CNH faz diferença:
- Onboarding de delivery e mobilidade: telas de iFood, Uber, 99, Rappi e Loggi rejeitam números obviamente malformados antes de bater no proxy do SENATRAN, que e rate-limited e pago por requisição.
- Gestão de frota: SaaS de telemetria como Cobli, Frota Plus e Maxtrack mantém master de motorista com número da CNH + RENACH e reaproveitam o validador na importacao.
- Seguros: apolices auto exigem CNH valida no momento da cotacao; o validador no front evita ida e volta ao back-office da seguradora.
- Dados de mock e seed: ambientes de QA precisam de CNHs que passem nos verificadores mas sejam claramente fake. Combine este validador com um gerador aleatório.
- Fintechs e abertura de conta: contas PJ de motoristas (MEI) frequentemente armazenam o número da CNH como ID secundario.
PPD vs PD, cassacao e o que o validador não enxerga
O Brasil emite a PPD (Permissão Para Dirigir) na primeira aprovacao — habilitacao provisoria valida por 1 ano. Depois de 12 meses sem infracoes graves, o titular e promovido a PD (CNH definitiva). Os dois documentos carregam números gerados pelo mesmo algoritmo, e esta ferramenta os valida igualmente.
Cassacao (revogacao total), suspensao (temporaria) e bloqueio administrativo ficam registrados na camada do RENACH, nunca no número da CNH em si. Um motorista cassado continua tendo um número que passa no algoritmo — apenas consulta online ao Detran ou SENATRAN revela o status. Essa e a ressalva mais importante para qualquer equipe de KYC que dependa de validação offline.
FAQ
RENACH vs número da CNH — qual e o que aparece no cartão?
Ambos. O plastico mostra o número da CNH (campo 4, "número de registro") e o RENACH (campo 5). O RENACH e o registro vitalício; o número da CNH e vinculado ao espelho específico.
O número da CNH muda quando eu mudo de UF?
Historicamente sim — o Detran de destino reemitia o número. Com o sistema nacional unificado, a tendencia e preservar o número quando possível, mas o campo garantido como estável para a vida toda e o RENACH.
Posso consultar a CNH online?
Sim, pelo portal do Detran estadual (detran.<UF>.gov.br) ou pelo app CDT no gov.br. Alguns Detrans exigem login com CPF e pergunta de segurança; o SENATRAN não expõe API publica gratuita.
A ferramenta consulta BrasilAPI ou algum serviço externo?
Não. Os verificadores são calculados localmente no navegador. A BrasilAPI não tem proxy Detran confiável — seu endpoint de CNH e instavel porque os Detrans estaduais bloqueiam scraping.
Por que alguns números de CNH começam com 0?
Zeros a esquerda fazem parte do número. O algoritmo completa a base com zeros até 9 dígitos antes de aplicar os pesos, então 04881472561 e processado igual a um número que comece com dígito diferente de zero.
Ferramentas Relacionadas
Validador de registro Anvisa
Valida formato do código de registro de medicamento na Anvisa (13 dígitos com check digit pela tabela oficial).
Validador de Número de Pedido
Valida formatos comuns de número de pedido em e-commerce: PED-XXXX, ORDER-NNNN, #N alfanumérico. Detecta tipo automaticamente.
Validador de Número de Processo CNJ
Valida números de processo no padrão CNJ pelo dígito verificador módulo 97 e decodifica ano, segmento da Justiça, tribunal e unidade de origem.
Validador de Número de Recibo
Valida formato comum de número de recibo (REC-AAAA-NNNNN ou REC.NNNNN). Aceita variações com pontos e traços. Verifica ano válido.
Validador de RG
Valide números de RG no formato SP (9 dígitos + dígito verificador). Verificação no navegador, sem enviar dados para servidores.
Validador de Número de RFC (IETF)
Valida formato de número de RFC (Request for Comments, padrão IETF) — entre 1 e 5 dígitos sem zeros à esquerda.