Un código QR es una URL —o cualquier texto— dibujada como una cuadrícula que una cámara puede leer. Generar uno lleva un segundo. Las decisiones que importan son qué metes dentro y cuánta redundancia compras, y la primera es la que se equivoca de formas que no tienen vuelta atrás una vez impreso.
Un QR impreso es permanente: apúntalo a una redirección
Este es el error más caro del tema, y vale más que todo lo demás de esta página. La URL está codificada físicamente en el dibujo. Una vez que un código está impreso en una carta, un cartel, una tarjeta de visita o diez mil cajas de producto, ese destino no puede cambiar nunca. Jamás.
Reestructuras tu sitio y el código lleva a un 404. Te mudas de dominio y no lleva a ninguna parte. El dibujo en la tinta no se edita.
El remedio no cuesta nada y lleva un minuto: apunta el código a una URL corta de un dominio que controles —tusitio.com/m— y haz que esa redirija adonde de verdad quieras. Luego, cuando el destino cambie, cambias la redirección y todos los códigos jamás impresos siguen funcionando. Codifica la redirección, nunca el destino final. Es también la razón de que existan los servicios de pago de "QR dinámicos", y conviene saber que puedes hacer lo mismo tú solo con una única regla de redirección.
Lo que cuestan de verdad los niveles de corrección de errores
La redundancia Reed-Solomon está integrada en todo código QR, y por eso uno rayado o parcialmente tapado se sigue leyendo. Los cuatro niveles se recuperan de aproximadamente un 7%, 15%, 25% y 30% de daño: L, M, Q y H.
La redundancia no es gratis: ocupa espacio, y espacio significa módulos. Codifica una URL de 37 caracteres y obtienes una cuadrícula de 29×29 en el nivel L, 33×33 en Q y 37×37 en H. A tamaño de impresión fijo, más módulos significa que cada uno es físicamente más pequeño, y pasado cierto punto un módulo más pequeño es más difícil de resolver para una cámara de lo que uno más grande es de dañar. Subir la corrección de errores a H puede hacer que el código se lea peor, no mejor.
Pero hay una comida gratis que conviene conocer. La capacidad va a saltos discretos, así que subir de nivel a menudo no cuesta nada: esa misma URL de 37 caracteres es 29×29 tanto en L como en M. Cuadrícula idéntica, el doble de tolerancia al daño, coste cero. M es el valor por defecto sensato por eso, y merece comprobar si tu cadena concreta se lleva también Q gratis.
Cuánto cabe
Los techos, medidos: 2.953 caracteres en el nivel L, 2.331 en M, 1.663 en Q y 1.273 en H. Eso para texto arbitrario; un código restringido a dígitos o mayúsculas empaqueta bastante más, porque el formato tiene un modo más ajustado para cada uno.
Los números son lo bastante grandes como para que la longitud rara vez sea la restricción real: lo es la legibilidad. Un código de 2.000 caracteres es una cuadrícula de 177×177 módulos finos como un pelo que ningún móvil leerá desde un cartel. Si te encuentras cerca de los límites, la respuesta no es un código más grande; es poner un enlace en el código y el contenido detrás del enlace.
El borde blanco forma parte del código
La zona tranquila —cuatro módulos de espacio vacío en cada lado— está especificada, no es decorativa. Es como un escáner averigua dónde acaba el código y empieza el mundo. Recórtala para que el código quepa en un diseño apretado y tendrás un código que se lee en tu escritorio con buena luz y falla en una pared de un restaurante: el peor tipo de fallo, porque no lo encontrarás probando.
Lo mismo vale para el contraste y la orientación. Oscuro sobre claro es lo que esperan los escáneres; los códigos invertidos funcionan en unos lectores y en otros no. Y los tres cuadrados grandes de las esquinas son los patrones de búsqueda que le dicen al escáner cómo está girado el código: un logo encima de uno de ellos no degrada el código, lo destruye.
Los logos funcionan gastando tu redundancia
Poner un logo en medio de un código QR no es una función especial. Funciona porque estás dañando el código deliberadamente y dejando que la corrección de errores lo repare. En el nivel H el código tolera alrededor de un 30% de pérdida, así que un logo que cubra una fracción del centro entra en el presupuesto.
De ahí se siguen dos cosas. El logo debe quedarse en el centro, lejos de los patrones de búsqueda de las esquinas, porque esos no están cubiertos por la corrección de errores: son por donde empieza la lectura. Y el presupuesto que gasta el logo ya no está disponible para el daño del mundo real: un código con logo tiene menos tolerancia a un arañazo, un pliegue o un mal ángulo de cámara que el mismo código sin él. Si un código con logo se lee de forma poco fiable, es esa aritmética, no mala suerte.
Preguntas frecuentes
¿Se envían mis datos a un servidor?
No. Esta herramienta está marcada como "client": el código se genera en la pestaña de tu navegador y ni el texto ni la imagen se transmiten. Vale la pena saberlo porque muchos generadores de QR pasan por su propio dominio: el código que te dan apunta a su redirección, no a tu URL, lo que significa que pueden contar tus escaneos y, si un día desaparecen, desaparece también tu código.
¿Qué nivel de corrección de errores elijo?
M para casi todo. Es el valor por defecto sensato y, para URLs cortas, con frecuencia gratis: la cuadrícula sale del mismo tamaño que con L. Elige H solo cuando el código vaya a resultar genuinamente dañado o tapado en parte: impreso en un embalaje que se manipula, o con un logo encima. Elige L cuando la cadena sea larga y el código deba seguir legible por encima de todo.
¿Puedo editar un código QR después de imprimirlo?
No. El destino es el dibujo. Por eso el consejo de la redirección de arriba importa tanto: si tu código apunta a una URL que controlas y puedes reapuntar, puedes cambiar adónde va para siempre. Si apunta directo al destino final, tu única opción es reimprimirlo todo.
¿Por qué mi código funciona en mi móvil pero no en el de un cliente?
Normalmente tamaño, contraste o zona tranquila. Un código tiene que ser físicamente lo bastante grande para la cámara a la distancia a la que la gente estará de verdad: una regla aproximada es que el código sea una décima parte de la distancia de lectura, así que un cartel leído a dos metros necesita un código de unos 20 cm. Después, comprueba que el borde blanco sobrevivió a tu diseño, y que el contraste impreso es genuinamente oscuro sobre claro y no dos medios tonos que en pantalla parecían bien.
¿Puede un código QR contener algo que no sea una URL?
Sí: es solo texto, y hay convenciones que los escáneres reconocen: WIFI: para credenciales de red, BEGIN:VCARD para contactos, mailto: y tel: para lo obvio. Funcionan, aunque el soporte varía según la app de escaneo de formas difíciles de probar. Para cualquier cosa que imprimas a escala, una URL es lo único que todos los lectores manejan igual.