Cómo funcionan los códigos QR y cómo crear uno paso a paso gratis

Todos nosotros usamos códigos QR de forma muy habitual, estamos seguros que en la última semana has escaneado más de un código QR en tu día a día. Algunos usos muy habituales son ver la carta de un restaurante escaneando el código QR de la mesa, también podemos usarlos para conectarnos a redes Wi-Fi de forma fácil y rápida, así como para descargar información de contacto, realizar pagos con la aplicación específica del restaurante y mucho más. Gracias a esta tecnología y a la cámara de nuestro smartphone, tenemos mucho más fácil obtener información y realizar acciones. Hoy en RedesZone os vamos a explicar todos los secretos de cómo funcionan estos códigos QR, y también cómo puedes crear uno paso a paso.

Los códigos QR han supuesto un antes y un después a la hora de leer información de forma sencilla, esta tecnología fue inventada en 1994 por el ingeniero japonés Masahiro Hara y desarrollado por la empresa Denso Corporation (Toyota), el objetivo era que el código permitiera leer contenido a una alta velocidad, hoy en día es usado en todo el mundo para leer información de forma sencilla.

Qué es un código QR y cómo funciona

Un código QR es una matriz bidimensional de módulos de dos colores (generalmente blanco y negro), y disponen de tres cuadrados en las esquinas que proporcionan al lector la posición del propio código QR, para que lo puedan leer correctamente. La mayoría de códigos QR que podemos ver son de color blanco y negro, ya que son los dos colores que más contraste tienen (claro y oscuro), para así que el lector pueda escanearlos correctamente, no obstante, pueden ser de otros colores e incluso permite degradados y más personalizaciones, pero siempre deben tener el contraste suficiente para que los lectores de códigos no tengan problemas al diferenciarlos. También pueden incorporar imágenes personalizadas, para darle un toque más artístico, personal o profesional, por lo que la capacidad de personalización es bastante alta.

Hoy en día tenemos diferentes versiones de códigos QR dependiendo de la cantidad de módulos que forman la matriz, van desde la versión 1 (matriz de 21 x 21) hasta la versión 40 (matriz de 177 x 177 módulos). Cuántos más módulos tengan, más información son capaces de almacenar, por ese motivo, un código QR que solamente lleva una URL es «pequeño» y un código QR que lleva todo el código de configuración de un cliente de WireGuard VPN es claramente más grande.

Además de la información contenida en el propio código, también disponemos de los metadatos necesarios para que funcione a la hora de escanear:

  • Información de la versión: permite al lector saber qué versión de matriz tiene el símbolo, incluso antes de interpretar los datos. Se muestra solamente desde la versión 7 hasta la versión 40, las versiones entre 1 – 6 no se muestra porque puede determinarse por la geometría del código QR. Está formado por 18 bits (6 bits para la versión, y 12 bits de la corrección de errores).
  • Información del formato: es un bloque de 15 bits que aparece en todos los códigos QR (desde V1 hasta V40), contiene 2 bits de nivel de corrección de errores, 3 bits del patrón de máscara usado, así como 10 bits adicionales de corrección de errores. Este bloque está repetido para aumentar la robustez a la hora de leerlo.
  • Patrones requeridos: el código QR necesita ciertos patrones para que la lectura sea un éxito, tendremos tanto la posición, alineamiento como también la sincronización. Todos disponen de esta información ya que es crítica.
  • Corrección de errores y datos: es todo el espacio que queda después de reservar todos los datos anteriores. Se divide en la parte de datos y corrección de errores, dependiendo de la configuración de la corrección de errores que se haya configurado, tendremos más datos para la corrección de errores y menos capacidad para los datos en sí.

En el siguiente diagrama se detalla la arquitectura de un código QR y la función de cada una de sus partes:

Diagrama de la estructura interna de un código QR con leyenda explicativa de sus partes.
Desglose técnico de los elementos que componen un código QR, incluyendo la información de versión, formato, corrección de errores y patrones de alineamiento. Foto: Wikipedia

Gracias a la corrección de errores que tenemos disponible, si hay algún fallo en la lectura (por la luz que le da a la cámara, si el código QR se ha impreso y está un poco dañado), nos garantiza que no nos devolverá un error en la lectura. A la hora de generar los códigos QR, se usa una corrección de errores Reed-Solomon con cuatro niveles de menor a mayor robustez, con el objetivo de determinar cuánta información puede reconstruirse:

  • Nivel L (Low): permite recuperar alrededor del 7 % de los bytes de datos.
  • Nivel M (Medium): permite recuperar alrededor del 15 % de los bytes de datos.
  • Nivel Q (Quartile): permite recuperar alrededor del 25 % de los bytes de datos.
  • Nivel H (High): permite recuperar alrededor del 30 % de los bytes de datos.

Los valores son porcentajes aproximados de los bytes de datos que se pueden reconstruir a partir de los bytes de corrección Reed-Solomon, y se mantienen consistentes entre las diferentes versiones del estándar QR.

Códigos QR – Niveles de corrección de errores
Nivel de corrección Recuperación aprox. de datos Capacidad relativa de datos (misma versión) Efecto orientativo en caracteres máx. para una URL típica
L (Low) ≈ 7 % de bytes de datos recuperables. Máxima capacidad: más bytes dedicados a datos, menos a corrección. Versión 40: hasta ≈ 2.950 caracteres ASCII; de sobra para cualquier URL larga, pero menor robustez ante daños.
M (Medium) ≈ 15 % de bytes de datos recuperables. Capacidad alta: equilibrio entre datos y corrección, suele ser el valor por defecto. Versión 40: hasta ≈ 2.330 caracteres; sigue sobrando para URLs típicas, con más tolerancia a manchas o pequeños defectos.
Q (Quartile) ≈ 25 % de bytes de datos recuperables. Capacidad moderada: más redundancia, pensado para códigos que puedan rozarse o llevar un logotipo ligero. Versión 40: hasta ≈ 1.660 caracteres; suficiente para URLs y textos medianos, con buena resistencia a daños parciales.
H (High) ≈ 30 % de bytes de datos recuperables. Capacidad más baja: gran parte del símbolo se dedica a corrección, máxima robustez. Versión 40: hasta ≈ 1.270 caracteres; más que suficiente para URLs, ideal cuando el código lleva un logo central o se expone a condiciones duras (exteriores, superficies rugosas).

Por supuesto, cuanta más información (datos puros) queramos almacenar en el código QR, más grande deberá ser para poder almacenarlo. Además, si seleccionamos un nivel H de corrección de errores, más grande aún deberá ser el QR.

Información puede almacenar

Esta tecnología permite almacenar de forma sencilla una gran cantidad de información realmente útil si usamos un smartphone, los usos más habituales de los códigos QR son:

  • URL: podemos almacenar la dirección URL de nuestra página web, un enlace hacia un PDF para que el navegador lo abra automáticamente etc. Es ampliamente usado en restauración para leer la carta de forma digital, sin necesidad de tenerla en papel. Es necesario tener una matriz V2 o V3 para almacenar esta información, ya que generalmente ocupará tan solo 30 bytes, si la URL es más larga (unos 100 caracteres) ocupará unos 100 bytes por lo que necesitaremos matrices de entre V6 a V8.
  • Wi-Fi: el firmware de muchos routers nos permite generar un código QR de forma automática en base al nombre de la red Wi-Fi (SSID) y también de la contraseña configurada, esto nos permite conectarnos de forma fácil y rápida al router con nuestro smartphone o tablet, sin necesidad de introducir manualmente la contraseña, ni usar otras tecnologías de conexión fácil como el WPS. Es necesario generar una matriz entre V4 y V7 para almacenar toda la información de la red Wi-Fi.
  • Información de contacto: podemos crear un código QR personalizado con datos personales de contacto, como número de teléfono y correo electrónico, entre otra información. Es ampliamente usado por profesionales para dárselo a sus clientes. También se puede poner un enlace hacia nuestra web personal, hacia un documento PDF etc. Es necesario tener una matriz V7 o V12 para almacenar esta información, pero todo dependerá de cuánta información quieras incorporar.
  • Configuración de WireGuard: la popular VPN de WireGuard tiene una configuración minimalista, la cual cabe perfectamente en un código QR. Cuando vamos a configurar un servidor VPN con los diferentes clientes, el software nos permitirá descargar el archivo de configuración de forma manual, o bien escanear un código QR con toda la información para facilitar enormemente la configuración en los smartphones. Es necesario tener una matriz V18 o V20 para almacenar toda la configuración.
Capacidad y usos comunes de los códigos QR según su versión
Tipo de Contenido Ejemplo Versión de Matriz Necesaria (aprox.) Tamaño de Datos Típico
URL corta https://redeszone.net V2 – V3 ~30 bytes
URL larga https://ejemplo.com/pagina/muy/larga V6 – V8 ~100 bytes
Wi-Fi (WPA) SSID + Contraseña V4 – V7 ~50-80 bytes
vCard (contacto) Nombre, teléfono, email V7 – V12 ~100-250 bytes
Configuración VPN WireGuard V18 – V20 ~500-800 bytes

Como se ha mostrado, los códigos QR se utilizan en una gran variedad de ámbitos, dependiendo de la cantidad de información almacenada, serán más grandes o más pequeños.

Qué ocurre cuando un móvil escanea un código QR

Cuando un smartphone o una tablet se dispone a escanear un código QR, lo primero que haremos será abrir la aplicación de la cámara, o bien una aplicación específica para leer este tipo de códigos. Hoy en día, la mayoría de los móviles permiten escanear estos códigos con la app oficial de la cámara, el proceso es el siguiente:

  1. Escaneamos el código QR
  2. Detecta la cuadrícula de módulos: busca los tres patrones cuadrados grandes de las esquinas para determinar posición, orientación, perspectiva y escala.
  3. Determina el tamaño o versión del código para continuar leyendo: reconstruye la matriz deformada por la perspectiva de la cámara y el código, determinando los módulos que hay.
  4. Lee la parte de «Información del formato»: indica cómo interpretar la zona de datos, podemos ver el nivel de corrección (L/M/Q/H) y la máscara.
  5. Lee los datos y la corrección de errores: recorre todo el módulo siguiendo el patrón establecido, ignorando los patrones de metadatos y los agrupa en codewords de 8 bits.

    1. Corrige posibles errores de la lectura si fuera necesario: el algoritmo interno puede reconstruir los datos originales, siempre que el nivel de daño esté dentro de la capacidad de la corrección, sino devolverá un error al escanearlo.
    2. Reconstruye los bits «perdidos» o no leídos correctamente.
  6. Interpreta el modo del código: permite saber si es numérico, alfanumérico, bytes etc. Después obtiene la longitud total del contenido.
  7. Obtiene el contenido
  8. El smartphone permite al usuario abrir la URL, conectarse a la red Wi-Fi o importar la configuración de WireGuard o cualquier otra acción. Esto forma parte de la programación de la propia app de la cámara.

El QR en sí no ejecuta nada, ni la URL, ni la conexión Wi-Fi o la configuración de WireGuard, solamente tenemos datos, y posteriormente el sistema operativo (y el usuario) decide qué hacer con esa información. Como podéis ver, el proceso de lectura es largo, pero se realiza en menos de un segundo, perfecto para tener la mayor rapidez posible.

Diferencias entre códigos QR estáticos y dinámicos

Actualmente existen los denominados como QR estáticos y los dinámicos, la diferencia entre ellos depende dónde está la información y qué hay en el propio código QR. En la siguiente tabla podéis ver las diferencias entre ambos:

QR Estático vs QR Dinámico
  QR estático QR dinámico
Contenido Está directamente en el QR El QR contiene normalmente una URL corta
¿Permite cambiar contenido? ❌ Hay que generar otro QR ✅ Puedes cambiarlo sin cambiar el QR
Internet necesario ❌ No necesariamente ✅ Normalmente sí
Seguimiento de escaneos ❌ No es posible ✅ Habitualmente
Ejemplo WIFI:T:WPA;S:NombreDeLaRed;P:Contraseña;; https://qr.ejemplo.com/bbbb
Privacidad Mayor El servicio puede registrar los accesos y tener estadísticas.
Dependencia de terceros Ninguna Normalmente sí.

La principal diferencia es que los QR estáticos no se puede modificar el contenido, porque los datos están en el propio QR. Los dinámicos realmente llevan a una URL, la cual sí permite modificar el contenido.

Cómo crear un código QR paso a paso

Hoy en día existen muchas formas de crear un código QR, la forma más sencilla es usar QRNow que nos permitirá crear todo tipo de códigos, incluyendo la posibilidad de personalizarlo en detalle, esto es perfecto para entornos profesionales donde queremos darle un aspecto totalmente diferente y diferencial respecto a otros.

Los tipos de códigos QR que podemos crear son los de URL, texto, vCard, WhatsApp, Wi-Fi, email, PDF, imágenes, vídeo, SMS, enlaces, redes sociales, MP3, negocios, cupones, aplicaciones, landing page, evento de calendario, comentarios y YouTube.