GuiaNacho G.13 min de lectura

Niveles de Corrección de Errores QR: Reed-Solomon

Niveles de corrección de errores en códigos QR (L, M, Q, H) explicados con la matemática Reed-Solomon real, el trade-off por versión y datos de daño real.

Niveles de Corrección de Errores QR: Reed-Solomon

Este articulo fue escrito por el equipo de QR Nova. Desarrollamos software de codigos QR, lo que puede influir en nuestra perspectiva.

Todos los artículos sobre niveles de corrección de errores en códigos QR repiten los mismos cuatro puntos: L recupera un 7%, M un 15%, Q un 25%, H un 30%. Copiar, pegar, listo. Ninguno explica por qué existen esos números exactos, qué hace en realidad un código QR con los datos recuperados, ni por qué un código de nivel H puede, en ciertas condiciones reales, escanear peor que uno de nivel M. Los niveles de corrección de errores controlan cuántos codewords de paridad Reed-Solomon se añaden a un código QR, y ese número es un intercambio directo contra la capacidad de datos y el tamaño físico del código, no solo un "porcentaje de protección" abstracto. Entender ese intercambio, no memorizar cuatro letras, es lo que realmente determina si tu código escanea de forma confiable. El generador gratuito de QR Nova crea cada código con máxima protección por defecto, así que vale la pena entender este intercambio, actives o no un panel de ajustes.

TL;DR

  • Los cuatro niveles (L 7%, M 15%, Q 25%, H 30%) describen la proporción de codewords de paridad Reed-Solomon añadidos, no solo una puntuación genérica de "resistencia al daño".
  • Pasar de L a H reduce la capacidad de datos utilizable entre un 53% y un 57% en cualquier versión de QR, según las tablas de codewords de ISO/IEC 18004.
  • La prueba de 2021 del desarrollador Huon Wilson con ZBar, que escaneó las 40 versiones y los 4 niveles de corrección, encontró que los códigos de nivel H escanearon con éxito un 60% más de veces que los de nivel L bajo daño simulado, pero el nivel H también fuerza una versión de QR más grande y densa para los mismos datos, lo que puede necesitar más campo de visión para escanear que el nivel L.
  • El nivel H es necesario para logos superpuestos y entornos físicos exigentes. Perjudica activamente la fiabilidad de escaneo en códigos pequeños, limpios y bien iluminados por la densidad extra que impone.
Gráfico de barras que compara codewords de datos frente a codewords de paridad Reed-Solomon en los niveles de corrección L, M, Q y H

¿Qué son los niveles de corrección de errores de un código QR?

Genera un código QR de máxima protección — gratis

Empezar

Los niveles de corrección de errores de un código QR son cuatro configuraciones, L, M, Q y H, que determinan cuántos codewords de paridad Reed-Solomon se añaden a los datos durante la codificación. Un nivel que reserva más codewords de paridad puede reconstruir más datos corruptos si el código impreso se daña, se tapa parcialmente o se lee mal, pero deja menos codewords disponibles para tu contenido real al mismo tamaño físico. Por eso la elección no es "cuál nivel es mejor", sino "cuánta capacidad de datos estoy dispuesto a sacrificar por cuánta tolerancia al daño".

Todos los códigos QR que has escaneado alguna vez ya hicieron este intercambio, sin que quien los generó lo supiera necesariamente. La mayoría de generadores usan el nivel M por defecto, la propia recomendación de DENSO Wave para uso general, porque equilibra razonablemente bien capacidad y resiliencia sin que nadie tenga que pensarlo.

Si necesitas primero la decisión práctica en lenguaje llano, nuestra guía de los cuatro niveles ECC y nuestro desglose de qué nivel usar para logos, impresión y señalización exterior cubren ese terreno por su cuenta. Este artículo se centra en el mecanismo Reed-Solomon, la matemática de capacidad por versión y los datos reales de escaneo detrás de esas recomendaciones.

Los cuatro niveles, con precisión

  • L (Bajo): recupera hasta un 7% de codewords dañados. Capacidad de datos máxima en una versión dada.
  • M (Medio): recupera hasta un 15%. El predeterminado en la mayoría de generadores y el que recomienda DENSO Wave para uso general.
  • Q (Cuartil): recupera hasta un 25%. Se usa en códigos con desgaste moderado esperado, plantas de fábrica, etiquetas de almacén.
  • H (Alto): recupera hasta un 30%. Necesario para logos superpuestos y entornos físicos exigentes.

Esos porcentajes no son lenguaje de marketing, son la salida directa de cuántos codewords de paridad asigna el estándar en cada nivel, que es donde entra el mecanismo real.

Por Qué Existen Cuatro Niveles: El Mecanismo Reed-Solomon Detrás de L, M, Q, H

Los códigos QR usan codificación Reed-Solomon, la misma familia de códigos de corrección de errores que se usa en CDs, DVDs y comunicaciones espaciales, para proteger los datos frente al daño físico. El mecanismo es el mismo en los cuatro niveles; lo que cambia es cuántos codewords de paridad genera cada uno. Para la especificación completa bajo la que se definen estos niveles, consulta nuestro resumen en lenguaje claro de ISO 18004, el estándar de códigos QR.

El campo de Galois GF(256), en términos simples

La matemática de Reed-Solomon ocurre dentro de GF(256), un campo de Galois con exactamente 256 elementos, uno por cada valor de byte posible (0-255). La suma en GF(256) es simplemente XOR, sin acarreo, totalmente reversible. La multiplicación sigue un polinomio primitivo fijo (los códigos QR usan x^8 + x^4 + x^3 + x^2 + 1), lo que permite expresar cada valor distinto de cero como una potencia de una raíz primitiva, convirtiendo la multiplicación en una simple suma de exponentes.

La razón por la que esto importa: en la aritmética normal, dividir dos números puede producir una fracción sin resto exacto. Dentro de un campo finito como GF(256), todo elemento distinto de cero tiene un inverso multiplicativo exacto, así que la división de polinomios siempre produce un cociente y un resto limpios. Esa propiedad es la base entera de la corrección de errores Reed-Solomon. Sin ella, el truco de "revisar el resto" que detecta y localiza errores simplemente no funcionaría.

Cómo los niveles de corrección cambian la división de codewords

Durante la codificación, tus datos se convierten en un polinomio. Se multiplican por x^r (donde r es el número de codewords de paridad del nivel elegido) y se dividen entre un polinomio generador construido con potencias consecutivas de la raíz primitiva de GF(256). El resto de esa división, exactamente r bytes, se convierte en los codewords de paridad añadidos a tus datos.

r es todo el mecanismo detrás de las cuatro letras. Un nivel de corrección más alto simplemente significa un r mayor, más codewords de paridad calculados y almacenados, lo cual también explica por qué reduce directamente los codewords de datos disponibles en una versión de QR fija. Un escáner puede corregir hasta r / 2 codewords corruptos (o hasta r "borrados" conocidos, posiciones marcadas como poco fiables durante el muestreo) usando cálculos de síndrome y los algoritmos Berlekamp-Massey y Forney. Recorremos esa secuencia de decodificación paso a paso en nuestra guía sobre cómo funciona técnicamente el escaneo de códigos QR; este artículo se centra en lo que cambia entre L, M, Q y H, no en el pipeline de decodificación en sí.

El Verdadero Costo: Corrección de Errores vs. Capacidad de Datos

Aquí está la parte que casi ningún artículo muestra: exactamente cuánta capacidad cuesta cada nivel, en versiones reales de QR, usando las tablas de codewords definidas en ISO/IEC 18004.

Versión QR Codewords totales Codewords de datos en L en M en Q en H Pérdida de capacidad L → H
1 (21×21) 26 19 16 13 9 53%
5 (37×37) 134 108 86 62 46 57%
10 (57×57) 346 271 213 151 119 56%
40 (177×177) 3706 2953 2331 1663 1273 57%

El total de codewords por versión nunca cambia, eso lo fija el tamaño físico de la cuadrícula. Lo que cambia es la división entre codewords de datos y de paridad. Mira la última columna: en cada versión revisada, pasar del nivel L al H cuesta entre un 53% y un 57% de tu capacidad de datos utilizable, una proporción constante sin importar el tamaño del código. Este es el número que debería guiar tu elección de nivel más que los porcentajes en bruto.

Por qué más corrección hace el código más grande, no solo "más seguro"

Como el total de codewords por versión es fijo, codificar la misma cantidad de datos en un nivel de corrección más alto suele obligar a tu generador a saltar a la siguiente versión de QR, más módulos, un símbolo impreso físicamente más grande o más denso, para acomodar tanto tus datos como los codewords de paridad extra. Una URL que cabe cómodamente en un código versión 3 con nivel L podría necesitar una versión 5 con nivel H. Es una diferencia de tamaño real y visible en tu material impreso, no un detalle técnico oculto.

Tolerancia Real al Daño: Teoría vs. Lo Que Ocurre en la Práctica

Las cifras de 7/15/25/30% son máximos teóricos bajo daño ideal, distribuido de forma uniforme. El experimento de 2021 del desarrollador Huon Wilson puso a prueba eso frente a daño simulado más realista, reflejos, suciedad y obstrucción parcial, usando el decodificador de código abierto ZBar.

Wilson superpuso 10 patrones de ruido en 8 niveles de daño sobre las 40 versiones de QR en los 4 niveles de corrección de errores, 12.800 configuraciones en total, y contó cuántas se escanearon con éxito.

Los códigos de nivel H se escanearon con éxito 2.001 veces del conjunto completo de configuraciones, el nivel M 1.600 veces, el nivel Q 1.839 veces, y el nivel L solo 1.257 veces, aproximadamente un 60% más de escaneos exitosos en nivel H que en nivel L en general. Pero la corrección de errores funciona en ambas direcciones: en una versión de QR fija, los niveles más altos escanean con más fiabilidad bajo daño; con una cantidad fija de datos codificados, los niveles más altos fuerzan una versión mayor con más módulos totales, lo que puede requerir un campo de visión más amplio para escanear que un código de nivel más bajo con los mismos datos. (Huon Wilson, "QR error correction helps and hinders scanning," 2021)

Dos cosas destacan aquí. Primero, la brecha del 60% entre L y H bajo daño simulado es un resultado de escaneo real y medido, no una estimación de marketing, exactamente el tipo de evidencia que los artículos genéricos de "aquí están los cuatro porcentajes" nunca citan. Segundo, el hallazgo de Wilson de que una corrección de errores más alta también puede perjudicar el escaneo, una vez que se tiene en cuenta la versión de QR mayor que fuerza con una longitud de datos fija, es el mismo intercambio entre capacidad y densidad que este artículo mide en codewords más arriba, obtenido de forma independiente mediante pruebas de escaneo reales y no de las tablas de ISO/IEC 18004. Para ser justos, ZBar es un decodificador entre varios, y el escáner de cámara nativo de un teléfono puede comportarse distinto ante una misma imagen de prueba. La matemática Reed-Solomon de fondo no cambia según qué software la lea, así que el intercambio que midió Wilson no es un artefacto de su montaje de prueba en particular.

Gráfico de barras que muestra el número de escaneos exitosos por nivel de corrección L, M, Q y H en la prueba de Huon Wilson (2021)

Por Qué los Logos Superpuestos Necesitan Específicamente el Nivel H

Un logo centrado no mordisquea los bordes de un código QR, elimina un bloque sólido de módulos en la parte más densa y central del símbolo. Es exactamente el tipo de daño concentrado que la corrección de errores tiene que absorber, y consume el mismo presupuesto de corrección que el desgaste físico. Cubrimos la regla del 20% para el tamaño del logo por separado en cómo agregar un logo a un código QR; aquí está el mecanismo detrás de por qué se necesita específicamente el nivel H.

Toma un código QR versión 5. En nivel Q, tiene 72 codewords de paridad de 134 totales, lo que da una capacidad de corrección de unos 36 codewords, cerca del 27% del símbolo. En nivel H, tiene 88 codewords de paridad, una capacidad de corrección de unos 44 codewords, cerca del 33% del símbolo, antes incluso de contar las zonas de información de formato y patrones de localización que quedan fuera del área de datos corregible.

Un logo que suele recomendarse mantener entre un 20% y un 30% del área visual de un código QR consume por sí solo casi todo el presupuesto de corrección del nivel Q, dejando casi ningún margen para imperfecciones de impresión, manchas de tinta o una esquina algo desgastada. Piensa en el presupuesto de corrección como una cuenta bancaria: el logo hace su retiro primero, antes de que un rayón o un reflejo tengan siquiera la oportunidad de hacer el suyo. En nivel H, ese mismo logo deja suficiente margen para absorber también la variación normal de impresión. Este es el mecanismo real detrás del consejo que verás en todas partes de "usa nivel H para logos", no es una regla arbitraria, es una consecuencia directa de cuánto presupuesto de corrección consume un logo centrado.

Código QR impreso con un logo circular centrado sobre un empaque de producto, ilustrando cómo un logo consume presupuesto de corrección de errores

Cuándo la Corrección de Errores Alta Puede Salir Mal

Aquí está la parte que casi ninguna guía menciona, incluida la advertencia de "cuándo no usar H" en nuestra propia guía de niveles ECC: el nivel de corrección de errores y la capacidad de escaneo no son el mismo eje, y forzar el nivel H en un código que no lo necesita puede hacer que escanee peor. Lo que sigue es el mecanismo detrás de esa advertencia, no solo la recomendación.

Como un nivel de corrección más alto reduce tu capacidad de datos utilizable o fuerza una versión de QR más grande con la misma cantidad de datos, un nivel innecesariamente alto produce una cuadrícula de módulos más densa al mismo tamaño de impresión. Módulos más densos significan cuadrados individuales más pequeños, y los cuadrados más pequeños son más difíciles de resolver para una cámara a distancia, con poca luz o en un teléfono más antiguo o de gama baja. El algoritmo de corrección funcionando al 100% de su capacidad no ayuda si el paso de binarización previo no puede resolver los módulos individuales con claridad. Terminas cambiando un beneficio de tolerancia al daño que no necesitabas por un costo de escaneabilidad que no querías.

Esto falla de forma más visible en tres situaciones:

  • Códigos impresos pequeños sin logo. Una tarjeta de presentación o etiqueta de producto de 2-3 cm no necesita la penalización de densidad del nivel H si el destino no tiene logo superpuesto y el entorno de impresión es limpio.
  • Códigos mostrados en pantalla. Un código mostrado en una laptop o TV para escanear rara vez se daña; forzar el nivel H añade densidad sin ningún beneficio correspondiente.
  • Hardware de escaneo económico o antiguo. Si tu audiencia probablemente escaneará con teléfonos Android económicos o cámaras antiguas, un nivel de corrección más bajo con módulos más grandes y limpios suele escanear más fiablemente que un código más denso y de nivel más alto al mismo tamaño físico.

El valor predeterminado correcto es el nivel M para uso general, subiendo a Q o H solo cuando el código tiene un logo, enfrentará desgaste físico real, o vive en un lugar donde la calidad de impresión no se puede controlar de cerca, no al revés.

Cómo Elegir el Nivel Correcto: Tres Ejemplos Reales

El nivel correcto depende por completo de qué encontrará el código físicamente. Tres escenarios cubren la mayoría de casos reales:

Baja complejidad: un código QR de menú en atril de mesa

Iluminación interior limpia, impreso en cartulina nueva, sin logo, escaneado desde 20-30 cm. El nivel L o M es suficiente. No hay daño que corregir, y mantener baja la densidad de módulos maximiza la velocidad y fiabilidad de escaneo en una amplia gama de cámaras de teléfono.

El mismo entorno limpio, pero ahora un logo centrado ocupa cerca del 20% del área del código. El nivel H es necesario aquí, no porque el volante vaya a dañarse, sino porque el logo en sí es una forma de pérdida de datos concentrada e intencional que solo el presupuesto de corrección del nivel H absorbe cómodamente.

Alta complejidad: una etiqueta de activo para equipo exterior

Una etiqueta resistente a la intemperie remachada a equipo industrial, expuesta a decoloración solar, suciedad, rayones y años de manipulación, sin logo pero con riesgo físico real. El nivel H también es la decisión correcta aquí, por una razón completamente distinta a la del volante: desgaste físico real y acumulado a lo largo de una vida útil de varios años, no una decisión de diseño.

Cómo Maneja QR Nova la Corrección de Errores

El generador gratuito de QR Nova genera cada código en nivel H, el nivel máximo con un 30% de recuperación, de forma automática, sin registro, sin ajuste que buscar, sin plan de pago de por medio, sin pasos extra. Es un costo deliberado: sacrifica algo de capacidad de datos en cada código (la pérdida del 53-57% que medimos arriba), a cambio de la mayor tolerancia al daño disponible en cualquier código que crees, con logo o sin él.

Esto importa sobre todo en los dos casos que esta guía ya marca como necesarios para el nivel H: logos superpuestos y códigos que enfrentarán desgaste físico real. Si tu prioridad es encajar una URL larga o una vCard extensa en un código limpio y de uso solo digital, las tablas de capacidad de arriba son lo que hay que revisar antes de comprometerte con un contenido largo, ya que el nivel en sí no es algo que puedas bajar.

Los códigos estáticos generados con QR Nova, URL, WiFi, vCard, PDF, llevan ese nivel de corrección de errores incorporado permanentemente en la imagen, sin dependencia de servidor, sin suscripción necesaria para que el código siga funcionando.

Checklist Rápido de Decisión

Úsalo para elegir un nivel en menos de un minuto:

Situación Nivel recomendado
Limpio, interior, sin logo, uso general M
Almacén, planta de fábrica, desgaste moderado esperado Q
Logo que cubre 15% o más del área del código H
Exterior, industrial, o exposición física de varios años H
Tamaño de impresión muy pequeño, sin logo, entorno limpio L o M (evita densidad innecesaria)
Maximizar capacidad de datos (URLs largas, vCards) L

Si tienes dudas sobre qué nivel te conviene, esta tabla es la forma más rápida de decidir antes de generar nada. El generador gratuito de QR Nova crea cada código en nivel H automáticamente, así que siempre obtienes la máxima tolerancia al daño sin configurar nada, solo ten en cuenta el costo de capacidad si vas a codificar una URL larga.

Preguntas frecuentes

¿Qué son los niveles de corrección de errores de un código QR?

Son cuatro configuraciones, L, M, Q y H, que determinan cuántos codewords de paridad Reed-Solomon se añaden a un código QR junto a sus datos reales. El nivel L reserva la menor redundancia y recupera hasta un 7% de codewords dañados; el nivel H reserva la mayor y recupera hasta un 30%. El costo es la capacidad de datos: más codewords de paridad significa menos espacio para tu contenido real y un símbolo físicamente más grande o más denso con la misma cantidad de datos.

¿Cuál es la diferencia entre los niveles de corrección L, M, Q y H?

L (Bajo) recupera hasta un 7% de codewords dañados y maximiza la capacidad de datos. M (Medio) recupera hasta un 15% y es el predeterminado en la mayoría de generadores. Q (Cuartil) recupera hasta un 25% y sirve para desgaste moderado. H (Alto) recupera hasta un 30% y es necesario para logos superpuestos o entornos físicos exigentes. Cada nivel adicional cuesta entre un 15% y un 20% de capacidad de datos utilizable, a cualquier versión de QR.

¿Qué nivel de corrección debo usar en un código QR con logo?

Usa el nivel H. Un logo centrado que cubre entre un 20% y un 30% del área del código consume por sí solo una gran parte del presupuesto de corrección, y solo el límite del 30% del nivel H deja margen suficiente para el logo más las imperfecciones normales de impresión. En los niveles M o Q, un logo de ese tamaño puede superar la tasa de error recuperable y provocar fallos de escaneo, sobre todo en cámaras de gama baja.

¿Un nivel de corrección más alto hace que el código QR sea más grande?

Sí, si la cantidad de datos se mantiene igual. Pasar del nivel L al nivel H en una misma versión de QR reduce la capacidad de datos utilizable casi a la mitad (entre un 53% y un 57% según las tablas de ISO/IEC 18004), por lo que codificar la misma cantidad de datos en nivel H suele obligar al generador a saltar a una versión mayor, con más módulos, es decir, un código impreso físicamente más grande o más denso.

¿Cómo funciona realmente la corrección de errores Reed-Solomon en un código QR?

El codificador trata los datos como un polinomio sobre GF(256), un campo finito de 256 valores de byte, y lo divide entre un polinomio generador para producir codewords de paridad, que se añaden a los datos. Un escáner recalcula la misma división; un resto distinto de cero (el síndrome) indica daño, y los algoritmos Berlekamp-Massey y Forney localizan y corrigen los errores, hasta la mitad del número de codewords de paridad añadidos. Explicamos ese proceso completo de decodificación en nuestra guía sobre cómo funciona técnicamente el escaneo de códigos QR.

¿Demasiada corrección de errores puede hacer que un código QR sea más difícil de escanear?

Sí. El nivel de corrección de errores y la capacidad real de escaneo son variables distintas, y forzar el nivel H en un código que no lo necesita hace que la cuadrícula de módulos sea más densa al mismo tamaño de impresión, lo que puede perjudicar el escaneo con poca luz, a distancia o con cámaras económicas. La prueba de 2021 del desarrollador Huon Wilson con ZBar, que escaneó las 40 versiones de QR con los cuatro niveles de corrección, encontró que, para una misma cantidad de datos, la versión de QR más grande y densa del nivel H puede necesitar más campo de visión para escanear que la del nivel L, confirmando que la densidad innecesaria tiene un costo medible.

¿Qué nivel de corrección de errores usa QR Nova por defecto?

QR Nova genera cada código en nivel H, el nivel máximo con un 30% de recuperación, de forma automática. No hay ningún ajuste oculto en un panel ni un plan de pago detrás, cada código gratuito recibe la mayor tolerancia al daño disponible por defecto. El costo es la capacidad de datos reducida que explicamos antes, algo a tener en cuenta si codificas una URL larga o un contenido extenso como una vCard.

¿El nivel H es siempre la opción más segura para códigos QR impresos?

No. El nivel H es la opción correcta específicamente para logos superpuestos, exposición exterior o industrial, y códigos impresos en materiales propensos al daño. Para un código limpio, bien iluminado, en interiores y sin logo, el nivel M o incluso L escanea igual de bien y mantiene el símbolo impreso más pequeño y menos denso, lo cual es en sí mismo una ventaja de escaneabilidad.

Genera un código QR de máxima protección — gratis

Empezar