Gerador e validador de CNPJ
Gera e valida CNPJ nos dois formatos: o numérico de sempre e o alfanumérico, em vigor desde julho de 2026 pela IN RFB nº 2.229/2024. Tudo no seu navegador — nada é enviado para nenhum servidor.
Gerador e validador
0 gerado(s)
O CNPJ alfanumérico, e o que ele quebra
Desde julho de 2026, as 12 primeiras posições do CNPJ — os 8 da raiz e os 4 da ordem do estabelecimento — podem conter letras. As duas últimas, os dígitos verificadores, continuam numéricas. Os CNPJs já emitidos não mudam: o formato novo vale para os que vierem.
O impacto no código é maior do que parece, porque quase todo sistema brasileiro trata CNPJ como número em algum ponto do caminho:
// O que quebrou com o CNPJ alfanumérico, e vale conferir no seu código hoje:
long cnpj; // não cabe mais: pode ter letra
Regex.IsMatch(valor, @"^\d{14}$"); // recusa CNPJ válido a partir de agora
cnpj.ToString("00000000000000"); // formatação numérica não se aplica
[Column(TypeName = "bigint")] // coluna precisa virar char(14)/varchar(14)
long.TryParse(cnpj, out _); // falha em todo CNPJ com letra
// O certo passa a ser string em todo o caminho:
[MaxLength(14)] public string Cnpj { get; set; } = string.Empty;
Regex.IsMatch(valor, "^[0-9A-Z]{12}[0-9]{2}$");Vale procurar por bigint, long e por expressões regulares com \d{14} no seu projeto hoje. Cada uma dessas passa a recusar CNPJ válido ou a estourar exceção — e o pior é que não quebra agora: quebra no dia em que o primeiro cliente com CNPJ alfanumérico tentar se cadastrar.
Como o dígito verificador funciona
A fórmula não mudou: continua módulo 11, com pesos atribuídos da direita para a esquerda de 2 a 9, reiniciando em 2 depois do nono. Some, tome o resto da divisão por 11, e o dígito é zero se o resto for menor que 2 ou 11 menos o resto caso contrário. O segundo dígito repete tudo com o primeiro já acrescentado ao fim.
O que mudou é como cada caractere vira número: em vez do valor do dígito, usa-se o código ASCII menos 48. Como o código de '0' é justamente 48, os dígitos continuam valendo o que sempre valeram, e as letras entram na sequência — A vale 17, B vale 18, e assim por diante.
A consequência prática é elegante: o CNPJ numérico é um caso particular do alfanumérico, e uma implementação só atende os dois. Repare no - '0' do código abaixo — ele já é o "ASCII menos 48".
// Vale para o CNPJ numérico E para o alfanumérico: a única diferença é que o valor
// de cada caractere é o código ASCII menos 48 — '0' vale 0, '9' vale 9, 'A' vale 17.
static int DigitoCnpj(string baseCnpj)
{
var soma = 0;
var peso = 2;
for (var i = baseCnpj.Length - 1; i >= 0; i--)
{
soma += (baseCnpj[i] - '0') * peso; // '0' == 48, então isto É o ASCII - 48
peso = peso == 9 ? 2 : peso + 1;
}
var resto = soma % 11;
return resto < 2 ? 0 : 11 - resto;
}Perguntas frequentes
O que é o CNPJ alfanumérico e desde quando ele vale?
É o novo formato do CNPJ, instituído pela Instrução Normativa RFB nº 2.229/2024 e em vigor desde julho de 2026. Ele continua com 14 posições, mas as 12 primeiras — os 8 da raiz e os 4 da ordem do estabelecimento — passam a aceitar letras além de números. As duas últimas posições, os dígitos verificadores, continuam numéricas. Os CNPJs já existentes não mudam: o formato alfanumérico vale para os novos.
O cálculo do dígito verificador mudou com o CNPJ alfanumérico?
A fórmula não mudou: continua sendo módulo 11 com os mesmos pesos, atribuídos da direita para a esquerda de 2 a 9 e reiniciando em 2. O que mudou é como cada caractere vira número: em vez do valor do dígito, usa-se o código da tabela ASCII menos 48. Como o código ASCII de '0' é 48, os dígitos continuam valendo o que sempre valeram, e as letras entram na sequência — 'A' vale 17, 'B' vale 18, e assim por diante. Por isso o CNPJ numérico é um caso particular do alfanumérico, e uma implementação só atende os dois.
O que o CNPJ alfanumérico quebra no meu código?
Tudo que trata CNPJ como número. Coluna bigint no banco, propriedade long na entidade, long.TryParse na leitura, formatação com máscara numérica e — o mais comum de todos — validação por expressão regular do tipo circunflexo, barra-d chaves quatorze. Cada um desses passa a recusar CNPJ válido ou a estourar exceção. A correção é tratar CNPJ como texto de ponta a ponta, com no máximo 14 posições, e validar por [0-9A-Z] nas doze primeiras e [0-9] nas duas últimas.
Como o dígito verificador do CNPJ é calculado?
São dois dígitos por módulo 11. Para o primeiro, percorra as 12 posições da base da direita para a esquerda multiplicando por pesos que vão de 2 a 9 e reiniciam em 2 depois do nono; some tudo e tome o resto da divisão por 11. Se o resto for menor que 2, o dígito é zero; senão é 11 menos o resto. Para o segundo, acrescente o primeiro dígito ao fim, formando 13 posições, e repita o processo.
Outras ferramentas
Veja também o gerador de CPF e o gerador de RG. Todas em ferramentas para desenvolvedor.
Receba os próximos artigos
Conteúdo técnico de .NET direto no seu e-mail. Sem spam, e você sai quando quiser.