Como validar um IMEI: algoritmo de Luhn explicado

Como validar um IMEI: algoritmo de Luhn explicado

Verifique o formato de 15 dígitos e a soma Luhn com um exemplo e vetores QA. Este teste não verifica atribuição, propriedade nem lista negra.

Random IMEI Editorial Team · 2026-05-25 · Atualizado em 2026-08-05 · Revisão editorial interna (2026-08-05)

Neste guia, "válido" significa que um candidato contém 15 dígitos e o último coincide com a soma de verificação Luhn dos primeiros 14. Isso não estabelece atribuição, propriedade, desbloqueio, modelo nem estado em lista negra.

O cálculo detalhado e o validador de IMEI testam apenas esse contrato de formato.


O que "válido" realmente significa

Um IMEI passa na validação quando satisfaz três condições:

  1. Comprimento — um candidato IMEI tem exatamente 15 dígitos. IMEISV é um identificador separado de 16 dígitos com dois dígitos de versão de software no lugar do dígito verificador IMEI.
  2. Caracteres — após normalizar os separadores permitidos, restam apenas dígitos 09.
  3. Soma de verificação — o último dígito (dígito 15) coincide com o valor que o algoritmo de Luhn calcula a partir dos primeiros 14 dígitos.

O dígito verificador é derivado dos demais. Luhn detecta qualquer substituição de um dígito e a maioria das transposições adjacentes, mas é uma soma de verificação para detectar erros, não uma prova de identidade.

Passar no Luhn não prova que o identificador foi atribuído, pertence ao telefone apresentado ou consta de uma lista negra. Para fontes de situação, consulte o guia de verificação de IMEI na lista negra.


A forma mais rápida: usar um validador

Se você só precisa de uma resposta de sim ou não, pule a matemática:

  1. Abra o validador de IMEI.
  2. Cole o número de 15 dígitos (espaços e hífens são removidos automaticamente).
  3. Leia o resultado — válido ou inválido — junto com um detalhamento do TAC, do número de série e do dígito verificador.

Essa abordagem é adequada para verificações pontuais, inclusive por usuários não técnicos. Entender o cálculo também ajuda a identificar dados incorretos.


O algoritmo de Luhn, passo a passo

Luhn é uma soma de verificação de módulo 10 usada para IMEIs e outros identificadores. Para um candidato IMEI de 15 dígitos, aplique este procedimento.

Passo 1 — Pegue os primeiros 14 dígitos

O 15º dígito é o dígito verificador; você o comparará no final. Trabalhe com os dígitos de 1 a 14.

Passo 2 — Dobre um dígito a cada dois

Começando pelo dígito mais à direita desses 14 e seguindo para a esquerda, dobre um dígito a cada dois. (De forma equivalente, dobre os dígitos nas posições pares contando a partir da esquerda.)

Passo 3 — Reduza os resultados de dois dígitos

Se a duplicação produzir um número maior que 9, subtraia 9 (ou some os dois dígitos entre si — mesmo resultado). Assim 12 vira 3, 16 vira 7, 10 vira 1.

Passo 4 — Some tudo

Some todos os dígitos processados: os dobrados e reduzidos mais os que ficaram intactos.

Passo 5 — Calcule o dígito verificador

Encontre o próximo múltiplo de 10 igual ou superior à sua soma e, em seguida, subtraia a soma. Esse resultado é o dígito verificador esperado. Se ele for igual ao 15º dígito do seu IMEI, o número é válido. Se o total já for um múltiplo de 10, o dígito verificador é 0.


Um exemplo completo

Vamos validar o IMEI 35 824011 345678 4. Os primeiros 14 dígitos são:

3 5 8 2 4 0 1 1 3 4 5 6 7 8

Dobre um dígito a cada dois (os dígitos nas posições 2, 4, 6, 8, 10, 12, 14 a partir da esquerda — 5, 2, 0, 1, 4, 6, 8):

Original Dobrado Reduzido
5 10 1
2 4 4
0 0 0
1 2 2
4 8 8
6 12 3
8 16 7

Agora intercale-os com os dígitos de posição ímpar intactos (3, 8, 4, 1, 3, 5, 7), mantendo cada dígito na sua posição original:

3, 1, 8, 4, 4, 0, 1, 2, 3, 8, 5, 3, 7, 7

Soma: 3 + 1 + 8 + 4 + 4 + 0 + 1 + 2 + 3 + 8 + 5 + 3 + 7 + 7 = 56.

Dígito verificador: o próximo múltiplo de 10 igual ou superior a 56 é 60, então 60 − 56 = 4.

O dígito verificador calculado é 4, e o 15º dígito do nosso IMEI também é 4. Eles coincidem, então 358240113456784 é um IMEI válido. (Este é o mesmo passo a passo que a calculadora da página inicial executa no servidor para cada número que gera.)

Vetores QA que separam formato e identidade

Candidato Resultado de formato Interpretação
490154203237518 Aprovado Controle Luhn positivo; atribuição desconhecida
490154203237519 Reprovado Dígito verificador alterado de 8 para 9
000000000000000 Aprovado Mostra que Luhn não prova identidade
49015420323751 Reprovado Apenas 14 dígitos; falta o verificador
4901542032375180 Não é candidato IMEI Dezesseis dígitos exigem contrato IMEISV separado

Para testes automatizados reutilizáveis, baixe os vetores JSON CC0 ou consulte o contrato e suas limitações (em inglês).


Motivos comuns para um IMEI falhar na validação

Causas comuns de falha de formato incluem:

  • Erro de transcrição — Luhn detecta um dígito alterado e muitas transposições adjacentes.
  • Comprimento errado — 14 dígitos não têm o verificador; 16 devem ser analisados por um contrato IMEISV separado.
  • Caracteres ocultos — um espaço, hífen ou espaço sem quebra perdido, colado de uma planilha. Normalize apenas espaços, separadores Unicode e hífens ASCII; rejeite qualquer outro caráter.
  • Não é um IMEI — um número de série, um MEID ou uma sequência aleatória confundida com um IMEI. Um valor de preenchimento pode passar no Luhn, como mostra o vetor de zeros. Rejeite-o com uma regra de negócio explícita, sem tratar Luhn como base de atribuições.

Verificar IMEIs em grande escala

Validar um número é fácil. Validar milhares — em um fluxo de QA, em uma tarefa de triagem de fraude ou em um script de limpeza de dados — exige automação. A lógica é pequena o suficiente para ser implementada em qualquer linguagem. Aqui está a verificação de Luhn essencial em JavaScript:

function isValidImei(imei) {
  const digits = String(imei).replace(/[\s\p{Z}-]+/gu, '');
  if (!/^[0-9]{15}$/.test(digits)) return false;
  let sum = 0;
  for (let i = 0; i < 15; i++) {
    let d = Number(digits[i]);
    // Dobre um dígito a cada dois, começando pela direita.
    if ((15 - i) % 2 === 0) {
      d *= 2;
      if (d > 9) d -= 9;
    }
    sum += d;
  }
  return sum % 10 === 0;
}

Repare nesta propriedade elegante: se você incluir o dígito verificador na soma e o total for divisível por 10, o IMEI é válido. É a mesma regra, expressa em uma única linha.

Para obter dados de teste estruturalmente válidos, Random IMEI gera lotes com prefixos da sua cópia local de TAC, datada e não oficial. Exporte-os apenas para testes isolados.


Validação e geração têm contratos distintos

  • Validar responde "este número existente está bem formado?" Use o validador de IMEI.
  • Gerar produz novos números válidos para testes. Use o gerador.

As equipes de QA usam os dois: geram um lote de IMEIs válidos como dados de teste e, em seguida, confirmam que sua aplicação os valida corretamente (e rejeita os defeituosos que criaram de propósito).


Perguntas Frequentes

Como verifico se um IMEI é válido?

Confirme que ele tem exatamente 15 dígitos, contém apenas números e que o último dígito coincide com a soma de verificação de Luhn dos primeiros 14. O método mais rápido é colá-lo no validador de IMEI, que faz as três verificações instantaneamente.

O que é o algoritmo de Luhn?

O algoritmo de Luhn (módulo 10) é uma fórmula de soma de verificação que detecta erros acidentais em números de identificação. Para IMEIs, ele confere se o 15º dígito é matematicamente coerente com os outros 14, capturando a maioria dos erros de digitação de um único dígito e das transposições.

Um IMEI válido significa que o telefone é genuíno?

Não. A validação confirma apenas a coerência interna entre formato e soma de verificação. Não estabelece atribuição, modelo, propriedade nem lista negra. Use uma fonte autorizada para essas perguntas.

Por que meu IMEI falha na validação?

As causas mais comuns são um dígito digitado errado, o comprimento errado (14 ou 16 em vez de 15), ou separadores copiados de outro aplicativo. Remova apenas espaços, separadores Unicode e hífens ASCII; rejeite qualquer outro caractere e verifique o comprimento.

Posso validar um IMEI offline?

Sim. A verificação de Luhn é uma aritmética simples que não precisa de conexão com a internet nem de banco de dados. Você pode calculá-la à mão, em uma planilha ou com algumas linhas de código como o exemplo acima.

Um número de 14 dígitos pode ser um IMEI válido?

Não. Um IMEI padrão tem 15 dígitos. Um valor de 14 dígitos está sem o dígito verificador (pode ser apenas o TAC mais o número de série). O IMEISV de 16 dígitos é uma variante distinta que substitui o dígito verificador por um número de versão de software de 2 dígitos.

Onde posso obter IMEIs válidos para testes?

Gere-os. O gerador Random IMEI cria valores de 15 dígitos com prefixos da cópia local datada e dígitos verificadores Luhn corretos. Cada resultado passa nesta validação estrutural, mas o mapeamento não é uma consulta oficial.

Fontes e leituras adicionais

Experimente nossas ferramentas

Crie fixtures válidas por Luhn ou verifique o formato de 15 dígitos e checksum de um valor.