Calcular dígito de control EAN-13, UPC-A y Code 128
El dígito de control de un código de barras es una pequeña protección aritmética que ayuda a los lectores y sistemas de catálogo a detectar errores de escritura.
Ejecutar — gratis
Introduzca la carga numérica, elija EAN-13, UPC-A o Code 128 Mod-103 y esta calculadora devolverá el valor exigido por esa simbología. La herramienta comprueba la longitud antes de calcular, conserva los ceros iniciales y trabaja de forma determinista sin consultar registros. Úsela al preparar fichas de producto, etiquetas, pruebas o procesos automáticos de importación.
Introduzca la carga útil, no un código ya completo
Empiece con los dígitos que contienen los datos y omita el dígito de control que desea calcular. Para EAN-13, introduzca exactamente doce dígitos de datos; el resultado proporciona el decimotercero y también devuelve el código completo de trece dígitos. Para UPC-A, introduzca exactamente once y obtendrá el duodécimo. En la API, conserve el valor como texto para que cualquier cero inicial siga formando parte del código. La calculadora rechaza espacios, signos, puntos decimales y cualquier carácter no numérico, ya que una limpieza silenciosa podría ocultar un error de transcripción. También rechaza cargas cuya cantidad de dígitos no corresponda a la simbología elegida. Este contrato explícito resulta útil cuando una columna de una hoja de cálculo o un catálogo reúne varios formatos: seleccione el estándar previsto en vez de deducirlo de la entrada. El cálculo solo confirma coherencia matemática; no asigna prefijos empresariales, verifica propiedad ni demuestra que el número esté registrado para un producto real.
Cómo se calculan los dígitos de EAN-13 y UPC-A
EAN-13 y UPC-A emplean el mismo patrón de ponderación módulo diez. Desde el dígito de datos situado más a la derecha hacia la izquierda, la calculadora multiplica las posiciones alternas por tres y uno, suma los productos y elige el dígito que lleva el total al siguiente múltiplo de diez. Si la suma ya es divisible por diez, el dígito de control es cero. Los nombres siguen siendo importantes porque las longitudes obligatorias difieren: EAN-13 tiene doce dígitos de carga antes del control y UPC-A tiene once. Un dígito correcto detecta todas las sustituciones de una sola cifra y muchas transposiciones habituales, por lo que ayuda en capturas y escaneos, pero no constituye una firma criptográfica. Dos o más cambios coordinados pueden conservar el mismo resultado. Trátelo como una comprobación estructural rápida y aplique después las reglas comerciales adicionales de su catálogo. Como la operación usa únicamente aritmética entera fija, una misma entrada y simbología siempre producen idéntica salida tanto en el navegador como mediante la API.
Tratamiento de Code 128 Mod-103 numérico
Para Code 128 Mod-103, esta capacidad utiliza el juego C, la representación compacta destinada a datos numéricos agrupados por parejas. Introduzca una cantidad par de entre dos y noventa y ocho dígitos. Cada pareja se convierte en una palabra de código Code 128 con un valor de cero a noventa y nueve. La suma de control comienza con el valor 105 de Start C y añade cada palabra de datos multiplicada por su posición, empezando en uno. El resto de dividir ese total entre 103 es el valor devuelto. Puede ocupar uno, dos o tres caracteres decimales en la respuesta JSON, pero representa una sola palabra de control Code 128, no dígitos imprimibles que deban añadirse al texto original. Un generador de barras debe codificar esa palabra y agregar después el patrón de parada. Esta calculadora no elige entre los juegos A, B y C ni optimiza cambios entre ellos; aceptar solo dígitos deja la suposición de codificación clara y reproducible. Use otro codificador si hay letras, puntuación o un último dígito impar que requiera cambiar de juego.
Qué puede hacer con ella
Preparar etiquetas de productos
Calcule el último dígito EAN-13 o UPC-A antes de enviar números aprobados al programa de diseño de etiquetas o generación de barras.
Comprobar un proceso de importación
Genere valores esperados para pruebas de catálogos y rechace registros cuya longitud no coincida con el estándar declarado.
Crear pruebas numéricas de Code 128
Obtenga la palabra de control Mod-103 del juego C al probar lectores, codificadores, etiquetas de almacén o integraciones.
Preguntas frecuentes
¿Debo incluir el dígito de control existente?
No. Introduzca doce dígitos para EAN-13, once para UPC-A o la carga numérica par de Code 128.
¿Por qué hay que enviar el número como texto?
El texto conserva exactamente los ceros iniciales. Un valor numérico JSON puede perderlos y cambiar la longitud requerida.
¿Un resultado correcto demuestra que el producto está registrado?
No. Solo demuestra que el valor de control cumple la regla aritmética elegida; no consulta registros de productos o empresas.
¿Por qué Code 128 exige una cantidad par de dígitos?
Esta capacidad usa el juego C, que codifica datos numéricos en parejas. El contenido mixto o impar requiere un codificador completo.
¿Cuánto cuesta una solicitud por API?
Cada solicitud por API cuesta $0.002. El mismo cálculo determinista también se ejecuta gratis en el navegador.
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/web/barcode-check-digit \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"number":"400638133393","symbology":"ean13"}'const res = await fetch("https://api.kit.forhosting.com/web/barcode-check-digit", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"number": "400638133393",
"symbology": "ean13"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/barcode-check-digit",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"number": "400638133393",
"symbology": "ean13"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/barcode-check-digit", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"number":"400638133393","symbology":"ean13"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"number":"400638133393","symbology":"ean13"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/barcode-check-digit", 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": "400638133393",
"symbology": "ean13"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.barcode_check_digit",
"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.
Límites
timeout_sec | 30 |
max_crawl_pages | 25 |
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. |