Ferramenta

Gerador de CNPJ

Números com dígito verificador válido, para teste. Gerados no seu navegador.

Somente dígitos, como nas inscrições emitidas até 30/07/2026.

  • 08451929394767
  • 10614534831160
  • 50947024455985
  • 61182864331197
  • 95281691888857

Estes números passam na validação do dígito verificador, mas não pertencem a nenhuma empresa. Servem para preencher formulário de teste e fixture, nunca para uso em documento real.

Numérico ou alfanumérico?

Inscrições emitidas até 30/07/2026 são só numéricas, e continuam válidas. A partir de 31/07/2026, as novas saem no formato alfanumérico: letras maiúsculas nas 12 primeiras posições e dígitos verificadores numéricos. Se você está testando um sistema que precisa aceitar os dois, gere os dois, porque é justamente aí que a maioria das validações antigas quebra.

Gere no seu código

Para semear banco de teste ou fábrica de objeto. Sem dependência.

javascript
function gerarCnpj({ alfanumerico = false } = {}) {
  const alfabeto = alfanumerico
    ? "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    : "0123456789";

  const base = Array.from(
    { length: 12 },
    () => alfabeto[Math.floor(Math.random() * alfabeto.length)],
  ).join("");

  const valorDe = (c) => c.charCodeAt(0) - 48;
  const digito = (chars, pesos) => {
    const soma = chars
      .split("")
      .reduce((total, c, i) => total + valorDe(c) * pesos[i], 0);
    const resto = soma % 11;
    return resto < 2 ? 0 : 11 - resto;
  };

  const dv1 = digito(base, [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]);
  const dv2 = digito(base + dv1, [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]);

  return `${base}${dv1}${dv2}`;
}
python
import random


def gerar_cnpj(alfanumerico: bool = False) -> str:
    alfabeto = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" if alfanumerico else "0123456789"
    base = "".join(random.choice(alfabeto) for _ in range(12))

    def digito(chars: str, pesos: list[int]) -> int:
        soma = sum((ord(c) - 48) * p for c, p in zip(chars, pesos))
        resto = soma % 11
        return 0 if resto < 2 else 11 - resto

    dv1 = digito(base, [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2])
    dv2 = digito(f"{base}{dv1}", [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2])

    return f"{base}{dv1}{dv2}"

Quer conferir um CNPJ real? Use o validador.