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
| Cifras | Ejemplo | Qué son |
|---|---|---|
| 1 y 2 | 12 | La subdelegación del IMSS donde se asignó el número |
| 3 y 4 | 34 | Las dos últimas cifras del año de alta en el IMSS |
| 5 y 6 | 56 | Las dos últimas cifras del año de nacimiento |
| 7 a 10 | 7890 | Un folio consecutivo dentro de la subdelegación |
| 11 | 3 | El 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:
| Cifra | Por | Producto | Cuenta |
|---|---|---|---|
1 | 1 | 1 | 1 |
2 | 2 | 4 | 4 |
3 | 1 | 3 | 3 |
4 | 2 | 8 | 8 |
5 | 1 | 5 | 5 |
6 | 2 | 12 | 12 − 9 = 3 |
7 | 1 | 7 | 7 |
8 | 2 | 16 | 16 − 9 = 7 |
9 | 1 | 9 | 9 |
0 | 2 | 0 | 0 |
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.