Validador del algoritmo de Luhn
Sepa al instante si una cadena de cifras supera la prueba de Luhn de módulo 10: 79927398713 la supera. Detecta cualquier cifra mal tecleada y la mayoría de los intercambios entre cifras vecinas, sin afirmar que el número exista. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
El validador del algoritmo de Luhn comprueba si una cadena numérica cumple la conocida fórmula de suma de control módulo 10. Envíe los dígitos tal como aparecen, incluidos los ceros iniciales, y recibirá un resultado sencillo: válido o no válido. La capacidad solo valida la suma de control; no identifica al emisor, no confirma que exista una cuenta ni contacta con servicios externos. Las entradas con caracteres que no sean dígitos se rechazan expresamente en vez de limpiarse de forma silenciosa, lo que hace predecible la automatización y ayuda a detectar errores de formato antes de que lleguen a otro sistema.
Qué indica realmente un resultado de Luhn
La suma de control de Luhn es una regla compacta para detectar errores en secuencias de dígitos decimales. Desde la derecha, el algoritmo conserva el dígito de control, duplica cada segundo dígito, resta nueve cuando el doble tiene dos cifras y suma los valores resultantes. El número es válido si el total es divisible entre diez.
Así se detectan todos los cambios accidentales de un solo dígito y muchas transposiciones adyacentes habituales. Un resultado válido no demuestra que el número haya sido emitido, pertenezca a alguien, esté activo o permita una transacción. Solo indica que la cadena proporcionada es coherente con la fórmula de Luhn.
Esta distinción importa en interfaces y canalizaciones: presente el resultado como validez de la suma de control, no como verificación de identidad o cuenta. El validador conserva la representación textual, incluidos los ceros iniciales, y nunca convierte la entrada en un número de JavaScript; por ello, los identificadores largos mantienen todos sus dígitos sin pérdidas de precisión.
Cómo preparar la entrada e interpretar los errores
Envíe el valor en el campo <code>number</code> como una cadena no vacía formada únicamente por los caracteres del cero al nueve. Se rechazan espacios, guiones, signos de suma, puntos decimales, saltos de línea y letras. Este comportamiento estricto es intencionado.
Eliminar signos de forma silenciosa puede ocultar un defecto de formato anterior, cambiar el significado del texto copiado o hacer que dos sistemas parezcan coincidir aunque recibieran datos distintos. Si el origen presenta valores agrupados, normalícelos deliberadamente en su flujo antes de llamar a esta capacidad y conserve el original cuando necesite trazabilidad. No convierta primero la cadena en entero: podría eliminar ceros iniciales y redondear valores largos.
Una llamada correcta siempre devuelve un objeto con un campo booleano llamado <code>valid</code>. <code>true</code> significa que el total es divisible entre diez; <code>false</code>, que la entrada es sintácticamente correcta pero no supera la suma de control. Un error de entrada es distinto de un resultado falso y normalmente requiere corrección o revisión.
Cómo usar una validación determinista en aplicaciones
Utilice este validador en los límites por los que las cadenas numéricas entran en un sistema: envío de formularios, importaciones por lotes, migraciones, generación de datos de prueba o pruebas de integración. En formularios interactivos, ejecute la versión del navegador cuando la persona termine de introducir el valor y explique que la comprobación detecta errores probables sin demostrar que exista una cuenta. En una importación, trate los errores de caracteres como registros mal formados y los resultados falsos como registros bien formados cuya suma no coincide.
Separar ambos casos mejora los informes y conserva diagnósticos útiles. El algoritmo es determinista, no usa red, no consulta el reloj ni genera valores aleatorios; una misma entrada siempre produce la misma salida. Tampoco aplica reglas de longitud o prefijo propias de un emisor: cualquier cadena no vacía de dígitos recibe el mismo cálculo.
Si su dominio exige longitudes, prefijos, titularidad o estado en tiempo real, aplique esas reglas por separado.
Qué puede hacer con ella
Detectar errores de captura
Compruebe una cadena al enviar el formulario y distinga una suma incorrecta de una entrada con letras o signos.
Validar importaciones por lotes
Aplique la misma regla determinista a cada registro entrante antes de iniciar el procesamiento posterior.
Crear datos de prueba fiables
Confirme que cadenas válidas y no válidas se comportan siempre igual en las pruebas de integración sin depender de la red.
Preguntas frecuentes
¿Qué significa un resultado válido?
Significa que la cadena cumple la suma de control módulo 10 de Luhn. No confirma emisión, titularidad, estado de cuenta ni aptitud para transacciones.
¿Puede incluir espacios o guiones la entrada?
No. Debe contener solo dígitos. Normalice expresamente los valores con formato antes de enviarlos.
¿Se conservan los ceros iniciales?
Sí. La entrada se procesa como cadena y nunca se convierte en un tipo numérico.
¿Exige el validador una longitud concreta?
No. Evalúa cualquier cadena no vacía de dígitos. Las reglas de longitud del dominio deben aplicarse aparte.
¿Cómo se calcula el dígito de control de Luhn?
Empezando por la derecha, se deja la última cifra como está y se duplica una de cada dos de las siguientes. Si al duplicar sale un número de dos cifras, se le resta 9. Se suma todo: la cadena es válida si el total es divisible entre 10.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/math/luhn \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"number":"79927398713"}'const res = await fetch("https://api.kit.forhosting.com/math/luhn", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"number": "79927398713"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/luhn",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"number": "79927398713"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/luhn", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"number":"79927398713"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"number":"79927398713"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/luhn", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"number": "79927398713"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.luhn",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Cómo usar una validación determinista en aplicaciones
Las llamadas API usan el precio base publicado de $0.002.
Preguntas técnicas
¿Cuánto cuesta una llamada a la API?
Cada solicitud usa el precio base publicado de $0.002. La experiencia del navegador puede ejecutar localmente la misma lógica determinista.