Pular para o conteúdo
Volver al blog
Guía 19 de junio de 2026 9 min de lectura

Cómo Validar y Calcular el Dígito Verificador del CNPJ

La guía técnica del dígito verificador del CNPJ en el formato alfanumérico: el algoritmo del módulo 11, la tabla de conversión de los caracteres (ASCII − 48), un ejemplo resuelto paso a paso y código JavaScript listo para validar numérico y alfanumérico.

Una calculadora y una planilla sobre un escritorio, representando el cálculo del dígito verificador del CNPJ

Los dos últimos dígitos de un CNPJ no se eligen: se calculan a partir de los doce primeros. Eso es lo que permite a un sistema detectar al instante un número mal escrito, sin consultar ninguna base. Con el CNPJ alfanumérico llegando en 2026, ese cálculo también debe manejar letras — y esta guía muestra exactamente cómo.

Abajo está el algoritmo completo, la tabla de conversión de los caracteres, un ejemplo resuelto y una función en JavaScript que valida tanto el formato numérico como el alfanumérico. Si solo quieres comprobar un número, usa el Validador de CNPJ Alfanumérico, que muestra cada etapa del cálculo en pantalla.

El algoritmo: módulo 11, paso a paso

El dígito verificador (DV) del CNPJ usa el algoritmo del módulo 11. Se calcula en dos etapas — una para cada dígito — siguiendo siempre los mismos pasos:

  1. Convierte cada carácter de la base en un número (la regla de conversión está en la próxima sección).
  2. Multiplica cada valor por un peso, que va de 2 a 9 de derecha a izquierda y vuelve a 2 cuando pasa de 9.
  3. Suma todos los productos.
  4. Calcula el resto de la división de esa suma entre 11. Si el resto es menor que 2, el dígito es 0; si no, el dígito es 11 menos el resto.

El primer DV usa las 12 posiciones de la base. El segundo DV repite exactamente el mismo proceso, pero incluyendo el primer dígito ya calculado como 13.º carácter.

La tabla de conversión de los caracteres

Lo que cambia en el CNPJ alfanumérico es solo cómo cada carácter se convierte en un número. La regla es simple y única: toma el código ASCII del carácter y resta 48. Eso mantiene los dígitos intactos y da un valor consistente a cada letra.

Valor de cada carácter (código ASCII − 48)
CarácterValor en el cálculo
0 a 90 a 9 (sin cambio)
A, B, C, D …17, 18, 19, 20 …
… W, X, Y, Z… 39, 40, 41, 42

Fonte: Especificación del CNPJ alfanumérico (Serpro / Receita Federal).

Ejemplo resuelto: 12.ABC.345/01DE-35

Vamos a calcular los dígitos de la base 12ABC34501DE, el ejemplo oficial. Cada carácter se convierte en un valor (1, 2, 17, 18, 19, 3, 4, 5, 0, 1, 20, 21), que se multiplica por el peso de su posición y se suma.

  • 1.er dígito: la suma de los productos da 459. El resto de 459 entre 11 es 8. Como 8 es mayor que 2, el dígito es 11 − 8 = 3.
  • 2.º dígito: repitiendo la cuenta con el 3 incluido (12ABC34501DE3), la suma da 424. El resto de 424 entre 11 es 6, así que el dígito es 11 − 6 = 5.

Juntando los dos, el CNPJ completo es 12.ABC.345/01DE-35. Puedes comprobar este mismo paso a paso, con la tabla de pesos y productos, abriendo “Ver el cálculo del dígito verificador” en el validador.

Código listo en JavaScript

La función de abajo valida un CNPJ numérico o alfanumérico. Limpia la puntuación, separa la base de los dígitos verificadores, recalcula el DV con el módulo 11 y lo compara con el informado:

function digito(base) {
  let suma = 0;
  let peso = 2;
  for (let i = base.length - 1; i >= 0; i--) {
    suma += (base.charCodeAt(i) - 48) * peso;
    peso = peso === 9 ? 2 : peso + 1;
  }
  const resto = suma % 11;
  return resto < 2 ? 0 : 11 - resto;
}

function cnpjValido(valor) {
  const cnpj = valor.toUpperCase().replace(/[^0-9A-Z]/g, '');
  if (cnpj.length !== 14) return false;
  const base = cnpj.slice(0, 12);
  const dv1 = digito(base);
  const dv2 = digito(base + dv1);
  return cnpj.slice(12) === String(dv1) + String(dv2);
}

cnpjValido('12.ABC.345/01DE-35'); // true

Fíjate en que la función funciona para los dos formatos sin ramificaciones: como los dígitos 0 a 9 también pasan por la conversión ASCII − 48 (y siguen valiendo 0 a 9), el CNPJ numérico es solo un caso particular del mismo algoritmo.

Errores comunes al implementar

  • Usar parseInt en las letras. Las letras no son dígitos — la conversión correcta es por el código ASCII menos 48, no por un parse numérico.
  • Olvidar incluir el 1.er DV en el cálculo del 2.º. El segundo dígito siempre usa 13 caracteres: la base más el primer dígito.
  • Aceptar dígitos verificadores con letra. Las 12 primeras posiciones pueden tener letras, pero los 2 últimos caracteres son siempre numéricos.
  • Guardar el CNPJ como número. Los ceros a la izquierda y las letras se pierden — trata siempre como texto de 14 caracteres.

Validar y generar sin reimplementar

Si prefieres no mantener el algoritmo a mano, puedes usar las herramientas listas: el Validador de CNPJ Alfanumérico comprueba cualquier número y muestra el cálculo, y el Generador de CNPJ Alfanumérico crea CNPJ válidos de prueba, en lote, para poblar tus entornos de homologación. Para el panorama completo del cambio, mira la guía sobre el nuevo formato del CNPJ en 2026.

Referências e leitura complementar

  1. Serpro (2024). Cálculo dos dígitos verificadores do CNPJ alfanumérico. Serviço Federal de Processamento de Dados link .
  2. Receita Federal do Brasil (2024). CNPJ Alfanumérico — Perguntas e Respostas. gov.br / Ministério da Fazenda link .

Conoce a tu primer competidor en minutos

Prueba de 14 días, sin tarjeta. En pocos minutos, la primera detección aparece en tu panel.

Crear cuenta gratis
Compartir:
Hora de salir a campo

Aplícalo ahora mismo.

Prueba de 14 días, sin tarjeta. En pocos minutos la primera detección aparece en tu panel.