AZ Tools
← Guías

Cómo funcionan los dígitos de control de los códigos de barras (EAN-13, UPC-A, EAN-8)

Casi todos los productos que compras llevan un código de barras cuyo último dígito no forma parte del número de producto en absoluto — es un dígito de control, un único dígito calculado a partir de los demás para detectar errores de escaneo y de escritura. Esta guía explica cómo funciona ese dígito en los tres formatos minoristas más comunes — EAN-13, UPC-A y EAN-8 — con un ejemplo resuelto que puedes seguir a mano.

Para qué sirve un dígito de control

Un dígito de control es una forma de redundancia incorporada. Los dígitos de datos del código de barras ya identifican el producto; el dígito de control no añade información nueva sobre el artículo en sí. En su lugar codifica una relación que debe cumplirse entre todos los dígitos, de modo que si un escáner lee mal una barra o una persona teclea mal un número, la relación se rompe y el error se detecta de inmediato en lugar de aceptarse en silencio.

El esquema que usan los códigos de barras minoristas es el módulo 10 de GS1. Es deliberadamente simple — un puñado de multiplicaciones y una resta — porque un escáner de caja debe verificarlo miles de veces al día, de forma instantánea y fiable.

El algoritmo módulo 10 de GS1

Toma todos los dígitos excepto el dígito de control final. Empezando por el más a la derecha de esos dígitos de datos y avanzando hacia la izquierda, multiplica los dígitos alternando por 3 y por 1. Suma todos los productos. El dígito de control es el valor que debes añadir a esa suma para alcanzar el siguiente múltiplo de diez.

Como fórmula: control = (10 − (suma ponderada mod 10)) mod 10. El 'mod 10' exterior maneja el caso en que la suma ya es múltiplo de diez, lo que hace que el dígito de control sea cero.

  • Los pesos alternan 3, 1, 3, 1 … empezando por el dígito de datos más a la derecha.
  • Solo el último dígito es el dígito de control; todo lo anterior son datos.
  • El mismo algoritmo se usa para EAN-13, UPC-A y EAN-8 — solo cambia la longitud.

Un ejemplo resuelto

Toma los datos EAN-13 400638133393 (doce dígitos; el decimotercero será el dígito de control). Leyendo desde la derecha y ponderando 3, 1, 3, 1 …, los productos son 3×3 + 9×1 + 3×3 + 3×1 + 3×3 + 1×1 + 8×3 + 3×1 + 6×3 + 0×1 + 0×3 + 4×1, que suman 89.

El siguiente múltiplo de diez por encima de 89 es 90, así que el dígito de control es 90 − 89 = 1. El código de barras completo y válido es 4006381333931. Si un escáner hubiera leído el último dígito como un 7, el control recalculado no coincidiría y la lectura se rechazaría en el acto.

Por qué ponderar por 3 detecta más errores

El peso alterno de 3 no es arbitrario. Una simple suma de dígitos detectaría cualquier dígito equivocado, pero pasaría por alto un error humano muy común: transponer dos dígitos adyacentes, como teclear 21 como 12. Multiplicar las posiciones alternas por 3 da a los vecinos transpuestos pesos distintos, de modo que la mayoría de las transposiciones cambian el total y se detectan.

Ningún dígito de control único puede detectar todos los errores posibles — el módulo 10 con peso 3 pasa por alto las transposiciones de dos dígitos que difieren en 5, y cualquier par de errores que se cancelen entre sí. Es una salvaguarda barata y rápida contra los errores más frecuentes, no una garantía criptográfica.

EAN-13, UPC-A y EAN-8

Los tres formatos difieren solo en la longitud. EAN-13 tiene 12 dígitos de datos más 1 de control y es el estándar mundial. UPC-A, común en Norteamérica, tiene 11 dígitos de datos más 1 de control — y es en realidad un EAN-13 con un cero inicial. EAN-8 comprime 7 dígitos de datos más 1 de control en un símbolo más corto para artículos pequeños donde no cabe un código completo.

Como comparten el algoritmo módulo 10, el mismo cálculo valida los tres; solo necesitas saber cuántos dígitos esperar. Un ISBN de 13 dígitos impreso como código de barras también es un EAN-13 y usa este mismo dígito de control, por lo que el código de un libro se valida igual que el de una lata de alubias.

Herramientas relacionadas