Como o gerador funciona
Gerar um CNPJ válido é o problema inverso da validação: em vez de conferir o dígito verificador, nós o calculamos. O processo tem três passos:
- Sortear 8 caracteres para a raiz (de
0a9e deAaZ). - Definir a ordem —
0001para matriz ou 4 caracteres sorteados para filial. - Calcular os dois dígitos verificadores pelo módulo 11 sobre essa base de 12 caracteres.
const ALFABETO = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
function digito(seq) {
let soma = 0;
for (let i = 0; i < seq.length; i += 1) {
soma += (seq.charCodeAt(i) - 48) * (((seq.length - 1 - i) % 8) + 2);
}
const resto = soma % 11;
return resto < 2 ? 0 : 11 - resto;
}
function gerarCnpj({ matriz = true } = {}) {
let base = '';
for (let i = 0; i < 8; i += 1) {
base += ALFABETO[Math.floor(Math.random() * ALFABETO.length)];
}
base += matriz
? '0001'
: Array.from({ length: 4 }, () => ALFABETO[Math.floor(Math.random() * 36)]).join('');
const d1 = digito(base);
const d2 = digito(`${base}${d1}`);
return `${base}${d1}${d2}`;
}
console.log(gerarCnpj()); // ex.: 000102
Exemplos de CNPJ alfanumérico para teste
Se você só precisa de alguns números fixos para colar num teste, use estes — todos válidos e estáveis:
| Com máscara | Sem máscara |
|---|---|
JC.QOD.DOD/0001-02 | 000102 |
HC.5AM.9FQ/0001-34 | 59000134 |
OX.VTM.WSM/0001-18 | 000118 |
7U.ZOI.AIV/0001-73 | 7000173 |
2Y.SC7.0X0/0001-91 | 2700000191 |
17.Y68.EZ8/0001-70 | 17688000170 |
Onde usar a massa gerada
- Homologação: cadastre empresas fictícias antes de receber o primeiro CNPJ alfanumérico de verdade.
- Testes automatizados: cubra os dois formatos no mesmo cenário, garantindo compatibilidade retroativa.
- Importadores: monte um CSV com CNPJs alfanuméricos e veja se o parser aguenta letras sem converter para número.
- Formulários: teste a máscara de entrada, o
maxlengthe a colagem de valor com e sem pontuação.