CNPJ Gerador

Validador de CNPJ (numérico e alfanumérico)

Cole um ou vários CNPJs e veja, linha a linha, se são válidos e por que não são.

Grátis, sem cadastro, 100% no navegador

Com ou sem máscara, numéricos ou alfanuméricos, até 5000 linhas. Ctrl + Enter valida.

7 linhas: 3 válidos, 4 inválidos

  1. 111.222.333/0001-81VálidoNumérico, matriz.
  2. 212.abc.345/01de-35VálidoAlfanumérico, filial (ordem 01DE).
  3. 3A1.B2C.3D4/0002-74VálidoAlfanumérico, filial (ordem 0002).
  4. 411.222.333/0001-82DV incorretoDV informado 82; o correto é 81.
  5. 500.000.000/0000-00Sequência repetidaTodos os caracteres são iguais.
  6. 612.ABC.345/01DE-3TamanhoTem 13 caracteres; o CNPJ tem 14.
  7. 712.ABC.345/01DE-3XCaractere inválidoAs posições 13 e 14 (DV) aceitam só números; encontrado "X".

Baixar resultado

Nada é enviado ao servidor.

Como validar CNPJ: o que o validador confere, em ordem

Cada linha passa por seis verificações. A primeira que falhar vira o motivo mostrado no resultado. A regra é a mesma para validar CNPJ alfanumérico ou numérico.

  1. Limpa

    Remove pontos, barra, hífen e espaços.

    12.abc.345/01de-35 → 12abc34501de35

  2. Converte

    Passa as letras para maiúsculas.

    12abc34501de35 → 12ABC34501DE35

  3. Mede

    Confere se sobraram exatamente 14 caracteres.

    Motivo: Tamanho

  4. Filtra

    Posições 1 a 12 aceitam A a Z e 0 a 9; posições 13 e 14, só dígitos.

    Motivo: Caractere inválido

  5. Descarta

    Rejeita sequências de um único caractere repetido.

    Motivo: Sequência repetida

  6. Recalcula

    Refaz os dois DVs por módulo 11 e compara com os informados.

    Motivo: DV incorreto

Os quatro motivos de erro e como corrigir

A mensagem de cada exemplo é exatamente a que este validador de CNPJ alfanumérico e numérico mostra.

Tamanho

12.ABC.345/01DE-3

Tem 13 caracteres; o CNPJ tem 14.

Falta ou sobra caractere. Confira se a colagem não cortou o fim.

Caractere inválido

12.ABC.345/01DE-3X

As posições 13 e 14 (DV) aceitam só números; encontrado "X".

Troque o caractere indicado. O DV nunca tem letra.

Sequência repetida

00.000.000/0000-00

Todos os caracteres são iguais.

Use um CNPJ de verdade ou gere um para teste.

DV incorreto

11.222.333/0001-82

DV informado 82; o correto é 81.

Provável erro de digitação. O detalhe mostra o DV que fecha a conta.

Quando vale a pena validar CNPJ antes de usar

Um CNPJ com DV errado quase sempre é erro de digitação. Pegar isso na entrada custa um segundo; descobrir depois, numa nota fiscal rejeitada ou num cadastro duplicado, custa bem mais. Estes são os casos em que a checagem se paga.

Lembre que validar não é consultar. Um número pode estar perfeito e pertencer a uma empresa baixada ou nem existir. Use o validador para a forma e a Receita Federal para a situação cadastral.

Validar CNPJ alfanumérico no seu sistema

As mesmas regras em cinco formatos. Cada função valida numérico e alfanumérico e foi testada contra 11.222.333/0001-81 e 12.ABC.345/01DE-35.

cnpj.ts
const PESOS = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
const CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';

// Valor do caractere = código ASCII - 48 (0-9 = 0-9, A = 17 ... Z = 42)
function dv(base: string): number {
  const pesos = PESOS.slice(13 - base.length);
  const soma = [...base].reduce((s, c, i) => s + (c.charCodeAt(0) - 48) * pesos[i], 0);
  const r = soma % 11;
  return r < 2 ? 0 : 11 - r;
}

export function validarCnpj(valor: string): boolean {
  const c = valor.replace(/[.\/-]/g, '').toUpperCase();
  if (!/^[A-Z0-9]{12}\d{2}$/.test(c) || /^(.)\1+$/.test(c)) return false;
  const d1 = dv(c.slice(0, 12));
  return c.slice(12) === `${d1}${dv(c.slice(0, 12) + d1)}`;
}

export function gerarCnpj(alfanumerico = false): string {
  const pool = alfanumerico ? CHARS : CHARS.slice(0, 10);
  const limite = 256 - (256 % pool.length); // evita viés de módulo
  let raiz = '';
  while (raiz.length < 8) {
    const [b] = crypto.getRandomValues(new Uint8Array(1));
    if (b < limite) raiz += pool[b % pool.length];
  }
  const base = raiz + '0001';
  const d1 = dv(base);
  return `${base}${d1}${dv(base + d1)}`;
}

export const mascarar = (c: string) =>
  c.replace(/^(.{2})(.{3})(.{3})(.{4})(.{2})$/, '$1.$2.$3/$4-$5');

Perguntas sobre o validador de CNPJ

Não achou a resposta? A regra oficial está no link da Receita Federal no rodapé.

Como validar CNPJ online?

Cole um ou vários CNPJs no campo acima, um por linha, com ou sem máscara. O validador confere o tamanho, os caracteres, as sequências repetidas e os dois dígitos verificadores, e mostra o motivo de cada erro.

O validador aceita CNPJ alfanumérico?

Sim. Ele valida CNPJs numéricos e alfanuméricos com a mesma regra oficial: cada caractere vale o seu código ASCII menos 48 e os DVs são calculados por módulo 11.

CNPJ válido aqui significa que a empresa existe?

Não. A validação só confirma que o número está bem formado e que os dígitos verificadores batem. Para saber se a empresa existe e está ativa, consulte o cadastro na Receita Federal.

O que significa DV incorreto?

Os dois últimos dígitos não correspondem ao cálculo feito com os 12 primeiros caracteres. Normalmente é erro de digitação ou um número inventado. O validador mostra qual seria o DV correto.

Por que 00.000.000/0000-00 aparece como inválido?

Sequências de um único caractere repetido passam na conta do DV, mas não são CNPJs reais. Por isso o validador, como a maioria dos sistemas, as rejeita.

Os CNPJs que eu colo são enviados para algum lugar?

Não. A validação acontece no seu navegador e nada é enviado ao servidor.

Outras ferramentas

Precisa de CNPJs para testar? Gere quantos quiser.