Módulo 11 explicado: CPF, CNPJ, PIS, título e RENAVAM
Módulo 11 é a conta que produz o dígito verificador: você multiplica cada dígito por um peso, soma os produtos, divide por 11 e usa o resto. Na maioria dos documentos, resto 0 ou 1 dá dígito 0, e os demais restos dão 11 menos o resto. O que muda de um documento para outro são os pesos, o sentido deles e a regra do resto.
O módulo 11 é a conta que gera o dígito verificador de CPF, CNPJ, PIS, título de eleitor e RENAVAM. Você multiplica cada dígito por um peso, soma tudo, divide por 11 e usa o resto. Se o resto for 0 ou 1, o dígito é 0; nos outros casos, o dígito é 11 menos o resto.
O que muda de um documento para outro são os pesos, o sentido em que eles são aplicados e o que se faz com o resto. Este texto mostra a conta uma vez e depois compara os cinco documentos. Se quiser ver a conta rodando num número de teste, o CPF fictício com o passo a passo mostra cada produto.
Para que serve o dígito verificador?
Para pegar erro de digitação antes de ele chegar ao banco de dados. Como 11 é primo e nenhum peso do primeiro dígito verificador é múltiplo de 11, trocar um único dígito sempre muda o resto. O dígito calculado quase sempre muda junto, com uma exceção: os restos 0 e 1 dão o mesmo dígito 0, e um erro que leve de um ao outro passa batido. Trocar dois dígitos vizinhos e diferentes também muda o resto, com a mesma ressalva.
O dígito não diz se o documento existe. Ele só diz que o número é coerente consigo mesmo. Um número sorteado que passa na conta continua sem dono, e é por isso que serve como massa de teste.
Como é a conta, passo a passo?
São quatro passos:
- Alinhe os dígitos de base com os pesos do documento.
- Multiplique cada dígito pelo seu peso e some os produtos.
- Calcule o resto da soma dividida por 11.
- Se o resto for menor que 2, o dígito é 0. Senão, o dígito é 11 menos o resto.
Exemplo com a base de CPF 861752998, de um número fictício. Os pesos do primeiro dígito são 10, 9, 8, 7, 6, 5, 4, 3 e 2.
| Dígito | 8 | 6 | 1 | 7 | 5 | 2 | 9 | 9 | 8 | Soma |
|---|---|---|---|---|---|---|---|---|---|---|
| Peso | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | |
| Produto | 80 | 54 | 8 | 49 | 30 | 10 | 36 | 27 | 16 | 310 |
O resto de 310 por 11 é 2. Como 2 não é menor que 2, o dígito é 11 − 2 = 9. Para o segundo dígito, a base passa a ter 10 dígitos (8617529989) e os pesos vão de 11 a 2. A soma dá 383, o resto é 9 e o dígito é 11 − 9 = 2. O CPF fictício completo é 861.752.998-92.
Quais são os pesos e a regra do resto de cada documento?
A tabela reúne o que cada documento faz. Só o CNPJ tem fonte oficial localizada para a regra de conversão dos caracteres. Nos demais, a conta é a de domínio público, a que os validadores e sistemas de folha usam há anos, e não achei texto oficial citável que traga os pesos.
| Documento | Base | Pesos | Regra do resto | Fonte da regra |
|---|---|---|---|---|
| CPF | 9 dígitos, depois 10 | 10 a 2 e depois 11 a 2, da esquerda para a direita | Menor que 2: 0. Senão: 11 − resto | Domínio público |
| CNPJ | 12 caracteres, depois 13 | 2 a 9 da direita para a esquerda, recomeçando em 2 | Menor que 2: 0. Senão: 11 − resto | Receita (conversão dos caracteres); pesos e resto, domínio público |
| PIS, PASEP, NIS, NIT | 10 dígitos | 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 | Menor que 2: 0. Senão: 11 − resto | Domínio público |
| RENAVAM | 10 dígitos | 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 | Menor que 2: 0. Senão: 11 − resto | Domínio público |
| Título de eleitor | 8 dígitos, depois 3 | 2 a 9 e depois 7, 8, 9, da esquerda para a direita | O próprio resto; resto 10 vira 0 | Domínio público, com variações entre fontes |
Duas observações sobre a tabela:
- Os pesos do CPF, lidos da direita para a esquerda, são 2, 3, 4 e assim por diante, sem voltar ao 2. O CNPJ é o que recomeça depois do 9.
- No RENAVAM, muita gente escreve a conta como “soma vezes 10, resto da divisão por 11, e 10 vira 0”. Dá exatamente o mesmo resultado da regra da tabela. Conferi essa equivalência para somas de 0 a 1.999.
O que muda no CNPJ alfanumérico?
Só o valor de cada caractere. Cada um vale o código ASCII menos 48: os dígitos de 0 a 9 valem eles mesmos, A vale 17, B vale 18, e assim até Z, que vale 42. Pesos e regra do resto continuam os mesmos. Quem explica isso é a Receita, no material sobre o CNPJ com letras.
O exemplo oficial é a base 12ABC34501DE. Os produtos do primeiro dígito somam 459, o resto é 8 e o dígito é 11 − 8 = 3. Com esse 3 na base, os produtos do segundo dígito somam 424, o resto é 6 e o dígito é 11 − 6 = 5. O resultado é 12.ABC.345/01DE-35, como no documento da Receita.
Onde o título de eleitor foge do padrão?
Em três pontos. Os pesos do primeiro dígito crescem da esquerda para a direita (2 a 9). O dígito é o próprio resto, e não 11 menos o resto, e resto 10 vira 0. E o segundo dígito é calculado com os dois dígitos da UF e o primeiro verificador, com pesos 7, 8 e 9.
Exemplo calculado pelo gerador do site para o título 575135080655 (UF 06, Paraná):
- Primeiro dígito: os oito primeiros dígitos,
57513508, com pesos de 2 a 9, dão soma 181. O resto é 5, então o dígito é 5. - Segundo dígito:
0,6e5, com pesos 7, 8 e 9, dão 0 + 48 + 45 = 93. O resto é 5, então o dígito é 5.
Há ainda uma exceção para títulos de São Paulo e Minas Gerais, que muda o resultado quando o resto é 0. Nem os pesos nem essa exceção vêm de texto oficial citável: a resolução do TSE descreve a estrutura do número, e a conta é a de uso corrente nos validadores, com divergências entre as fontes que consultei. Trate o título como o documento mais arriscado de implementar e confira a sua regra com a equipe que mantém o cadastro, e não só com um gerador. A página do gerador de título de eleitor lista a regra que este site usa.
E PIS e RENAVAM, na prática?
Os dois usam os mesmos pesos, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2, e a regra comum do resto. Dois números fictícios gerados pelo site:
- PIS
661.38764.66-5: soma 237, resto 6, dígito 11 − 6 = 5. - RENAVAM
44903307695: soma 204, resto 6, dígito 11 − 6 = 5.
Como escrever uma função que serve para todos?
Parametrize os pesos e deixe a regra do resto numa função à parte. O código abaixo foi executado no Node e devolve o dígito certo para o CPF fictício acima.
function modulo11(valores, pesos) {
const soma = valores.reduce((total, v, i) => total + v * pesos[i], 0);
const resto = soma % 11;
return { soma, resto, dv: resto < 2 ? 0 : 11 - resto };
}
const digitos = (texto) => [...texto].map(Number);
const base = '861752998';
const d1 = modulo11(digitos(base), [10, 9, 8, 7, 6, 5, 4, 3, 2]);
const d2 = modulo11(digitos(base + d1.dv), [11, 10, 9, 8, 7, 6, 5, 4, 3, 2]);
console.log(base + d1.dv + d2.dv, d1, d2);
// 86175299892 { soma: 310, resto: 2, dv: 9 } { soma: 383, resto: 9, dv: 2 }
Para o CNPJ, troque digitos por uma função que devolva caractere.charCodeAt(0) - 48 e use os pesos de 2 a 9 da direita para a esquerda.
Que casos testar na sua implementação?
O erro mais comum está no corte do resto. Teste um CPF para cada caso, todos fictícios:
| Primeiro dígito, resto da soma | Base | Dígito calculado | CPF fictício completo |
|---|---|---|---|
| 0 | 799102922 |
0 | 799.102.922-03 |
| 1 | 861580155 |
0 | 861.580.155-04 |
| 10 | 446427836 |
1 | 446.427.836-10 |
Nos dois primeiros, a regra “11 menos o resto” daria 11 e 10; o dígito certo é 0. No terceiro, o resto 10 dá o dígito 1. Uma implementação que esquece o corte falha nas duas primeiras linhas.
Para gerar muitos números de uma vez, com o passo a passo de cada um, use o gerador de CPF para teste. Todos os números são sorteados no seu navegador e servem apenas para testar software.
Perguntas frequentes
Por que o dígito é 0 quando o resto é 0 ou 1?
Porque 11 menos o resto daria 11 ou 10, que não cabem em um único dígito. Por isso a regra comum manda usar 0 nesses dois casos. É o ponto em que mais implementações erram, então teste os dois.
Todos os documentos brasileiros usam o mesmo módulo 11?
Não. A divisão por 11 é a mesma, mas os pesos, o sentido deles e o tratamento do resto mudam. O título de eleitor, por exemplo, usa o próprio resto como dígito. Algumas inscrições estaduais usam módulo 10 ou módulo 9.
Dá para copiar a função de um documento e usar em outro?
Só se você parametrizar os pesos e a regra do resto. Uma função com pesos fixos de CPF devolve dígito errado para CNPJ, PIS ou RENAVAM, mesmo com a divisão por 11 igual.
Fontes
Leia também
CPF e CNPJ válidos para teste: de onde tirar sem usar dado real
Para testar com CPF e CNPJ válidos, use números gerados por cálculo, que passam na conta do dígito verificador mas não saem de cadastro nenhum, em…
14/11/2026 DocumentosNIT, NIS, PIS e PASEP: qual a diferença e qual número usar
NIT é o número de inscrição do trabalhador na Previdência Social (INSS). Quem já tem PIS, PASEP ou NIS usa esse mesmo número como NIT e não ganha o…
14/11/2026Veja também
Atualizado em 14/11/2026.