📱

Código QR

Un código QR (Quick Response) es una matriz bidimensional de módulos negros y blancos que codifica datos de forma óptica. Puede almacenar hasta 2.953 bytes y usa corrección de errores Reed-Solomon en 4 niveles, permitiendo lectura incluso con hasta 30% de daño.

El código QR fue inventado en 1994 por Denso Wave (subsidiaria de Toyota) para trackear piezas en manufactura automotriz. Necesitaban algo que se leyera más rápido que los códigos de barras tradicionales, de ahí el nombre Quick Response.

Es una matriz 2D de cuadrados (módulos) negros sobre fondo blanco. A diferencia de un código de barras 1D que almacena ~20 caracteres, un QR puede guardar hasta 4.296 caracteres alfanuméricos o 2.953 bytes en binario.

La magia está en tres componentes clave: los patrones de posición (los tres cuadrados grandes en las esquinas) que permiten detectar el código en cualquier orientación, los patrones de alineamiento (cuadrados pequeños internos en códigos grandes) que corrigen distorsión, y los patrones de temporización (líneas alternas) que definen el tamaño de los módulos.

El QR es un estándar ISO/IEC 18004 desde 2000. Denso Wave liberó la patente para uso público, lo que lo volvió universal. Hoy lo ves en pagos (Mercado Pago, PayPal), publicidad, autenticación 2FA, WiFi (compartir credenciales) y menús de restaurantes post-pandemia.

La capacidad depende de tres factores: versión (tamaño de la matriz), nivel de corrección y tipo de dato.

Versión: va de 1 a 40. Versión 1 es 21×21 módulos, cada versión suma 4 módulos por lado. Versión 40 es 177×177 (31.329 módulos totales). Mayor versión = más datos, pero más difícil de escanear desde lejos.

Niveles de corrección Reed-Solomon:

  • L (Low): recupera hasta 7% de daño. Usa menos espacio para corrección, más para datos.
  • M (Medium): 15% de daño. Balance estándar.
  • Q (Quartile): 25% de daño. Recomendado para entornos industriales.
  • H (High): 30% de daño. Permite incorporar logos o diseños sobre el código.

Tipo de dato: numérico (3,4 bits por dígito), alfanumérico (5,5 bits por char: A-Z, 0-9, algunos símbolos), byte/binario (8 bits), kanji (13 bits). Ejemplo: 4.296 caracteres numéricos vs 2.953 bytes vs 1.817 kanji.

Un QR Versión 10, nivel M, puede guardar ~220 caracteres alfanuméricos. Suficiente para una URL larga o un JSON compacto.

Pagos móviles: Mercado Pago, PayPal QR. El código contiene ID de comerciante + monto + referencia. La app del usuario lo escanea y confirma el pago sin tipear nada.

WiFi compartido: formato estándar WIFI:T:WPA;S:nombre_red;P:contraseña;;. Escaneás y te conectás automáticamente, sin tipear la clave.

Autenticación 2FA: Google Authenticator, Authy. El QR codifica una URI otpauth://totp/ con el secret key. Un escaneo configura la app.

Trazabilidad industrial: cada pieza lleva un QR con lote, fecha, origen. Se escanea en cada etapa de producción para trackear en tiempo real.

Menús digitales: restaurantes post-COVID. El QR en la mesa lleva a un PDF o web app con el menú. Actualizable sin reimprimir.

Marketing y packaging: códigos QR con nivel H permiten incrustar el logo de la marca en el centro, manteniendo escaneabilidad. Llevan a landing pages con tracking de campaña.

Generá QRs con librerías confiables: qrcode (JavaScript), qrcode (Python), ZXing (Java). Nunca confíes en servicios online desconocidos para datos sensibles: pueden loguear lo que codificás.

Nivel de corrección: usá L o M si el código estará limpio y bien iluminado. Usá Q o H si estará en entornos sucios, pequeños o si querés agregar un logo. Probar escaneabilidad real después de agregar diseño custom.

Tamaño físico: regla general: el QR debe tener al menos 2cm × 2cm para escaneo desde 10cm. Para lectura desde 1 metro, mínimo 10cm × 10cm. Calculá: tamaño_mínimo = distancia_lectura / 10.

Contraste: módulos oscuros sobre fondo claro. Funciona negro/blanco, azul/blanco, pero no amarillo/blanco (poco contraste). Nunca módulos claros sobre fondo oscuro: confunde a la mayoría de scanners.

URLs cortas: usá un acortador (bit.ly, tu propio dominio corto) para reducir versión del QR. Menos módulos = más fácil de escanear. ejemplo.com/p/abc mejor que https://www.ejemplo.com/productos/categoria/item?id=12345&ref=qr.

Ejemplos

  • URL: https://genfy.app → 62 caracteres, Versión 3, nivel M
  • WiFi: WIFI:T:WPA;S:MiRed;P:contraseña123;; → conectar automáticamente
  • 2FA: otpauth://totp/Google:user@example.com?secret=JBSWY3DP → Google Authenticator
  • vCard: BEGIN:VCARD\nFN:Juan Pérez\nTEL:+5491112345678\nEND:VCARD → contacto
  • JSON: {"id":"abc123","amount":1500} → 32 bytes, Versión 2

Preguntas frecuentes

¿Cuántos datos puedo meter en un código QR?

Hasta 2.953 bytes (binario) o 4.296 dígitos numéricos o 1.817 caracteres kanji. Pero a mayor capacidad, más complejo y grande el código. Práctica: mantené bajo 200 caracteres para buena escaneabilidad.

¿Puedo poner un logo en el centro del QR?

Sí, si usás nivel de corrección H (30%). El logo debe ocupar menos del 25% del área total y preferiblemente cubrir la zona central (menos crítica). Probá escaneabilidad después de agregar el logo.

¿Por qué mi QR no se escanea bien?

Causas comunes: poco contraste (colores claros), tamaño muy pequeño, distancia de lectura excesiva, superficie arrugada o reflectante, o demasiados datos (versión muy alta). Usá negro sobre blanco y probá en múltiples apps.