Los códigos QR explicados: capacidad, corrección de errores y tamaño de impresión

Actualizado:

Un código QR es una cuadrícula de cuadrados blancos y negros que guarda texto: normalmente un enlace, a veces los datos de acceso a una red Wi-Fi, un número de teléfono o una solicitud de pago. Lo presentó en 1994 Denso Wave, entonces una división del fabricante de componentes de automóvil Denso, para seguir las piezas a lo largo de sus fábricas, y se volvió universal cuando las cámaras de los móviles aprendieron a leerlo. Un mismo código puede leerse incluso cuando una parte está sucia o tapada, y lo que puede contener depende de tres decisiones: cuánto texto, qué tipo de texto y cuánto daño debe resistir. Esta guía explica esas decisiones y lo que significan para un código que estás a punto de imprimir.

Qué hay en la cuadrícula

Cada cuadrado es un módulo. Los tres cuadrados grandes de las esquinas son los patrones de localización: indican al lector dónde está el código y cuál es su orientación. Las líneas de módulos alternos que hay entre ellos, los patrones de sincronización, marcan el espaciado de la cuadrícula, y a partir de la versión 2 unos cuadrados de alineación más pequeños ayudan a compensar una superficie curva o inclinada. Una franja junto a los patrones de localización registra el nivel de corrección de errores y la máscara, uno de 8 patrones que se superponen a los datos para que nunca formen grandes zonas vacías ni figuras que parezcan un patrón de localización. Los códigos de la versión 7 o superior registran además su versión. Todo lo demás son datos y corrección de errores.

Alrededor del código debe haber un margen vacío, la zona de silencio, de cuatro módulos de ancho por cada lado. Sin él, puede que el lector no encuentre dónde termina el código, y un código que se ve perfecto en pantalla puede fallar una vez impreso sobre un fondo recargado.

Versiones: por qué algunos códigos son más densos

El tamaño de la cuadrícula se llama versión. La versión 1 tiene 21 × 21 módulos, y cada versión añade 4 módulos por lado, hasta llegar a la versión 40, de 177 × 177. Un generador elige la versión más pequeña en la que cabe el texto, así que más texto significa más módulos, y más pequeños, en la misma superficie impresa. Estas son las versiones que necesitan algunos contenidos típicos con el nivel M, la opción más habitual:

ContenidoCaracteresVersión con el nivel M
https://ntools.xyz182 (25 × 25)
Los datos de acceso a una red Wi-Fi con una contraseña de 28 caracteres584 (33 × 33)
Un enlace largo con cinco parámetros de seguimiento1268 (49 × 49)

El enlace largo necesita casi el doble de módulos por lado que el corto. Impreso al mismo tamaño, cada uno de sus módulos mide poco más de la mitad de ancho que los del enlace corto, así que el móvil tiene que estar más cerca y más quieto. Acortar el enlace es la forma más eficaz de que un código sea más fácil de escanear.

Cuánto cabe en un código QR

Un código QR codifica el texto en uno de cuatro modos. El modo numérico es el que almacena los dígitos de forma más compacta. El modo alfanumérico abarca 45 caracteres: los dígitos, las letras mayúsculas de la A a la Z, el espacio y $ % * + - . / :. El modo byte admite cualquier dato y es el que usan casi todos los enlaces, porque las letras minúsculas no están en el conjunto alfanumérico. El modo kanji es para texto en japonés.

El conjunto de caracteres predeterminado del estándar para el modo byte es ISO 8859-1, que solo cubre las letras de Europa occidental. La mayoría de los generadores, nTools incluido, escriben en UTF-8 el texto en otros alfabetos o con símbolos como €, y el lector tiene que reconocerlo, cosa que hacen muchos lectores, aunque no todos. El código más grande, la versión 40, admite:

NivelDígitosAlfanuméricosBytes
L7.0894.2962.953
M5.5963.3912.331
Q3.9932.4201.663
H3.0571.8521.273

Son límites, no objetivos. Un código de la versión 40 tiene 31.329 módulos, y un móvil solo puede leerlo si está impreso en grande y con nitidez. En todo lo que se imprime, un contenido corto hace que el código sea fácil de leer.

Generador de QR y Wi-Fi QR

Corrección de errores: L, M, Q y H

Los códigos QR usan la corrección de errores Reed–Solomon, la misma familia de códigos que se usa en los CD. Una parte de cada código son datos redundantes a partir de los cuales el lector puede reconstruir lo que falta. Hay cuatro niveles, y cada uno puede recuperar aproximadamente esta proporción de los datos:

Denso Wave señala que el nivel M es el que se elige con más frecuencia, con Q o H para entornos sucios, como las fábricas, y L para condiciones limpias y grandes cantidades de datos. El precio de un nivel más alto es el tamaño: el mismo enlace con el nivel H necesita más módulos que con el nivel M. Los porcentajes cuentan palabras de código, bloques de 8 bits, no módulos, así que un arañazo que atraviese el código puede estropear una parte mayor de lo que sugiere su superficie.

Un logotipo en el centro de un código solo funciona porque la corrección de errores reconstruye los módulos que oculta, así que consume parte de ese margen antes de que el código tenga que lidiar con suciedad o reflejos. Si añades uno, que sea pequeño, no tapes nunca los tres cuadrados de las esquinas ni la zona de silencio, y prueba el resultado en varios móviles.

A qué tamaño imprimirlo

El tamaño impreso es el número de módulos, más 8 por la zona de silencio, multiplicado por el ancho de un módulo. El propio ejemplo de Denso Wave es un código de la versión 3, de 29 módulos de ancho, impreso con módulos de 0,254 mm: 7,4 mm el código y 9,4 mm con su margen. Unos módulos tan pequeños sirven para un escáner dedicado que se sostiene cerca de la etiqueta; la cámara de un móvil con el brazo extendido necesita módulos mucho más grandes.

Con un ancho impreso de 2 cm, margen incluido, un código de la versión 2 tiene módulos de unos 0,61 mm de ancho, mientras que uno de la versión 8 tiene módulos de unos 0,35 mm. Si un código tiene que ser pequeño, mantén corto su contenido.

Códigos QR de Wi-Fi

Un código de Wi-Fi es simple texto con una estructura que reconocen las cámaras de los móviles. Lo popularizó el proyecto de códigos de barras ZXing y no forma parte del estándar QR en sí:

Los caracteres \ ; , : y " se escapan con una barra invertida dentro del nombre o de la contraseña; el generador de nTools lo hace por ti.

La contraseña se guarda en el código como texto legible: cualquiera que escanee el código, o le haga una foto, tiene la contraseña. Para un código colgado en la pared, usa una red de invitados.

Códigos estáticos y dinámicos

Un código estático contiene el propio contenido, como el enlace o los datos de acceso a la Wi-Fi. No caduca nunca, no tiene límite de escaneos y funciona sin ningún servicio intermedio; para cambiar el contenido, hay que imprimir un código nuevo. El generador de nTools crea códigos estáticos.

Un código dinámico, que venden muchos servicios de QR, contiene un enlace corto a ese servicio, que después redirige a tu dirección real. Puedes cambiar el destino más adelante y contar los escaneos, pero cada escaneo depende del servicio: si la suscripción termina o la empresa cierra, los códigos impresos dejan de funcionar.

Escanear con seguridad

Un código QR no puede ejecutar nada por sí solo; solo le entrega al móvil un texto, normalmente un enlace. El riesgo está en adónde lleva ese enlace. La Comisión Federal de Comercio (FTC), la agencia de protección del consumidor de Estados Unidos, advierte sobre códigos falsos pegados encima de los auténticos, por ejemplo en parquímetros, y sobre códigos en mensajes inesperados que te instan a actuar de inmediato.

Preguntas frecuentes

¿Caducan los códigos QR?

Un código estático no caduca nunca: contiene el propio contenido. Un código dinámico deja de funcionar cuando el servicio que hay detrás de su enlace corto deja de redirigirlo.

¿Por qué no se escanea mi código QR?

Las causas habituales son un código impreso demasiado pequeño para la cantidad de contenido, una zona de silencio que falta o está ocupada, poco contraste, un reflejo o una arruga, o un logotipo que tapa demasiado. Acortar el contenido hace que cada módulo sea más grande.

¿Qué nivel de corrección de errores debo usar?

El nivel M sirve para la mayoría de los códigos impresos. Usa Q o H si el código se va a ensuciar o desgastar, o lleva un logotipo, y asume que será más denso.

¿Qué hace el generador de nTools?

Crea códigos estáticos con el nivel M, elige la versión más pequeña en la que cabe el contenido y añade la zona de silencio de cuatro módulos. El código se dibuja en tu navegador y no se sube nada de lo que escribes.

Guías relacionadas