Gerador de PIS/PASEP, NIS e NIT
Gere números fictícios de PIS, PASEP, NIS ou NIT para testar o seu sistema e confira o dígito verificador de qualquer número.
Número gerado
436.61268.20-2
CSV (Excel) abre com dois cliques no Excel em português (ponto e vírgula, acentos certos). CSV usa vírgula, para programas e scripts. SQL sai sempre sem máscara, para caber na coluna de tamanho fixo. Importe como texto, para não perder os zeros à esquerda.
Validar PIS/PASEP, NIS ou NIT
Confere no seu navegador. Nada do que você digita ou cola é enviado.
Validar em lote: cole uma coluna da planilha
CSV (Excel) abre com dois cliques no Excel em português (ponto e vírgula, acentos certos). CSV usa vírgula, para programas e scripts.
PIS, PASEP, NIS e NIT têm o mesmo formato: 11 dígitos, sendo dez de base e um dígito verificador calculado por módulo 11. Por isso um gerador só atende os quatro. Aqui você gera de 1 a 10.000 números fictícios, com ou sem a máscara 170.12345.67-3, e confere se um número fecha a conta. A página não consulta cadastro, saldo nem benefício.
Como usar
- Informe a quantidade, de 1 a 10.000, e uma semente, se quiser repetir a lista.
- Escolha se o número sai com máscara (
170.12345.67-3) ou sem (17012345673). - Clique em Gerar e copie ou baixe em lista, CSV, CSV (Excel), JSON ou SQL.
- Para conferir um número, abra a aba Validar e cole com ou sem máscara.
PIS, PASEP, NIS e NIT: qual é a diferença
Os quatro nomes aparecem em formulários e layouts diferentes, mas o número tem sempre o mesmo formato e a mesma regra de dígito. O que muda é quem faz a inscrição e para quê.
| Sigla | Nome | Onde costuma aparecer |
|---|---|---|
| PIS | Programa de Integração Social | Trabalhador de empresa privada, inscrito pela Caixa |
| PASEP | Programa de Formação do Patrimônio do Servidor Público | Servidor público, inscrito pelo Banco do Brasil |
| NIS | Número de Identificação Social | Programas sociais e cadastros do governo |
| NIT | Número de Inscrição do Trabalhador | Contribuinte individual e outros segurados inscritos no INSS |
Para o seu sistema, a consequência é simples: um campo, uma validação. Se o layout que você recebe tem colunas separadas para PIS e NIT, as duas aceitam o mesmo tipo de número.
Como o número é formado
São 11 dígitos. Os dez primeiros são a base e o último é o dígito verificador. A máscara usual separa em grupos de 3, 5, 2 e 1: 170.12345.67-3.
Guarde o campo como texto de 11 caracteres, sem máscara. O número pode começar com zero.
Como o dígito verificador é calculado
Multiplique os dez dígitos da base pelos pesos 3, 2, 9, 8, 7, 6, 5, 4, 3 e 2, nessa ordem, e some. Pegue o resto da divisão da soma por 11. O dígito é 11 menos o resto. Se essa conta der 10 ou 11, o dígito é 0.
| Dígito da base | 1 | 7 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Soma |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Peso | 3 | 2 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | sem valor |
| Produto | 3 | 14 | 0 | 8 | 14 | 18 | 20 | 20 | 18 | 14 | 129 |
O resto de 129 por 11 é 8. Onze menos 8 dá 3, então o dígito é 3 e o número completo é 170.12345.67-3.
Caso de borda: na base 1204817365, a soma é 176 e o resto é 0. Onze menos 0 dá 11, então o dígito é 0: 120.48173.65-0. Inclua um número assim nos seus testes.
Digite um número completo para ver a conta.
Conta feita com o número 170.12345.67-3.
Gere ou valide outro acima e a conta muda junto.
Dígito verificador
| Dígito | 1 | 7 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|---|---|---|
| Dígito | 1 | 7 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| Peso | 3 | 2 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
| Produto | 3 | 14 | 0 | 8 | 14 | 18 | 20 | 20 | 18 | 14 |
Resto 8 é maior que 1, então DV = 11 − 8 = 3.
Lote para folha de pagamento e cadastro
O lote gera até 10.000 números sem repetição. Ele serve para popular tabela de funcionários, testar importação de arquivo e conferir relatório.
- Lista: um número por linha.
- CSV: cabeçalho
pis, separado por vírgula. - CSV (Excel): pronto para o Excel em português. Mantenha a coluna como texto para não perder o zero à esquerda.
- JSON: array de strings.
- SQL:
INSERTcom os números sem máscara, em 11 caracteres.
Se a tabela também tem CPF, gere as duas colunas juntas na massa de teste. O gerador de CPF explica a regra do outro número.
Números inválidos para teste negativo
O gerador cria números com defeito conhecido, para você testar a recusa:
- Dígito verificador errado.
- Tamanho errado: 10 ou 12 dígitos.
- Dígitos repetidos:
000.00000.00-0fecha a conta e não deve ser aceito.
Erros comuns ao validar
- Usar os pesos do CPF. O PIS tem um dígito só, e os pesos começam em 3, não em 10.
- Esquecer que 11 menos o resto pode dar 11. Quando o resto é 0, o dígito é 0.
- Tratar o campo como número e perder o zero à esquerda.
- Aceitar a máscara na tela e gravar com pontos no banco. Grave sempre os 11 dígitos.
Cuidados legais
Os números são sorteados no seu navegador e não vêm de nenhum cadastro da Caixa, do Banco do Brasil ou do INSS. Um número sorteado pode coincidir com o de um trabalhador real, então não use o resultado para identificar ninguém nem para consultar benefício.
Usar um número inventado para pedir benefício, sacar valor ou preencher documento de trabalho pode configurar crime, como estelionato (art. 171 do Código Penal) e falsidade ideológica (art. 299).
Código pronto para o seu projeto
const PESOS = [3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
// Dígito verificador a partir da base de 10 dígitos.
function dvPis(base) {
let soma = 0;
for (let i = 0; i < 10; i++) soma += Number(base[i]) * PESOS[i];
const dv = 11 - (soma % 11);
return dv >= 10 ? 0 : dv;
}
function digitoPisConfere(numero) {
const n = String(numero).replace(/\D/g, '');
if (n.length !== 11 || /^(\d)\1{10}$/.test(n)) return false;
return dvPis(n.slice(0, 10)) === Number(n[10]);
}
// 17012345673 -> 170.12345.67-3
const formatarPis = (n) => n.replace(/^(\d{3})(\d{5})(\d{2})(\d)$/, '$1.$2.$3-$4');
digitoPisConfere('170.12345.67-3'); // true
digitoPisConfere('120.48173.65-0'); // true (resto 0)
formatarPis('17012345673'); // '170.12345.67-3' import random
PESOS = (3, 2, 9, 8, 7, 6, 5, 4, 3, 2)
def dv_pis(base: str) -> int:
soma = sum(int(c) * p for c, p in zip(base, PESOS))
dv = 11 - soma % 11
return 0 if dv >= 10 else dv
def gerar_pis(rng: random.Random, mascara: bool = False) -> str:
base = f"{rng.randrange(10**10):010d}"
n = base + str(dv_pis(base))
return f"{n[:3]}.{n[3:8]}.{n[8:10]}-{n[10]}" if mascara else n
rng = random.Random(2026) # mesma semente, mesma lista
massa = [gerar_pis(rng) for _ in range(100)] -- Uma função só serve para PIS, PASEP, NIS e NIT.
CREATE OR REPLACE FUNCTION pis_digito_confere(numero text) RETURNS boolean AS $$
DECLARE
n text := regexp_replace(numero, '\D', '', 'g');
pesos int[] := ARRAY[3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
soma int := 0;
dv int;
BEGIN
IF n !~ '^\d{11}$' OR n ~ '^(\d)\1{10}$' THEN
RETURN false;
END IF;
FOR i IN 1..10 LOOP
soma := soma + substr(n, i, 1)::int * pesos[i];
END LOOP;
dv := 11 - (soma % 11);
IF dv >= 10 THEN
dv := 0;
END IF;
RETURN substr(n, 11, 1)::int = dv;
END;
$$ LANGUAGE plpgsql IMMUTABLE;
SELECT pis_digito_confere('170.12345.67-3'); -- true Perguntas frequentes
PIS, PASEP, NIS e NIT são o mesmo número?
Têm o mesmo formato e a mesma regra de dígito verificador: 11 dígitos, com o último calculado por módulo 11. Os nomes mudam conforme quem fez a inscrição e o uso do número.
O PIS gerado é de um trabalhador de verdade?
Não. Ele é sorteado no seu navegador e só segue a regra do dígito verificador. Não vem de nenhum cadastro e não serve para consultar saldo, abono ou benefício. É para teste de software.
Quantos dígitos tem o PIS?
Tem 11 dígitos: dez de base e um dígito verificador. A máscara usual é 000.00000.00-0.
Como calcular o dígito verificador do PIS?
Multiplique os dez primeiros dígitos pelos pesos 3, 2, 9, 8, 7, 6, 5, 4, 3 e 2, some e pegue o resto da divisão por 11. O dígito é 11 menos o resto. Se der 10 ou 11, o dígito é 0.
Dá para descobrir o PIS de alguém pelo CPF?
Não. A página gera números fictícios e confere a conta do dígito; não busca o número de ninguém em cadastro nenhum. Quem precisa do próprio número deve procurar os canais oficiais da Caixa, do Banco do Brasil ou do INSS.
Os números ficam salvos em algum lugar?
Não. Tudo é calculado no seu navegador e nenhum número é enviado ao servidor.
Leia também
Veja também
Gerador de CPF
CPFs fictícios, por estado de emissão, um a um ou em lote.
137.122.747-00Título de eleitor
Números de inscrição eleitoral fictícios, por estado, com a conta dos dígitos.
3712 2747 0400Massa de teste
Vários tipos de número num arquivo só, uma coluna por tipo, até 10.000 linhas.
cnpj,cpf,pisValidar CPF
Diz se o CPF confere e, se não, qual dígito está errado.
502.931.507-10 · VálidoAtualizado em 14/11/2026.