Gerador de CNH

Gere números de CNH válidos matematicamente para fins de teste e desenvolvimento. Algoritmo DENATRAN com dígitos verificadores corretos.

Gerador de CNH para Testes

Gere números de CNH com dígitos verificadores matematicamente corretos para uso em desenvolvimento e testes de software.

⚠ Apenas para fins de teste e desenvolvimento — não são documentos reais e não devem ser usados para falsidade ideológica.

Estrutura da CNH

O número de registro da CNH (o “Nº Registro” impresso no documento e cadastrado no RENACH, o Registro Nacional de Carteiras de Habilitação) é composto por 11 dígitos numéricos:

NNNNNNNNN D1 D2
└── 9 dígitos base ──┘ └─ verificadores

Não há formatação com pontos ou traços — a CNH é exibida como sequência numérica pura de 11 dígitos.

Algoritmo dos dígitos verificadores (DENATRAN)

Dígito 1 (D1)

D1 = (d[0]×9 + d[1]×8 + d[2]×7 + d[3]×6 + d[4]×5 +
      d[5]×4 + d[6]×3 + d[7]×2 + d[8]×1) mod 11
Se D1 ≥ 10 → D1 = 0

Dígito 2 (D2)

D2 = (d[0]×1 + d[1]×2 + d[2]×3 + d[3]×4 + d[4]×5 +
      d[5]×6 + d[6]×7 + d[7]×8 + d[8]×9) mod 11
Se o cálculo do D1 deu resto ≥ 10, subtrai-se 2 do D2 (somando 11 se ficar negativo)
Se D2 ≥ 10 → D2 = 0

Como esse ajuste do D2 aparece com pequenas variações em diferentes implementações, este gerador só produz números em que o resto do D1 é menor que 10 — assim eles passam em qualquer uma delas.

Para que serve gerar CNH fictícia?

No desenvolvimento de software que processa dados de motoristas, é necessário ter dados de teste que:

  • Passem na validação de formato dos formulários e sistemas
  • Não correspondam a pessoas reais (requisito da LGPD)
  • Cubram casos extremos (dígitos verificadores = 0, sequências repetidas)
  • Sirvam como fixtures em testes automatizados (unitários, integração, E2E)

Exemplos de aplicações: sistemas de locadoras, seguradoras, despachantes, órgãos de trânsito, fintechs que precisam validar CNH como documento de identidade.

LGPD e uso responsável

A Lei Geral de Proteção de Dados (LGPD) exige que dados pessoais reais não sejam usados em ambientes de desenvolvimento e teste sem consentimento e medidas de segurança adequadas. Usar dados fictícios matematicamente válidos é a solução correta para conformidade.

Nunca use estes números gerados para:

  • Falsificação de documentos
  • Preenchimento de formulários oficiais
  • Simulação de identidade

Perguntas frequentes

O estado emissor influencia no número?

Não no cálculo dos dígitos verificadores. Os dígitos verificadores do número de registro são calculados apenas com os 9 dígitos base, independentemente do estado. O estado é informado como dado complementar no documento físico.

Como validar uma CNH em código?

function validarCnh(cnh) {
  const d = cnh.split('').map(Number);
  if (d.length !== 11) return false;
  
  let sum1 = 0;
  for (let i = 0; i < 9; i++) sum1 += d[i] * (9 - i);
  let d1 = sum1 % 11;
  let dsc = 0;
  if (d1 >= 10) { d1 = 0; dsc = 2; }
  
  let sum2 = 0;
  for (let i = 0; i < 9; i++) sum2 += d[i] * (1 + i);
  let d2 = sum2 % 11 - dsc;
  if (d2 < 0) d2 += 11;
  if (d2 >= 10) d2 = 0;
  
  return d[9] === d1 && d[10] === d2;
}

CNH gerada pode coincidir com uma CNH real?

Matematicamente sim — qualquer número de 11 dígitos que passe no algoritmo DENATRAN poderia ser uma CNH real. Por isso, estes números não devem sair do ambiente de desenvolvimento.

Veja também