Validador de NSS: comprueba si un número de seguridad social del IMSS está bien escrito

Escribe o pega un número de seguridad social (NSS) del IMSS y el validador comprueba su dígito verificador y te explica qué significa cada una de sus 11 cifras: la subdelegación, el año de alta, el año de nacimiento y el folio. Sirve para descubrir una cifra mal copiada en un formulario o en una nómina. Todo se calcula en tu navegador: el NSS no se envía a ningún sitio.

Un NSS válido no garantiza que exista ni dice de quién es. El dígito verificador solo detecta errores al escribirlo. Para consultar tu NSS o confirmar que está registrado, usa el servicio oficial del IMSS: asignación o localización del NSS.

Qué comprueba el validador

  • Que tenga 11 cifras. Si tiene 10, te dice cuál sería el dígito verificador que falta.
  • El dígito verificador, la última cifra. Detecta cualquier cifra mal copiada y casi todos los intercambios de dos cifras seguidas.
  • Que los años cuadren. Si el año de nacimiento sale posterior al de alta, o el alta sería anterior a 1943, cuando se creó el IMSS, el validador da un aviso: el dígito verificador puede cuadrar por casualidad aunque haya dos cifras cambiadas.

El botón Generar un NSS de prueba crea números al azar, con años posibles y el dígito verificador correcto, para probar formularios y sistemas. No los uses para ningún trámite: podrían coincidir con el de una persona real.

Qué significa cada cifra del NSS

CifrasEjemploQué son
1 y 212La subdelegación del IMSS donde se asignó el número
3 y 434Las dos últimas cifras del año de alta en el IMSS
5 y 656Las dos últimas cifras del año de nacimiento
7 a 107890Un folio consecutivo dentro de la subdelegación
113El dígito verificador

Como los años van con dos cifras, el validador elige el siglo más probable: el año más reciente que no sea futuro y, si así el nacimiento queda después del alta, el siglo anterior para el nacimiento. Es una deducción, no un dato del IMSS. Según el IMSS, el NSS es «único, permanente e intransferible»: es el mismo toda la vida, aunque se cambie de trabajo.

Cómo se calcula el dígito verificador

Se usa el algoritmo de Luhn, el mismo de los números de las tarjetas bancarias. Las 10 primeras cifras se multiplican, alternando, por 1 y por 2. Si un producto pasa de 9, se le restan 9 (o, lo que es igual, se suman sus dos cifras). Con el NSS de ejemplo, 1234567890:

CifraPorProductoCuenta
1111
2244
3133
4288
5155
621212 − 9 = 3
7177
821616 − 9 = 7
9199
0200

La suma es 47. Su última cifra es 7, y el dígito verificador es lo que le falta para llegar a 10: 10 − 7 = 3. Si la última cifra de la suma es 0, el dígito es 0. El NSS completo es 12345678903.

Validar un NSS en Python

def nss_digito(diez):
    """Dígito verificador (Luhn) de las 10 primeras cifras de un NSS."""
    suma = 0
    for i, c in enumerate(diez):
        d = int(c) * (2 if i % 2 else 1)
        suma += d - 9 if d > 9 else d
    return (10 - suma % 10) % 10


def nss_valido(nss):
    nss = nss.replace(" ", "").replace("-", "")
    return len(nss) == 11 and nss.isdigit() and int(nss[10]) == nss_digito(nss[:10])


print(nss_valido("12345678903"))   # True
print(nss_valido("12345678904"))   # False
print(nss_digito("1234567890"))    # 3
$ python3 nss.pyTrue
False
3

Otros validadores: RFC, CURP y CLABE. Para importes en facturas, la cantidad con letra. Todas las herramientas, en decodigo.com/herramientas.

Estructura del NSS: guías de nómina como la de Buk; el IMSS no publica el algoritmo del dígito verificador. El cálculo coincide con el de las bibliotecas de Python mexa y python-stdnum (Luhn) en 3,000 números al azar y 2,000 generados. Fundación del IMSS con la Ley del Seguro Social del 19 de enero de 1943: CNDH.