Qraft

Límites de datos de los códigos QR - Capacidad máxima y consejos prácticos

Capacidad máxima de los códigos QR

El límite de datos que puede almacenar un código QR se alcanza en el tamaño máximo, la versión 40 (177×177 módulos): 7.089 dígitos numéricos, 4.296 caracteres alfanuméricos, 2.953 bytes de datos binarios o 1.817 caracteres kanji (Shift JIS). Si solo comparamos dígitos, eso supera en más de 500 veces los 13 dígitos que admite un código de barras habitual (EAN-13).

Sin embargo, todas esas cifras corresponden al nivel de corrección de errores más bajo, L. Con el nivel M, el más utilizado en la práctica, la capacidad baja a alrededor del 80 % de L (5.596 dígitos, 2.331 bytes), y con el nivel H, de mayor capacidad de recuperación, cae hasta cerca del 40 % (3.057 dígitos, 1.273 bytes). Al estimar la capacidad, parte de las cifras del nivel de corrección que vayas a usar realmente y no del máximo teórico.

Directrices de tamaño de datos por caso de uso

Estas son las cifras orientativas de cuántos datos necesitan los usos habituales, siempre con el nivel de corrección de errores M. Entre paréntesis figura la versión más pequeña capaz de contener esos datos, con su número de módulos.

  • URL corta (por ejemplo https://example.com): 19 bytes. Al incluir minúsculas se procesa en modo byte y cabe en la versión 2 (25×25 módulos)
  • URL con parámetros: unos 100 bytes corresponden a la versión 6 (41×41 módulos), y aunque los parámetros de seguimiento la lleven a 200 bytes sigue cabiendo en la versión 10 (57×57 módulos)
  • Datos de conexión Wi-Fi: entre 50 y 80 bytes con el SSID y la contraseña, de modo que basta con la versión 5 (37×37 módulos) o inferior
  • vCard (contacto): entre 200 y 500 bytes si incluyes nombre, teléfono, correo y dirección, lo que sitúa el código entre las versiones 10 y 17 (de 57×57 a 85×85 módulos)
  • Texto largo: el japonés almacenado en modo byte con UTF-8 consume tres bytes por carácter, así que incluso unos cientos de caracteres elevan mucho la versión y afinan el patrón

Cómo cambia el código cuando crecen los datos

Los códigos QR están normalizados en versiones que van de la 1 a la 40: la versión 1 mide 21 módulos (las celdas blancas y negras) por lado y la versión 40 llega a 177, ya que cada escalón añade cuatro módulos a cada lado. Cuando crecen los datos almacenados, se elige automáticamente la versión más pequeña capaz de contenerlos.

El inconveniente de subir de versión es que, si el tamaño de impresión no cambia, cada módulo se vuelve más pequeño. Impreso en un cuadrado de 2 cm, un módulo de la versión 2 mide 0,8 mm, mientras que en la versión 10 queda en unos 0,35 mm (cálculo simple que no descuenta el margen blanco del contorno). Cuanto menor es el módulo, más influyen la resolución de la cámara y la difusión de la tinta, y más aumentan los errores de lectura.

Por eso resulta más fiable almacenar solo la URL de una página web y dejar que los detalles se lean en el enlace, en lugar de meter textos largos directamente en el código. Cómo elegir la versión adecuada para cada uso, es decir, las diferencias de versión que conviene tener en cuenta, se trata en otro artículo.

El equilibrio con el nivel de corrección de errores

Los códigos QR tienen un mecanismo de corrección de errores que permite leerlos incluso con suciedad o partes faltantes, y su fuerza puede elegirse entre cuatro niveles. Cuanto mayor es el nivel de corrección, más datos adicionales para la restauración, por lo que disminuye la cantidad real de información que cabe en un código del mismo tamaño. En lugares que se ensucian, como carteles exteriores, un nivel alto es tranquilizador, pero consume capacidad en consecuencia. Por el contrario, un nivel bajo basta si solo pones una URL corta en interiores. Según el uso, eliges si priorizar la robustez o la capacidad.

Diferencias de capacidad según el tipo de carácter

El número de caracteres que un código QR puede almacenar cambia con el tipo de datos que introduces. Los datos de solo números caben de la forma más eficiente, y el número de caracteres que caben en el mismo tamaño disminuye en el orden de alfanuméricos, kanji y datos que incluyen otros símbolos. Esto se debe a que la cantidad de datos necesaria para representar un carácter difiere según el tipo. Que una URL larga con muchos símbolos use sorprendentemente mucha capacidad se debe a este mecanismo. Cuando quieras ahorrar capacidad, reducir los símbolos innecesarios y mantener la composición de caracteres lo más simple posible es eficaz.

Comprueba probándolo de verdad

Para hacerte una idea de la capacidad, lo más rápido es generar varios códigos cambiando el contenido poco a poco y compararlos. Con estas tres pruebas se ve a simple vista qué es lo que empuja la versión hacia arriba (todas con el nivel de corrección de errores M).

  • Cambiar solo el nivel de corrección de errores: genera la misma URL con el nivel L y con el nivel H y verás que, con un contenido idéntico, la versión H sube de versión y su patrón es más fino
  • URL corta frente a URL con parámetros de seguimiento: la de 19 bytes cabe en la versión 2 (25×25 módulos), mientras que al añadir utm_source y similares hasta llegar a 120 bytes hace falta la versión 7 (45×45 módulos)
  • Cadena de solo dígitos frente a cadena con símbolos: con los mismos 100 caracteres, solo dígitos caben en la versión 3 (29×29 módulos), pero al mezclar símbolos se pasa a modo byte y se necesita la versión 6 (41×41 módulos)

Puedes averiguar la versión de un código terminado contando los módulos de un lado: resta 21, divide entre 4 y suma 1 (57 módulos equivalen a la versión 10). Por último, imprímelo en el tamaño que vayas a usar de verdad y comprueba que se lee desde la distancia prevista; así evitarás descubrir tras la impresión que el código no se puede leer.

Consejos para reducir el tamaño de los datos

Consejos para mantener los códigos QR compactos:

  • Usar acortadores de URL: acortar las URL largas con bit.ly etc. para códigos QR más pequeños
  • Eliminar parámetros innecesarios: minimizar los parámetros de seguimiento (utm_source, etc.) al final de las URL
  • Aprovechar el modo alfanumérico: las URL normales con minúsculas se codifican en modo byte (8 bits por carácter). El modo alfanumérico solo admite dígitos, A-Z en mayúsculas, espacio y nueve símbolos, pero cuesta solo 5,5 bits por carácter
  • Poner la información en la web: almacenar solo la URL en el código QR; poner los detalles en la página enlazada