Validador de IMEI: comprueba si el IMEI de un celular está bien escrito

Escribe o pega el IMEI de un teléfono y el validador comprueba su dígito verificador y separa sus partes: el TAC, que identifica la marca y el modelo, y el número de serie de cada aparato. Sirve para descubrir una cifra mal copiada antes de comprar un celular usado, de llenar una garantía o de reportar un robo. Todo se calcula en tu navegador: el IMEI no se envía a ningún sitio.

Un IMEI válido no garantiza que el teléfono sea original ni dice si está reportado como robado. El dígito verificador solo detecta errores al copiarlo. Si vas a comprar un celular usado, comprueba que el IMEI que muestra el teléfono coincida con el de la caja y la factura, y pregunta a tu compañía telefónica si está bloqueado.

Dónde ver el IMEI

  • Marcando *#06# en la aplicación de teléfono. Funciona en casi todos los celulares.
  • En los ajustes: en Android, en Ajustes → Acerca del teléfono; en el iPhone, en Configuración → General → Información.
  • En la caja, la factura o la bandeja de la SIM de algunos modelos.
  • Si el teléfono tiene dos SIM, tiene dos IMEI, uno por cada ranura. Los dos son válidos.

Qué comprueba el validador

  • Que tenga 15 cifras. Si tiene 14, te dice cuál sería el dígito verificador que falta. Puedes escribirlo con espacios, guiones o barras.
  • El dígito verificador, la última cifra, calculado con el algoritmo de Luhn. Detecta cualquier cifra mal copiada y casi todos los intercambios de dos cifras seguidas.
  • El IMEISV: si tiene 16 cifras, es la variante con la versión del software. Sus dos últimas cifras son esa versión y no lleva dígito verificador, así que el validador calcula el IMEI de 15 cifras que le corresponde.
  • Los IMEI de prueba: los que empiezan por 00 están reservados a prototipos, y un teléfono a la venta no debería tener uno.

El botón Generar un IMEI de prueba crea números con el formato de prueba de la GSMA (00 44 y ocho cifras más, y el verificador). Nunca coinciden con el de un teléfono comercial y sirven para probar formularios y sistemas.

Qué significa cada cifra del IMEI

  • Cifras 1 a 8, el TAC (código de asignación de tipo): identifica la marca y el modelo. Lo asigna al fabricante un organismo autorizado por la GSMA, y lo comparten todos los teléfonos del mismo modelo.
  • Cifras 1 y 2: el organismo que asignó el TAC. Los más comunes hoy son 35 (TÜV SÜD/BABT, Reino Unido; lo llevan muchos teléfonos de Apple y Samsung), 86 (TAF, China) y 01 (CTIA, Estados Unidos).
  • Cifras 9 a 14: el número de serie, distinto en cada aparato.
  • Cifra 15: el dígito verificador.

Cómo se calcula el dígito verificador

Con las 14 primeras cifras, empezando por la derecha, se duplica una sí y otra no (en el IMEI son las cifras en posición par: la 2.ª, la 4.ª…). Si un doble pasa de 9, se le restan 9. Se suma todo, y el verificador es lo que falta para llegar a la siguiente decena.

Con el IMEI de ejemplo, 49015420323751, las cifras que se duplican son 9, 1, 4, 0, 2, 7 y 1. Sus dobles son 18, 2, 8, 0, 4, 14 y 2; restando 9 a los que pasan de 9, quedan 9, 2, 8, 0, 4, 5 y 2, que suman 30. Las demás, 4, 0, 5, 2, 3, 3 y 5, suman 22. El total es 52, y para llegar a 60 faltan 8: el IMEI completo es 490154203237518.

Validar un IMEI en Python

def luhn_digito(cuerpo):
    suma = 0
    for i, c in enumerate(reversed(cuerpo)):
        d = int(c) * (2 if i % 2 == 0 else 1)
        suma += d - 9 if d > 9 else d
    return str((10 - suma % 10) % 10)


def imei_valido(imei):
    imei = imei.replace(" ", "").replace("-", "").replace("/", "")
    return len(imei) == 15 and imei.isdigit() and imei[14] == luhn_digito(imei[:14])


def partes(imei):
    return {"tac": imei[:8], "organismo": imei[:2], "serie": imei[8:14], "verificador": imei[14:]}


print(imei_valido("49-015420-323751-8"))   # True
print(imei_valido("490154203237519"))      # False
print(luhn_digito("49015420323751"))       # 8
print(partes("490154203237518"))
$ python3 imei.pyTrue
False
8
{'tac': '49015420', 'organismo': '49', 'serie': '323751', 'verificador': '8'}

Otros validadores con el mismo algoritmo: tarjetas bancarias y NSS. Todas las herramientas, en decodigo.com/herramientas.

Formato del IMEI, dígito verificador, IMEISV, IMEI de prueba y lista de organismos: GSMA, TS.06 «IMEI Allocation and Approval Process», v27.0, secciones 5 y 9 y anexos A y C. IMEI de ejemplo: Wikipedia. El cálculo se comparó con la biblioteca de Python python-stdnum en 20,000 números al azar: coinciden en todos.