GuiaNacho G.11 min de lectura

ISO 18004: El Estándar de Código QR Explicado

ISO 18004 es la especificación que sigue cada código QR. Qué define: estructura, modos de codificación, corrección de errores y el sistema de versiones.

ISO 18004: El Estándar de Código QR Explicado

Este articulo fue escrito por el equipo de QR Nova. Desarrollamos software de codigos QR, lo que puede influir en nuestra perspectiva.

Cada código QR que hayas escaneado sigue el mismo estándar. Menú de restaurante, etiqueta de envío, boleto de concierto, identificación gubernamental. Todos. ISO 18004 especifica todo, desde el tamaño de esos tres cuadrados en las esquinas hasta la matemática que permite que un código sobreviva estar roto, sucio o medio cubierto por una etiqueta. La mayoría de los ingenieros trabajan con códigos QR durante años sin abrir la especificación. Esta guía cubre lo que realmente dice, en el lenguaje llano que usarías para explicárselo a un colega tomando un café.

TL;DR

  • ISO/IEC 18004 es la especificación internacional que define exactamente cómo se estructura y decodifica cada código QR.
  • Los códigos QR vienen en 40 versiones (tamaños), desde 21x21 hasta 177x177 módulos.
  • Cuatro modos de codificación, numérico, alfanumérico, byte y kanji, optimizan la densidad de datos para diferentes tipos de contenido.
  • Cuatro niveles de corrección de errores (L, M, Q, H) te permiten intercambiar capacidad de datos por resiliencia al daño.
  • El estándar requiere una zona de silencio de al menos 4 módulos en todos los lados.
  • La edición actual es ISO/IEC 18004:2024, la cuarta edición publicada en agosto de 2024.

Qué es realmente ISO 18004

Generate your first QR code — free

Empezar

ISO/IEC 18004 es una publicación conjunta de la Organización Internacional de Normalización y la Comisión Electrotécnica Internacional. Se publicó por primera vez en 2000, con revisiones importantes en 2006, 2015 y más recientemente en agosto de 2024. El estándar se titula "Tecnología de la información, Técnicas de identificación automática y captura de datos, Especificación de simbología de código de barras QR".

Ese título te indica el alcance. Cubre especificación de simbología: las reglas físicas y lógicas que definen qué es un código QR, cómo se codifican los datos y cómo un lector los reconstruye. Generadores de códigos QR, hardware de escaneo, aplicaciones específicas de industria, no están en el alcance. Otros estándares y guías de implementación cubren esos temas, todos apuntando a ISO 18004 como su base.

La edición de 2024 reconoce cuatro miembros de la familia QR: QR Code Model 1 (el original de 1994), QR Code Model 2 (que agregó patrones de alineación para mejor confiabilidad en tamaños grandes), el código QR estándar (Model 2 refinado, y el que ves en todas partes hoy), y Micro QR Code (una variante compacta para etiquetas pequeñas). Los cuatro viven bajo ISO 18004.

La estructura física de un código QR

Un símbolo de código QR es una cuadrícula cuadrada de unidades claras y oscuras llamadas módulos. Cada módulo es oscuro (binario 1) o claro (binario 0). La cuadrícula se divide en dos zonas: patrones de función y la región de codificación. Los patrones de función no llevan datos. Su trabajo es ayudar al escáner a encontrar, orientar y calibrar su lectura del símbolo. La región de codificación contiene los bits de datos reales.

Finder patterns (patrones de búsqueda)

¿Esos tres cuadrados grandes en las esquinas? Finder patterns. Cada uno es un cuadrado oscuro de 7x7 que rodea un cuadrado claro de 5x5 que rodea un cuadrado oscuro de 3x3. Los anillos anidados producen una proporción constante de oscuro a claro de 1:1:3:1:1 sin importar desde qué dirección se acerque un escáner. Esa proporción es lo suficientemente distintiva para que un escáner localice los tres finder patterns casi instantáneamente, incluso en una escena con muchos elementos.

Nota que la cuarta esquina no tiene finder pattern. Esa asimetría es intencional. Como solo tres esquinas llevan el patrón, cualquier rotación de 90 grados produce una disposición espacial diferente, dándole al decodificador una forma inequívoca de determinar la orientación.

Separadores

Un borde de un módulo de ancho de módulos claros llamado separador rodea cada finder pattern. Aísla el finder de la región de codificación para que el escáner no lea erróneamente los módulos de datos cercanos como parte del patrón.

Timing patterns (patrones de temporización)

Entre los finder patterns, corriendo horizontal y verticalmente, están los timing patterns: módulos oscuros y claros alternados en línea recta. Comienzan y terminan en los separadores de finder pattern. Los timing patterns permiten al escáner calcular las coordenadas exactas de la cuadrícula de módulos, lo cual importa más cuando el símbolo está deformado por perspectiva o impreso en una superficie curva.

Alignment patterns (patrones de alineación)

A partir de la Versión 2, los códigos QR incluyen alignment patterns: un cuadrado oscuro de 5x5 que rodea un cuadrado claro de 3x3 con un solo módulo oscuro central, colocados a intervalos regulares por todo el símbolo. Un código Versión 1 (21x21 módulos) no necesita ninguno. Un código Versión 40 (177x177 módulos) tiene 46 de ellos. Le dan al escáner puntos de referencia adicionales para corregir la distorsión en un área impresa grande.

Información de formato

Dos copias de la franja de información de formato se encuentran adyacentes a los finder patterns. Cada franja codifica 15 bits: 5 bits de datos (2 para el nivel de corrección de errores, 3 para el número de patrón de máscara) más 10 bits de corrección de errores calculados con un código BCH que puede corregir hasta 3 errores de bit en la propia franja. Dos copias significan que la información de formato sobrevive incluso si una se daña.

Ese número de patrón de máscara es uno de ocho patrones predefinidos (0 a 7), aplicados por XOR a la región de codificación antes de imprimir. El enmascaramiento rompe grandes regiones uniformes de módulos oscuros o claros para que el escáner pueda mantener la calibración de contraste. Sin esto, obtendrías bloques grandes que confunden a los decodificadores.

Información de versión

Para versiones 7 y superiores, el símbolo también incluye franjas de información de versión: dos copias de un campo de 18 bits que codifica el número de versión (6 bits de datos) con 12 bits de corrección de errores BCH. Las versiones 1 a 6 son lo suficientemente pequeñas como para que el escáner pueda determinar la versión directamente desde las dimensiones físicas del símbolo.

La zona de silencio

El estándar requiere una zona de silencio de al menos 4 módulos de color claro uniforme en los cuatro lados. No es decorativa. El escáner usa este borde en blanco para establecer su referencia de contraste de fondo para distinguir módulos oscuros de claros. Escatima en la zona de silencio y tendrás un código que escanea bien en tu escritorio pero falla en el momento en que se imprime en una etiqueta de packaging con mucho contenido. Es el error de cumplimiento más común que veo en la práctica.

El sistema de versiones: tamaños 1 a 40

Las versiones de código QR definen el tamaño del símbolo. La Versión 1 es 21x21 módulos. Cada paso agrega 4 módulos por lado, así que la Versión 2 es 25x25, la Versión 3 es 29x29, hasta la Versión 40 con 177x177 módulos. La fórmula: (versión x 4) + 17 = módulos por lado.

Mayor versión, más datos, código impreso más grande. En la práctica, los generadores eligen la versión más pequeña que quepa con tus datos en el nivel de corrección de errores elegido. Una URL como https://ejemplo.com/p/1234 típicamente cae en Versión 3 o 4 con nivel M. Mete un vCard completo con nombre, dirección, teléfono y email, y estás mirando Versión 10 o superior.

Versión Tamaño (módulos) Numérico (L) Alfanumérico (L) Byte (L)
1 21×21 41 25 17
5 37×37 154 93 64
10 57×57 652 395 271
20 97×97 2,061 1,249 858
40 177×177 7,089 4,296 2,953

Estas cifras son capacidades máximas con nivel de corrección de errores L. Niveles de corrección de errores más altos reducen la capacidad utilizable porque más módulos se dedican a palabras código de redundancia.

Modos de codificación: cuatro formas de empaquetar datos

Antes de que los datos entren en un código QR, se codifican en bits. ISO 18004 define cuatro modos de codificación, cada uno optimizado para un conjunto de caracteres diferente. Tu elección de modo determina directamente qué tan grande necesita ser el símbolo resultante.

Modo numérico

El modo numérico codifica solo dígitos del 0 al 9. Tres dígitos se empaquetan en 10 bits, aproximadamente 3.33 bits por carácter. El modo más compacto con diferencia. Si tu código QR solo contendrá dígitos (un número de serie, un ID de tarjeta de fidelidad), esto es lo que quieres.

Modo alfanumérico

El modo alfanumérico maneja 0-9, A-Z en mayúsculas y nueve caracteres especiales: espacio, $, %, *, +, -, ., / y :. Pares de caracteres se codifican en 11 bits (5.5 bits por carácter). Un truco que vale la pena conocer: las URLs codificadas en mayúsculas entran en modo alfanumérico y producen códigos notablemente más pequeños que el modo byte. Por eso muchos generadores QR convierten tu URL a mayúsculas antes de codificarla.

Modo byte

El modo byte codifica datos binarios arbitrarios a 8 bits por carácter. El conjunto de caracteres predeterminado es ISO/IEC 8859-1 (Latin-1), aunque el mecanismo Extended Channel Interpretation te permite declarar cualquier codificación. ¿Necesitas letras minúsculas, símbolos especiales o una URL larga con parámetros de query? Modo byte. Menos eficiente, más flexible.

Modo kanji y codificación de modos mixtos

El modo kanji es el más especializado. Codifica caracteres Shift JIS de doble byte a 13 bits cada uno, diseñado específicamente para texto japonés. Fuera de Japón, casi nunca lo encontrarás.

Vale la pena notar: un solo código QR puede mezclar modos dentro del mismo símbolo. Cada segmento de datos obtiene un indicador de modo de 4 bits, así que un ID de producto numérico puede estar junto a una URL en modo byte, cada segmento usando su representación más eficiente. La mayoría de las librerías de generación manejan el cambio automáticamente.

Corrección de errores: cómo los códigos QR sobreviven al daño

Los códigos QR usan corrección de errores Reed-Solomon, un algoritmo bien estudiado que permite a un decodificador reconstruir datos incluso cuando parte del símbolo falta o es ilegible. El estándar define cuatro niveles de corrección de errores, identificados por las letras L, M, Q y H.

Nivel Nombre Daño Recuperable Caso de Uso Típico
L Bajo ~7% de las palabras código Entornos limpios, máxima densidad de datos necesaria
M Medio ~15% de las palabras código Propósito general, la opción más común
Q Cuartil ~25% de las palabras código Etiquetas industriales, códigos con logos superpuestos
H Alto ~30% de las palabras código Entornos hostiles, superficies curvas, códigos con marca

El intercambio es simple: mayor corrección de errores consume tu capacidad de datos. Un código Versión 5 con nivel L almacena 154 caracteres numéricos; la misma versión con nivel H almacena solo 64. Cuando pegas un logo en un código QR, cubriendo parte de la región de codificación, estás gastando tu presupuesto de corrección de errores. El nivel H deja más margen para ese tipo de daño deliberado.

Internamente, la implementación de Reed-Solomon opera sobre el campo finito GF(256), usando un polinomio generador cuyo grado depende de cuántas palabras código de corrección de errores se necesitan. Tomemos un código Versión 1 con nivel M: 16 palabras código de datos más 10 palabras código de corrección de errores, 26 en total. Sube eso al nivel H y el balance se inclina fuertemente hacia la corrección de errores.

Colocación de datos y la región de codificación

Una vez que los datos se codifican y se calculan las palabras código de corrección de errores, el flujo de bits resultante se coloca en la región de codificación siguiendo una ruta específica. Los datos van en columnas de 2 módulos de ancho, empezando en la esquina inferior derecha, moviéndose hacia arriba, luego desplazándose a la izquierda y serpenteando hacia abajo. El zigzag continúa por todo el símbolo, saltando timing patterns y patrones de función a su paso.

Luego se aplica por XOR uno de los ocho patrones de máscara a la región de codificación. El codificador prueba los ocho, puntúa cada uno usando reglas de penalización del estándar, y elige la máscara que produce la distribución más equilibrada de módulos oscuros y claros. Escribe el número de máscara ganador en la franja de información de formato para que el decodificador sepa cómo revertirla.

Lo que el estándar no cubre

ISO 18004 es una especificación de simbología, no una especificación de aplicación. Define cómo se construye y decodifica un símbolo de código QR. No define:

  • Qué datos deberías poner en un código QR, ni qué formato deberían seguir esos datos (vCard, URL, esquema de deep link, esas son decisiones de la capa de aplicación)
  • Tamaño mínimo de impresión física (aunque ISO 15415 y estándares relacionados cubren la clasificación de calidad de impresión)
  • Reglas de personalización visual (esquinas redondeadas, color, logos incrustados)
  • Operación dinámica vs. estática (si el código QR redirige a través de un acortador de URL está completamente fuera del alcance del estándar)
  • Cómo las aplicaciones de escaneo analizan o actúan sobre el contenido decodificado

Este límite importa más de lo que podrías pensar. Cuando un responsable de cumplimiento pregunta si un código QR "cumple con ISO", se refiere a: ¿el símbolo cumple con los requisitos estructurales y de codificación de ISO 18004? Eso es respondible y verificable. Lo que ocurre después del escaneo es una pregunta diferente, regida por especificaciones diferentes.

La edición 2024: qué cambió

ISO/IEC 18004:2024 es la cuarta edición, reemplazando la versión de 2015. El núcleo se mantuvo estable: sistema de versiones, estructura de módulos, modos de codificación, niveles de corrección de errores, todo sin cambios. Lo que la revisión de 2024 sí tocó fueron la eficiencia de codificación, procedimientos de corrección de errores más precisos y la función de structured append.

Structured append te permite dividir un solo flujo de datos en hasta 16 símbolos de código QR. Cada uno se escanea independientemente; el decodificador reensambla las piezas en orden. Útil cuando tus datos exceden lo que un solo símbolo puede almacenar a un tamaño imprimible. La edición de 2024 ajustó cómo se señaliza y verifica este reensamblaje.

Por qué los ingenieros deberían saber esto

Si construyes algo que genera, lee o valida códigos QR (POS retail, escáneres de almacén, plataformas de marketing, ticketing), conocer ISO 18004 lleva a mejores decisiones en cada nivel.

El nivel de corrección de errores no es una decisión cosmética. Afecta directamente la confiabilidad del escaneo en tu entorno de despliegue. La selección de versión determina el tamaño físico y la velocidad de decodificación. El modo de codificación determina la capacidad del payload. El cumplimiento de la zona de silencio determina si tus códigos realmente funcionan a tamaños de impresión pequeños. Todas estas son decisiones a nivel de especificación con consecuencias reales.

Herramientas como el generador de códigos QR de QR Nova manejan estos parámetros por ti, pero conocer el estándar subyacente significa que puedes auditar el resultado, establecer restricciones informadas y diagnosticar fallos de escaneo con precisión en lugar de adivinanzas.

Conclusión

ISO 18004 es la razón por la que un código QR impreso en Tokio, escaneado por una cámara fabricada en Alemania, se decodifica correctamente por software escrito en California. Fija cada elemento estructural (finder patterns, timing patterns, alignment patterns, información de formato, información de versión, zona de silencio) y cada capa lógica (modos de codificación, corrección de errores, patrones de máscara, colocación de datos). Lectura densa en su forma publicada, pero la ingeniería debajo es genuinamente elegante.

Las conclusiones prácticas: usa el modo de codificación correcto para tu tipo de datos, elige la corrección de errores basándote en las condiciones físicas donde vivirá el código, respeta la zona de silencio de 4 módulos, y deja que la versión se elija sola basándose en la longitud del contenido. Haz bien esas cuatro cosas y tus códigos escanearán de forma confiable en cualquier lector compatible.

Preguntas frecuentes

¿Qué es ISO 18004 y quién la publica?

ISO/IEC 18004 es el estándar internacional que define la especificación de simbología del código QR. Es publicada conjuntamente por la Organización Internacional de Normalización (ISO) y la Comisión Electrotécnica Internacional (IEC). La edición actual es la cuarta, publicada en agosto de 2024.

¿Cuál es la diferencia entre QR Code Model 1, Model 2 y el código QR estándar?

Model 1 es la especificación original de 1994. Model 2 agregó patrones de alineación para ayudar a los escáneres a navegar símbolos más grandes de forma más confiable. El código QR estándar moderno (el que todo el mundo usa hoy) se basa en Model 2 con refinamientos adicionales. El Micro QR Code es una variante compacta regulada por el mismo estándar, optimizada para etiquetas físicas pequeñas.

¿Cuántos caracteres puede almacenar un código QR?

Depende de la versión y el nivel de corrección de errores. Un código Versión 40 con nivel de corrección de errores L puede almacenar hasta 7,089 dígitos numéricos, 4,296 caracteres alfanuméricos o 2,953 bytes de datos binarios. Un código Versión 1 almacena tan solo 41 caracteres numéricos. La mayoría de los códigos QR del mundo real usan versiones en el rango 1–10.

¿Qué significan en la práctica los cuatro niveles de corrección de errores?

El nivel L recupera hasta el 7% de las palabras código dañadas, M recupera el 15%, Q recupera el 25% y H recupera el 30%. Niveles más altos hacen el código físicamente más grande porque más del símbolo se dedica a redundancia en lugar de datos. El nivel M es la opción de propósito general más común; el nivel H se usa cuando los códigos se imprimirán en superficies curvas o en entornos hostiles.

¿Qué es la zona de silencio y qué tan ancha debe ser?

La zona de silencio es el borde blanco en blanco que rodea el símbolo del código QR. ISO 18004 requiere que tenga al menos 4 módulos de ancho en cada lado. Violar este requisito es una de las razones más comunes por las que un código QR falla al escanear de forma confiable, porque los escáneres usan el límite de contraste de la zona de silencio para localizar el símbolo.

¿ISO 18004 cubre cómo se ve un código QR, colores, logos, esquinas redondeadas?

No. El estándar define la codificación de datos, colocación de módulos, corrección de errores y tolerancias de medición, no el estilo visual. Agregar un logo, redondear esquinas o usar colores que no sean blanco y negro es posible pero consume tu presupuesto de corrección de errores. El estándar sí especifica requisitos mínimos de calidad de impresión (clasificación ISO 15415) para asegurar la capacidad de escaneo.

¿Qué cambió en ISO/IEC 18004:2024 comparado con la edición de 2015?

La cuarta edición de 2024 optimizó la eficiencia de codificación, mejoró los procedimientos de corrección de errores y refinó la funcionalidad de structured append que permite dividir datos entre múltiples símbolos de código QR. La simbología central, sistema de versiones, estructura de módulos, modos de codificación, permaneció estable.

Generate your first QR code — free

Empezar