Pular para o conteúdo

Gerador de número de CNH para teste

Gere números de registro fictícios para testar o seu sistema e confira se o dígito verificador de um número fecha a conta.

Para conferir o documento de verdade: Validar autenticidade de sua CNH (Senatran, gov.br) (abre em nova aba)

Gerar número de CNH para teste

Números fictícios, calculados no seu navegador. Nada é enviado.

Mais opções: semente, inválidos de propósito
A mesma semente gera a mesma lista, para testes automatizados. Vazio = sorteia.
Para teste negativo: o seu sistema deve recusar.

Número gerado

Número de registro da CNH Fictício, apenas para teste

43661268206

Números fictícios, apenas para teste de software. Eles são sorteados no seu navegador e seguem a regra do dígito verificador, mas não vêm de nenhum cadastro. Usar documento falso para enganar alguém é crime.

Esta página trabalha só com o número de registro, de 11 dígitos, e só com a conta do dígito verificador. Ela não consulta a CNH de ninguém e não diz se uma habilitação existe, está vencida ou suspensa. Para conferir uma CNH de verdade, use o serviço oficial Validar autenticidade de sua CNH (abre em nova aba), da Senatran.

O que esta página confere e o que não confere

O número de registro da CNH termina em dois dígitos verificadores, calculados a partir dos nove primeiros. A ferramenta refaz essa conta. Se o resultado bate, o número está bem formado. Só isso.

  • Confere: se o número tem 11 dígitos, se não é uma sequência repetida e se os dois dígitos verificadores batem com a base.
  • Não confere: se a habilitação existe, a quem pertence, a categoria, a validade, pontos, suspensão ou cassação.

A segunda lista só o cadastro oficial responde. No serviço da Senatran, a pessoa entra com a conta gov.br e informa o CPF, o número de registro e o código de segurança do documento.

Como usar

  1. Para gerar: escolha a quantidade, de 1 a 10.000, e clique em Gerar. Com uma semente, a lista sai igual toda vez.
  2. Para conferir o dígito: abra a aba "Conferir dígito", cole o número e veja se a conta fecha. Se não fechar, a mensagem mostra qual dígito era esperado.
  3. Para o lote: baixe em lista, CSV, CSV (Excel), JSON ou SQL.

Como o número de registro é formado

São 11 dígitos, escritos sem ponto nem traço: nove de base e dois verificadores. Exemplo fictício: 60481723544, em que 604817235 é a base e 44 são os dígitos verificadores.

A CNH traz outros números, como o do formulário e o código de segurança. Eles têm outras regras e não entram aqui. Se o seu sistema tem um campo "número da CNH", quase sempre é o número de registro que ele espera.

Guarde o campo como texto de 11 caracteres. O número pode começar com zero, e uma coluna numérica apaga esse zero.

Algoritmo

Como o dígito verificador é calculado

A conta usa módulo 11 duas vezes sobre os mesmos nove dígitos. No 1º dígito, os pesos descem de 9 a 1. No 2º, sobem de 1 a 9. Em cada conta, o dígito é o resto da divisão da soma por 11.

Cálculo dos dois dígitos verificadores da base 604817235
Dígito da base604817235Soma
Pesos do 1º dígito 9 8 7 6 5 4 3 2 1 sem valor
Produtos 54 0 28 48 5 28 6 6 5 180
Pesos do 2º dígito 1 2 3 4 5 6 7 8 9 sem valor
Produtos 6 0 12 32 5 42 14 24 45 180

Na primeira conta, 180 dividido por 11 dá resto 4, então o 1º dígito é 4. Na segunda, a soma também é 180 e o resto é 4, então o 2º dígito é 4. O número completo é 60481723544.

Conta feita com o número 60481723544. Gere ou valide outro acima e a conta muda junto.

1º dígito verificador

Cálculo do 1º dígito verificador: valor, peso e produto de cada caractere
1º dígito604817235
Dígito604817235
Peso987654321
Produto5402848528665
soma 180÷ 11 →resto 4→1º DV = 4

O DV é o próprio resto: 4.

2º dígito verificador

Cálculo do 2º dígito verificador: valor, peso e produto de cada caractere
2º dígito604817235
Dígito604817235
Peso123456789
Produto601232542142445
soma 180÷ 11 →resto 4→2º DV = 4

O DV é o próprio resto: 4.

O ajuste quando o resto é 10

Um dígito só vai de 0 a 9, e o resto de uma divisão por 11 pode ser 10. A regra trata esse caso assim:

  1. Se o resto da primeira conta for 10, o 1º dígito vira 0 e a segunda conta ganha um desconto de 2.
  2. Na segunda conta, subtraia o desconto do resto. Se o resultado ficar negativo, some 11.
  3. Se o resultado final for 10, o 2º dígito é 0.

Exemplo com a base 987654321: a primeira soma dá 285, com resto 10, então o 1º dígito é 0 e há desconto. A segunda soma dá 165, com resto 0. Zero menos 2 dá −2, e −2 mais 11 dá 9. O número completo é 98765432109.

É nesse ajuste que as implementações mais erram. Gere um lote, filtre os números em que o 1º dígito é 0 e use-os como caso de teste do seu validador.

Números inválidos para teste negativo

O gerador também cria números errados de propósito, para você testar a mensagem de erro do seu sistema:

  • Dígito verificador errado: a base está certa e o final não bate.
  • Tamanho errado: 10 ou 12 dígitos.
  • Dígitos repetidos: 11111111111 e parecidos fecham a conta, mas nenhum cadastro deve aceitar.

Onde um número fictício resolve

Sistemas de frota, locadoras, seguradoras, transportadoras e aplicativos de entrega têm cadastro de motorista. Para testar esse cadastro, você precisa de números que passem na conferência do dígito do próprio sistema, sem copiar o documento de um motorista real para o banco de homologação.

Se o cadastro também pede CPF, gere os dois em colunas separadas na página de massa de teste. Para veículo, use o gerador de RENAVAM e o gerador de placa.

Cuidados legais

Os números são sorteados no seu navegador e não vêm do cadastro de condutores. Um número sorteado pode coincidir com o de uma pessoa real, então não use o resultado para identificar ninguém.

O site gera só o número. Não gera imagem, PDF nem nada que pareça o documento. Apresentar um número inventado como se fosse a sua habilitação pode configurar crime, como falsa identidade (art. 307 do Código Penal).

Código

Código pronto para o seu projeto

// Dígitos verificadores do número de registro (base de 9 dígitos).
function dvCnh(base) {
  const d = [...base].map(Number);
  let soma1 = 0;
  let soma2 = 0;
  for (let i = 0; i < 9; i++) {
    soma1 += d[i] * (9 - i); // pesos 9 a 1
    soma2 += d[i] * (i + 1); // pesos 1 a 9
  }
  let dv1 = soma1 % 11;
  let desconto = 0;
  if (dv1 === 10) {
    dv1 = 0;
    desconto = 2;
  }
  let dv2 = (soma2 % 11) - desconto;
  if (dv2 < 0) dv2 += 11;
  if (dv2 === 10) dv2 = 0;
  return String(dv1) + String(dv2);
}

function digitoCnhConfere(numero) {
  const n = String(numero).replace(/\D/g, '');
  if (n.length !== 11 || /^(\d)\1{10}$/.test(n)) return false;
  return dvCnh(n.slice(0, 9)) === n.slice(9);
}

digitoCnhConfere('60481723544'); // true
digitoCnhConfere('98765432109'); // true (caso do ajuste)
digitoCnhConfere('60481723545'); // false

Fontes

Dúvidas

Perguntas frequentes

Dá para validar uma CNH de verdade aqui?

Não. Aqui você confere só se o dígito verificador do número de registro fecha a conta. Para saber se uma CNH é autêntica e está regular, use o serviço Validar autenticidade de sua CNH, da Senatran, no gov.br.

O número de CNH gerado funciona em algum cadastro oficial?

Não. Ele passa só no cálculo do dígito. Não está no cadastro de condutores e é recusado em qualquer consulta ao Detran ou à Senatran. Serve para teste de software.

Quantos dígitos tem o número de registro da CNH?

Tem 11 dígitos: nove de base e dois dígitos verificadores, escritos sem pontuação.

O site gera a imagem ou o PDF da CNH?

Não. O site gera apenas números para teste de software. Não produz imagem, PDF, QR Code nem qualquer coisa que pareça o documento.

Se o dígito confere, a CNH é válida?

Não necessariamente. O dígito mostra só que o número não tem erro de digitação. A habilitação pode não existir, estar vencida ou suspensa, e isso só o cadastro oficial informa.

Os números que eu gero ou confiro ficam salvos?

Não. Tudo é calculado no seu navegador e nenhum número é enviado ao servidor.

Ferramentas

Veja também

Atualizado em 14/11/2026.