Un código QR se decodifica a 1,2:1. No diseñes ni cerca de ahí
por el equipo de KoloQRInvestigación

Ni Apple ni Google publican un umbral de contraste para las aplicaciones de cámara que leen la mayoría de los códigos QR, así que toda cifra citada como el límite del iPhone o de Android está citada de una medición que nadie ha publicado. Lo que sí se puede leer es el código fuente de ZXing, el decodificador de código abierto que hay detrás de buena parte de todo lo demás: trabaja con bloques de 8 x 8 píxeles y trata un bloque cuyos píxeles más claro y más oscuro se diferencian en 24 niveles de 255 o menos como si no contuviera ningún borde. Eso es una relación de contraste de alrededor de 1,24:1, un gris apenas visible sobre blanco. El decodificador no es la restricción. La restricción es el papel que refleja el 85 % en vez del 100 %, la tinta que se extiende, los reflejos que levantan los negros y medio milímetro de trepidación, y por eso las cifras de trabajo son 4:1 en pantalla y 7:1 impreso.
Puntos clave
- Ni Apple ni Google publican un umbral de contraste para el escaneo de QR integrado en iOS y Android, así que una cifra citada como "el" límite del iPhone o de Android no es una medición que nadie pueda comprobar. Lo que sí se puede comprobar es el código fuente publicado de ZXing, el decodificador de código abierto, y la norma de calidad de impresión ISO/IEC 15415.
- El binarizador híbrido de ZXing trabaja con bloques de 8 x 8 píxeles y trata un bloque cuyos píxeles más claro y más oscuro se diferencian entre sí en 24 niveles de 255 o menos como si no contuviera ningún borde. Sobre blanco, 24 niveles son el gris #E7E7E7: una relación de contraste de alrededor de 1,24:1.
- Diseña a 4:1 para pantalla y a 7:1 para impresión, y trata 3:1 como la línea por debajo de la cual un código no debería publicarse. La distancia entre 1,24:1 y 7:1 no es superstición: son el papel, la luz ambiente, los reflejos y el desenfoque, que restan de la cifra de diseño antes de que el decodificador vea nada.
- Una relación de contraste no es lo que mide una cámara. La relación pondera el verde al 71 % del brillo percibido y añade un término de velo; el canal de luminancia de una cámara pondera el verde al 59 % y no añade nada. Ambas discrepan sobre todo en los rojos, verdes y azules saturados, y la relación es la más severa de las dos.
- El desenfoque y el contraste bajo se multiplican en vez de sumarse, porque el desenfoque promedia los píxeles vecinos y por tanto reduce la diferencia entre el píxel más claro y el más oscuro dentro de cada bloque: exactamente la magnitud que umbraliza el binarizador. Un código que sobrevive a 3:1 en una foto fija falla a 3:1 en una mano en movimiento.
Nadie publica la cifra, y ese es el punto de partida
No existe ningún umbral de contraste publicado para el escaneo de códigos QR integrado en las cámaras de iPhone y Android. La detección de códigos de barras de Apple vive dentro del framework Vision y la de Android dentro de Google Play Services, ambas cerradas, ambas sin documentar en este punto, y ninguna ha declarado nunca un mínimo. Cualquier artículo que dé una cifra -3:1, 4:1, 40 %- o está citando una pauta de diseño escrita para otra cosa o no está citando nada.
Merece la pena decirlo sin rodeos en vez de esquivarlo, porque de ahí se deduce la forma de la respuesta honesta. Hay tres cosas que se pueden establecer sin tener un laboratorio: qué hace un decodificador de código abierto, porque su código fuente está publicado; qué mide la norma de calidad de impresión, porque es una norma publicada; y qué hace un código concreto en un móvil concreto, porque eso lleva veinte minutos y una impresora. Todo lo demás sobre este asunto es la impresión de alguien.
La pregunta se repite porque el contraste es la única variable de un código QR que un diseñador controla sin proponérselo. El tamaño de módulo es una decisión deliberada. La corrección de errores es una decisión deliberada. El color se elige para una paleta de marca tres años antes de que nadie piense en un código QR, y el código lo hereda. Así que la pregunta práctica no es "cuál es el mínimo" sino "cuánto margen me deja esta paleta", y eso sí tiene respuesta.
Lo que un decodificador mide en realidad es una diferencia local
Un decodificador nunca compara tu color de primer plano con tu color de fondo. Convierte el fotograma de la cámara en un único canal de gris, decide para cada pequeña vecindad de píxeles dónde cae en ella la frontera entre oscuro y claro, y lee los módulos del resultado. La binarización es el paso en el que un decodificador convierte una fotografía en gris en píxeles de blanco y negro puros antes de intentar leer ningún módulo. Todo lo relativo a la tolerancia al contraste se decide ahí.
ZXing es el decodificador que merece la pena leer, porque es el único de amplia implantación cuyo código fuente es público. Su binarizador híbrido por defecto divide la imagen en bloques de 8 x 8 píxeles, calcula el píxel más claro y el más oscuro de cada bloque y fija el umbral de ese bloque a medio camino entre ambos. Por debajo de una dimensión de imagen de 40 píxeles abandona el enfoque local y umbraliza toda la imagen de una vez.
La constante interesante es la guarda de ese bucle de bloques. Si la diferencia entre el píxel más claro y el más oscuro de un bloque es de 24 o menos, sobre 255, ZXing no calcula un umbral a partir de él: da por hecho que el bloque contiene solo píxeles claros o solo oscuros y toma prestada una estimación de sus vecinos. Veinticuatro niveles por debajo del blanco son el gris #E7E7E7, que es una relación de contraste de alrededor de 1,24:1. En una imagen digital limpia y con un tamaño de módulo generoso, ese es el suelo.
De ahí se siguen dos consecuencias, y ambas son más útiles que la propia cifra. La primera es que el contraste se mide localmente, sobre el área de unos pocos módulos, y no a lo ancho de la página: por eso un degradado lento detrás de un código es mucho menos peligroso de lo que parece, y por eso una fotografía detrás de un código es fatal. Un degradado mantiene intacta la diferencia local en todas partes; una fotografía cambia de qué lado de la frontera cae un módulo a mitad del símbolo.
La segunda es que el contraste y el tamaño son el mismo problema con ropa distinta. Los bloques son de ocho por ocho píxeles de cámara y no de ocho por ocho módulos, así que cuántos módulos caen dentro de un bloque depende por completo de a qué tamaño aterriza el símbolo en el sensor. Un código que llena el fotograma consigue varios bloques por módulo y un umbral calculado a partir de los bordes de ese mismo módulo. Un código fotografiado desde demasiado lejos consigue un bloque que abarca varios módulos y un umbral promediado entre todos ellos, que es una diferencia efectiva menor a partir de exactamente la misma ilustración. Por eso dimensionar un código para su distancia de escaneo forma parte de su presupuesto de contraste y no es un tema aparte.
La cifra de diseño y la cifra que le llega a la cámara son distintas
Todo lo que hay entre el archivo de diseño y el sensor de imagen resta contraste, y las pérdidas se acumulan en vez de cancelarse. Esa es toda la razón por la que las cifras recomendadas quedan seis veces por encima del suelo del decodificador, y merece la pena desglosarlas en vez de resumirlas, porque la mayoría tienen arreglo y el arreglo es barato.
- El papel no es blanco. El papel de oficina y de offset sin estucar refleja aproximadamente entre el 80 y el 90 % de la luz que le llega. Una relación de diseño de 21:1 no llega como 21:1; llega como lo que permita el soporte antes de poner una gota de tinta.
- La tinta se extiende. Los módulos oscuros invaden las celdas claras contiguas sobre soportes absorbentes, lo que sube el valor más oscuro y baja el más claro dentro de cada bloque que mide el decodificador. El kraft, el papel de periódico y el papel térmico de tique son los peores.
- El brillo y el plastificado añaden luz a ambos. El reflejo especular mete la misma cantidad de luz blanca en los módulos oscuros y en los claros, lo que levanta el nivel de negro y comprime la relación: la misma aritmética que el término de velo de la fórmula de contraste. Un plastificado mate cuesta algo de nitidez y devuelve más contraste del que cuesta.
- La luz ambiente hace lo mismo. Un código en el escaparate de una tienda a plena luz del día tiene un velo de reflejos encima. Un código en un restaurante con poca luz tiene una cámara subiendo la ganancia de su sensor, lo que añade ruido justo a la magnitud que mide el binarizador.
- La exposición automática se ajusta al fotograma, no al código. Un código oscuro sobre una etiqueta clara y pequeña dentro de una foto mayormente oscura se expone para la parte oscura, y la etiqueta se satura hacia el blanco arrastrando los módulos con ella.
- El desenfoque es el multiplicador. El error de enfoque y el movimiento de la mano promedian cada píxel con sus vecinos, y promediar es precisamente lo que reduce la diferencia entre el píxel más claro y el más oscuro dentro de un bloque de 8 x 8. El contraste bajo y un desenfoque leve no se suman, se multiplican, y por eso un código justo pasa cuando alguien apoya el móvil y falla cuando no lo hace.
Las pantallas tienen su propia versión de la misma lista, lo que sorprende a quien da por hecho que una pantalla es un entorno controlado. Un móvil al 20 % de brillo bajo el sol, detrás de un protector de pantalla mate, mostrando un código dentro de un navegador que le ha aplicado un filtro de modo oscuro, no está entregando la relación que dice el archivo de diseño. La relación de diseño es el techo de lo alcanzable, nunca el valor que llega.
Así que la respuesta a "cuánto contraste necesitan los móviles" es que los móviles necesitan muy poco y los flujos de trabajo necesitan mucho. El margen que estás presupuestando no es margen frente al decodificador. Es margen frente a las ocho cosas de arriba, ninguna de las cuales se ve en el monitor donde se toma la decisión.
La escalera de contraste: una prueba que produce tu propia cifra
La forma de encontrar el suelo de contraste para un trabajo concreto es imprimir el mismo código en ocho niveles de contraste descendentes sobre el material real y anotar dónde deja de funcionar. Esto lleva unos veinte minutos, cuesta una hoja de papel y produce una cifra para tu impresora, tu soporte y los móviles de tus clientes, y no para los de otra persona.
Los ocho peldaños de abajo son grises sobre blanco, elegidos para que cada uno caiga en una relación de contraste redonda. Genera el mismo contenido ocho veces, una por cada color de primer plano, mantén el fondo blanco puro, mantén idénticos la forma y el tamaño de módulo en los ocho y colócalos en una sola hoja en el orden indicado.
| Primer plano sobre blanco | Relación de contraste | Diferencia de luminancia (sobre 255) | Diferencia de reflectancia |
|---|---|---|---|
| #000000 | 21:1 | 255 | 100 % |
| #595959 | 7,0:1 | 166 | 90 % |
| #7F7F7F | 4,0:1 | 128 | 79 % |
| #949494 | 3,0:1 | 107 | 70 % |
| #A3A3A3 | 2,5:1 | 92 | 63 % |
| #B7B7B7 | 2,0:1 | 72 | 53 % |
| #D2D2D2 | 1,5:1 | 45 | 36 % |
| #E7E7E7 | 1,24:1 | 24 | 20 % |
- Imprime los ocho peldaños a tamaño final sobre el soporte final. Una hoja, los ocho códigos al tamaño que tendrá el código real, sobre el material que usa el trabajo real. Una impresión láser de oficina en papel de fotocopiadora no es la prueba si el trabajo va sobre kraft, una etiqueta de botella o una carta de menú: la extensión de la tinta varía según el material y se resta del mismo presupuesto que el color.
- Escanea cada peldaño con dos móviles, solo con la cámara nativa. Uno con iOS y otro con Android, usando la aplicación de cámara integrada en vez de una aplicación de escaneo. Las aplicaciones de escaneo dedicadas son más tolerantes que las nativas y pasarán peldaños que tus clientes no pueden. Anota el primer peldaño que falle en cualquiera de los dos móviles.
- Repite bajo la luz en la que va a vivir el código. Lleva la misma hoja al sitio real: la mesa del restaurante, el estante de la tienda, el cartel de exterior al anochecer. La iluminación mueve el punto de fallo más peldaños que ninguna otra variable, y este es el paso que se salta la gente.
- Repite a la distancia y con el ángulo reales. Escanea desde donde se pone una persona de verdad, y una vez a unos 30 grados respecto de la perpendicular. La distancia reduce los píxeles por módulo, lo que encoge la diferencia que ve cada bloque; el ángulo cuesta un poco más de lo mismo.
- Repite sin apoyar el móvil. Sujétalo de la forma descuidada, con una mano y en movimiento. El desenfoque reduce la diferencia entre el píxel más claro y el más oscuro dentro de cada bloque, así que esta ronda suele fallar un peldaño antes que la cuidadosa. La cifra descuidada es la cifra real.
- Diseña dos peldaños por encima del primer fallo. Toma el peor resultado de todas las condiciones y sube dos peldaños de la escalera desde ahí. Dos peldaños son el margen de trabajo para las variables que la prueba no pudo incluir: otro móvil, un día más frío, un cabezal de impresión gastado, un plastificado que la muestra no tenía.
Un peldaño merece una nota. La fila #000000 es un control y no una prueba: si el negro sobre blanco falla en esa hoja, el problema es el tamaño, el enfoque, los reflejos o la zona de silencio, y nada más abajo en la escalera te dirá nada hasta que eso se arregle.
El color no es contraste, y las dos métricas discrepan
La relación de contraste de un color predice mal cómo se comporta ese color ante una cámara, porque las dos cifras están construidas de forma distinta. Una relación de contraste es un único número que compara la luminancia relativa de dos colores, y va de 1:1 para dos colores idénticos a 21:1 para negro sobre blanco. Pondera el verde al 71 % del brillo percibido, aplica una curva gamma y añade un pequeño término de velo que penaliza deliberadamente los pares oscuros. El canal de gris de una cámara pondera el verde al 59 %, el rojo al 30 % y el azul al 11 %, y no añade nada.
| Color sobre blanco | Relación de contraste | Diferencia de luminancia (sobre 255) |
|---|---|---|
| Negro #000000 | 21:1 | 255 |
| Azul marino intenso #0F172A | 17,9:1 | 232 |
| Rojo oscuro #7F1D1D | 10:1 | 197 |
| Azul puro #0000FF | 8,6:1 | 226 |
| Azul de marca #1D4ED8 | 6,7:1 | 176 |
| Verde web #008000 | 5,1:1 | 180 |
| Rojo #DC2626 | 4,8:1 | 163 |
| Rojo puro #FF0000 | 4,0:1 | 179 |
| Verde #16A34A | 3,3:1 | 144 |
| Magenta #FF00FF | 3,1:1 | 150 |
| Naranja #FF7F00 | 2,5:1 | 104 |
| Ámbar #F59E0B | 2,2:1 | 88 |
| Verde puro #00FF00 | 1,4:1 | 105 |
| Cian #00FFFF | 1,25:1 | 76 |
| Amarillo #FFFF00 | 1,07:1 | 29 |
El azul puro es el que destaca y es el hallazgo útil de la tabla. Con 8,6:1 y una diferencia de luminancia de 226 queda segundo solo por detrás del casi negro en las dos medidas, lo que convierte al azul intenso en el color saturado más seguro para un código QR por un margen amplio. Los rojos y los granates oscuros le siguen. Cualquier color cuya relación venga de ser oscuro y no de ser saturado se comporta bien. Qué paletas deja utilizables, y dónde encajan, es el tema de códigos QR de color.
El verde puro es donde más divergen las dos métricas y donde aun así merece la pena fiarse de la relación. Su relación de 1,4:1 parece catastrófica mientras que su diferencia de luminancia de 105 iguala los 104 del naranja, así que la cámara ve más en un código verde de lo que la relación sugiere. Sigue sin ser suficiente: 105 sobre 255 es menos de media escala antes de que el papel, la luz y la lente se lleven su parte, y los códigos verdes son los que funcionan de forma fiable en el mockup y fallan en el estante.
El amarillo, el cian y el ámbar fallan en las dos medidas y no hay técnica que los rescate. El amarillo sobre blanco le da a la cámara una diferencia de 29 niveles sobre 255: apenas por encima de los 24 a los que ZXing deja de buscar bordes siquiera. Un código amarillo no es un código arriesgado, es un objeto decorativo que de vez en cuando se escanea en condiciones perfectas.
El arreglo cuando un color de marca no llega al objetivo es siempre el mismo y va siempre en una dirección: oscurece el código, no aclares el fondo. Los fondos tienen que quedarse cerca del blanco para que la diferencia de reflectancia sobreviva a la impresión, y un color de marca llevado dos o tres pasos más oscuro suele conservar su identidad mientras dobla su relación. Cuando eso es inaceptable, pon el color de marca en el marco, en la etiqueta y en la llamada a la acción alrededor del código y deja el código oscuro: los códigos QR de marca son sobre todo esto, y no cuestan contraste alguno.
Los módulos claros sobre fondo oscuro son un problema aparte
Un código QR invertido -módulos claros sobre fondo oscuro- puede tener una relación de contraste perfecta y aun así fallar, porque la relación es simétrica y el decodificador no. El blanco sobre negro calcula los mismos 21:1 que el negro sobre blanco, y ninguna comprobación de contraste lo va a señalar en ningún sitio. Lo que varía es si el software del otro lado está dispuesto a probar la imagen en los dos sentidos.
Las aplicaciones de cámara actuales de iPhone y Android manejan por lo general los códigos invertidos, y esto ha ido mejorando de forma sostenida. Donde se rompe es en el hardware más antiguo: los lectores de imagen fijos, los escáneres de punto de venta y los equipos de almacén esperan con frecuencia datos oscuros sobre fondo claro y no tienen ninguna pasada de inversión, y el propio ZXing solo invierte cuando la aplicación que lo llama envuelve la imagen en la fuente de luminancia invertida que ofrece: una decisión de quien construyó la aplicación, no del código.
La regla práctica es que la inversión es una apuesta sobre el lector, no una propiedad del código. Para un cartel, una pantalla o una publicación en redes que leen móviles, un código invertido es una elección de diseño razonable. Para cualquier cosa que un cliente pueda escanear con un equipo desconocido, o cualquier cosa que se lea en una caja, es echarlo a cara o cruz por motivos estéticos, y la versión segura -un código oscuro dentro de un panel claro, sobre el fondo oscuro- cuesta un rectángulo.
Hay una asimetría más que merece la pena nombrar, porque es invisible en pantalla. Imprimir un código claro sobre fondo oscuro significa poner una gran masa oscura sólida, y la cobertura sólida se extiende más que la dispersa. Los módulos claros son los que encogen, y son los que el decodificador está leyendo como la mitad clara del par. Un código invertido pierde por tanto más contraste en impresión que el mismo código del derecho.
Lo que la norma de impresión mide en vez de una relación
El mundo del código QR tiene su propia medida de contraste y no es una relación. El contraste del símbolo es la medida de calidad de impresión que ISO/IEC 15415 define como la diferencia de reflectancia entre el punto más claro y el punto más oscuro de un símbolo. Se expresa en puntos porcentuales y se califica de la A a la F. Un verificador lo informa junto a la modulación, el daño en los patrones fijos, la falta de uniformidad de la cuadrícula y la corrección de errores no usada, y la calificación global del símbolo es la peor de todas ellas.
La distinción importa porque una diferencia de reflectancia y una relación de contraste no son versiones convertibles de lo mismo. La reflectancia es luz lineal; una relación de contraste le aplica encima una curva gamma y un término de velo. Haz la cuenta y la divergencia es grande: una diferencia de reflectancia del 40 %, el nivel que exigen habitualmente las especificaciones del comercio minorista, corresponde frente a un blanco ideal a una relación de contraste de alrededor de 1,6:1, y una diferencia del 70 % a alrededor de 3:1. Un par de colores que un verificador de accesibilidad web rechaza de plano puede ser un código de barras perfectamente conforme.
Eso no es permiso para diseñar a 3:1. Es una explicación de por qué las dos industrias no coinciden: un verificador mide una muestra impresa bajo luz controlada, a una distancia fija y con el símbolo llenando la apertura, y la relación de un diseñador tiene que sobrevivir a un móvil en un bolsillo. La norma mide el artefacto, y la relación se está usando como aproximación de toda la cadena.
La trampa que hay dentro de la norma es la luz que usa. La verificación de códigos de barras se realiza bajo iluminación roja de 660 nanómetros, la longitud de onda que usaban los escáneres láser originales y que los verificadores modernos siguen emulando; la calificación de un símbolo se cita junto a ella, como en 4.0/20/660. La tinta roja refleja la luz roja, así que un código rojo sobre papel blanco casi no tiene contraste a 660 nm y se califica como ilegible mientras se escanea a la perfección en cualquier móvil. Esta es la razón concreta por la que un código QR rojo puede pasar todas las comprobaciones que hace un diseñador y fallar en una caja o en un lector de imagen de almacén.
La regla que se deduce de ello: cualquier cosa que lean equipos fijos y no clientes debería ser negra sobre blanco, al tamaño que pida la documentación de ese equipo, y verificada en vez de mirada a ojo. Cualquier cosa que lean móviles tiene disponible todo el espacio de color, menos las partes que descarta la tabla de arriba.
Las cifras a las que diseñar
Apunta a una relación de contraste de al menos 7:1 para cualquier cosa impresa, de al menos 4:1 para cualquier cosa que se muestre en pantalla, y trata 3:1 como el punto por debajo del cual un código no debería publicarse por bien que quede en el mockup. Esas cifras son objetivos de diseño con las pérdidas de las secciones anteriores ya incluidas en el precio, no umbrales que nadie haya medido en un móvil.
- Impresión en condiciones no controladas: cartas, envases, señalética, pegatinas. 7:1 o mejor. El negro o el casi negro sobre blanco es 21:1 y no cuesta nada; el hueco entre 21:1 y 7:1 es donde cabe un color de marca.
- Impresión sobre soportes absorbentes o difíciles: kraft, papel de periódico, tiques, tela, superficies grabadas. No gastes contraste en absoluto. Negro sobre el fondo más claro disponible, y mete el presupuesto en el tamaño de módulo.
- Pantallas: webs, presentaciones, pantallas de aplicación, vídeo. 4:1 o mejor, entendiendo que el brillo del espectador y la luz ambiente quedan fuera de tu control.
- Cualquier cosa leída por escáneres fijos, o regida por una especificación. Negro sobre blanco, verificado. Aquí el color es un riesgo sin ventaja alguna, y el rojo es un riesgo con un modo de fallo concreto.
- Por debajo de 3:1. No lo publiques. No es un código justo que algunos móviles sacarán adelante: es un código cuyo margen entero se ha gastado antes de elegir el papel.
Una comprobación que es fácil olvidar: los tres marcadores de esquina cuentan. Un escáner localiza un código QR por sus patrones de localización antes de decodificar nada, así que un código cuyos módulos son oscuros y cuyas esquinas van en un color de acento pálido tiene su contraste más débil justo donde el fallo es irrecuperable. Sea cual sea la herramienta que uses, evalúa el color de las esquinas contra el fondo por separado y toma la peor de las dos cifras como el contraste real del código.
KoloQR, un generador de códigos QR gratis con códigos QR circulares y de formas personalizadas, calcula ese par automáticamente: la insignia junto a la vista previa informa de la relación de contraste del color del patrón y del color de las esquinas contra el fondo, muestra la peor de las dos y aprueba a 4:1. Juzga un fondo transparente como blanco, ya que es donde suele aterrizar un código transparente. Puedes montar la escalera en el generador exportando el mismo contenido en cada uno de los ocho grises de arriba e imprimiendo la hoja.
El límite honesto de todo lo anterior: ninguna de estas cifras garantiza un escaneo en hardware que no hemos probado, y hemos evitado deliberadamente publicar una cifra para ningún móvil concreto porque no hemos medido ninguna. La escalera existe para que puedas hacerlo tú. Veinte minutos y una hoja de papel producen una cifra que es cierta para tu trabajo, que vale más que cualquier cifra de este artículo.
Cuándo el contraste no es en realidad el problema
La mayoría de los códigos QR de los que se culpa al contraste fallan por una de otras cuatro razones, y subir el contraste no cambia nada en ninguna de ellas. Repasar esta lista primero es más rápido que hacer la escalera, porque tres de las cuatro se ven sin necesidad de un móvil.
- El código es demasiado pequeño para la distancia. Por debajo de unos 0,4 mm por módulo impreso, las cámaras de los móviles sufren sean cuales sean los colores. Mide un módulo antes de tocar nada más.
- Se ha recortado la zona de silencio. ISO/IEC 18004 especifica un margen libre de cuatro módulos alrededor del símbolo, y un diseñador que reclama ese espacio para la maquetación es una de las causas más comunes de un código que fotografía precioso y no decodifica nunca.
- La imagen se guardó como JPEG en algún punto del flujo de trabajo. La compresión JPEG pone anillos tenues alrededor de cada módulo, lo que baja la diferencia local justo dentro de los bloques que mide el binarizador. Parece un problema de contraste y es un problema de formato de archivo.
- Reflejos. Un plastificado brillante o una pantalla que refleja una luz de techo no reducen en nada el contraste de diseño: añaden una mancha luminosa sobre parte del símbolo, y los bloques bajo esa mancha pierden su diferencia mientras el resto del código está bien. Inclinar el móvil lo arregla, que es la pista.
La corrección de errores también pertenece a esta lista, en negativo. Subir el nivel de M a H no ayuda a un código con poco contraste, porque la corrección de errores repara módulos que el decodificador leyó mal y el contraste bajo impide que el decodificador llegue a leer el símbolo. El equilibrio entre capacidad de recuperación y tamaño de módulo es una decisión real, y no es la palanca para este problema. La palanca para este problema es un primer plano más oscuro, un fondo más claro o un código más grande.
El fallo relacionado que conviene conocer, ya que la decoración y el contraste se pagan del mismo presupuesto: las formas decorativas de módulo entintan menos celda que los módulos cuadrados, lo que reduce la diferencia local que mide el binarizador igual que lo hace el contraste bajo. Lo que cuesta en realidad una forma de código QR personalizada desarrolla esa aritmética, y los dos efectos se acumulan: un código con estilo en un color de marca pálido está gastando dos veces de un solo presupuesto.
Crea tu código QR
Gratis, sin cuenta y sin marca de agua. Elige una forma, añade un logo, comprueba el contraste y exporta SVG, PDF, EPS o PNG: un código estático sin ninguna suscripción detrás.
Generar código QRQuestions? Answered
Como objetivo de diseño, 7:1 para impresión y 4:1 para pantallas, con 3:1 como la línea por debajo de la cual un código no debería publicarse. El suelo del propio decodificador es mucho más bajo -ZXing deja de detectar un borde cuando los píxeles más claro y más oscuro de un bloque se diferencian en 24 sobre 255, alrededor de 1,24:1-, pero ese suelo se aplica a una imagen digital limpia, no a tinta sobre papel bajo la luz de una tienda.
Ni Apple ni Google publican un umbral, así que cualquier cifra concreta que veas citada no es una medición que nadie pueda comprobar. Los dos decodificadores son de código cerrado. El único punto de referencia legible es ZXing, que se rinde alrededor de 1,24:1 en una imagen limpia, y la respuesta práctica para un trabajo real es imprimir una escalera de niveles de contraste descendentes y encontrar dónde falla tu propia combinación de soporte, luz y móviles.
Porque una pantalla entrega el contraste de diseño y el papel no. El soporte blanco refleja entre el 80 y el 90 % en vez del 100 %, la tinta se extiende hacia las celdas claras contiguas a cada módulo oscuro, y el brillo o la luz ambiente añaden un velo luminoso sobre ambos. Un par que calcula 3:1 en el archivo de diseño puede llegar a la cámara más cerca de 2:1. Prueba sobre el material real y a tamaño final, nunca en un monitor.
Normalmente sí, si el color es oscuro y no solo saturado. Los azules intensos, los azules marinos y los rojos oscuros superan todos 7:1 sobre blanco y se comportan bien ante la cámara. Los naranjas, los ámbares, los cianes y los amarillos no, y ningún nivel de corrección de errores los rescata. Cuando un color de marca se queda corto, oscurece el código en vez de aclarar el fondo, o mantén el código oscuro y pon el color de marca en el marco que lo rodea.
En los móviles actuales, normalmente sí. En escáneres antiguos o fijos, con frecuencia no. Una relación de contraste es simétrica, así que el blanco sobre negro calcula los mismos 21:1 que el negro sobre blanco y ninguna comprobación de contraste te avisará: lo que varía es si el lector prueba la imagen invertida. Los códigos invertidos también pierden más contraste en impresión, porque la cobertura oscura sólida se extiende hacia los módulos claros. Úsalos donde los móviles sean el único lector.
Un degradado suele sobrevivir y una fotografía suele no hacerlo, y la razón es que los decodificadores umbralizan localmente. ZXing calcula una frontera claro-oscuro distinta para cada bloque de 8 x 8 píxeles, así que un fondo que cambia despacio mantiene intacta la diferencia local en todas partes. Una fotografía cambia más rápido que el código, así que en algún punto del símbolo los módulos acaban del lado equivocado del umbral de su propio bloque.
Porque los verificadores de códigos de barras y muchos escáneres fijos leen bajo luz roja de 660 nanómetros, y la tinta roja refleja la luz roja. Un código rojo sobre papel blanco casi no tiene contraste a esa longitud de onda aunque una cámara de color lo vea con claridad. Es una trampa conocida del mundo de los códigos de barras 1D y se aplica sin cambios a los códigos QR. Cualquier cosa escaneada por equipos fijos debería ser negra sobre blanco.
Sobre blanco no. El amarillo sobre blanco le da a una cámara una diferencia de luminancia de 29 niveles sobre 255, apenas por encima de los 24 a los que ZXing deja de buscar bordes siquiera, y una relación de contraste de 1,07:1. Los pasteles quedan solo un poco mejor. Si la paleta pálida es el requisito, invierte el problema: un código oscuro dentro de un panel pálido conserva la paleta y conserva el contraste.
No, y este es el arreglo equivocado más común. La corrección de errores repara módulos que se leyeron mal; el contraste bajo impide que el símbolo llegue a leerse, porque la binarización ocurre antes de que exista dato alguno que reparar. Subir el nivel de M a H además hace el símbolo más denso al mismo ancho impreso, lo que encoge cada módulo y empeora un código justo en vez de mejorarlo.
Más, en el sentido de que fallar ahí es irrecuperable. Un escáner localiza un código QR por sus tres marcadores de esquina antes de decodificar nada, así que unas esquinas pálidas en un código oscuro ponen el contraste más débil justo donde la corrección de errores no llega. Evalúa el color de las esquinas contra el fondo por separado y trata la peor de las dos cifras como el contraste real del código.
Sigue explorando
Páginas que continúan donde esta termina: el mismo contexto, el mismo tipo de código o la siguiente decisión que tomar.
Tiendas físicas
Fichas de producto, stock y enlaces de reseña en etiquetas de estante, escaparates y carteles de caja.
Agencias de eventos
Códigos producidos para el evento de otra persona: redirecciones del cliente, especificaciones para expositores, tiradas de acreditaciones y señalética a la medida de la sala.
Códigos QR de color
Lleva tu paleta a un código QR sin romperlo: qué color va en el patrón y cuál pertenece al marco.
Banners y lonas
Roll-ups, fondos de feria y lonas de exterior: el tamaño que exige la distancia, la altura que funciona y por qué la malla y el viento rompen escaneos.
Vehículos
Furgonetas, coches y rotulación de flota: el tamaño que necesita el código desde la acera y la parte de la carrocería donde sobrevive a remaches, juntas y suciedad.
Un código QR en un anuncio de vídeo necesita un tercio de la pantalla. Le dan una esquina
Un código QR en un anuncio de vídeo tiene que ocupar entre un cuarto y un tercio de la altura de la pantalla para que un móvil en el sofá pueda leerlo. Casi todos los que has visto son un logotipo en una esquina, y hemos medido qué les pasa a esos.
¿Por qué KoloQR?
- Crea códigos QR para sitios web, menús, Wi-Fi, PDF y tarjetas de visita
- Personaliza colores, logotipos y formas únicas
- Descarga archivos PNG y SVG de alta calidad
- Pensado tanto para impresión como para digital

