Níveis de Correção de Erros QR: Reed-Solomon
Níveis de correção de erros em QR code (L, M, Q, H) explicados com a matemática real de Reed-Solomon, o trade-off por versão e dados de dano real.

Este artigo foi escrito pela equipe da QR Nova. Desenvolvemos software de codigos QR, o que pode influenciar nossa perspectiva.
Todo artigo sobre níveis de correção de erros em QR code repete os mesmos quatro pontos: L recupera 7%, M recupera 15%, Q recupera 25%, H recupera 30%. Copiar, colar, pronto. Nenhum explica por que esses números específicos existem, o que um QR code realmente faz com os dados recuperados, ou por que um código de nível H pode, em certas condições reais, escanear pior do que um de nível M. Os níveis de correção de erros controlam quantos codewords de paridade Reed-Solomon são adicionados a um QR code, e esse número é uma troca direta contra a capacidade de dados e o tamanho físico do código, não apenas uma "porcentagem de proteção" abstrata. Entender essa troca, não decorar quatro letras, é o que realmente determina se seu código escaneia de forma confiável. O gerador grátis do QR Nova cria cada código com proteção máxima por padrão, então vale a pena entender essa troca, quer você mexa em um painel de configurações ou não.
TL;DR
- Os quatro níveis (L 7%, M 15%, Q 25%, H 30%) descrevem a proporção de codewords de paridade Reed-Solomon adicionados, não apenas uma pontuação genérica de "resistência a danos".
- Passar de L para H reduz a capacidade de dados utilizável em cerca de 53-57% em qualquer versão de QR, segundo as tabelas de codewords do ISO/IEC 18004.
- O teste de 2021 do desenvolvedor Huon Wilson com o ZBar, que escaneou as 40 versões e os 4 níveis de correção, encontrou que os códigos de nível H escanearam com sucesso 60% mais vezes que os de nível L sob dano simulado, mas o nível H também força uma versão de QR maior e mais densa para os mesmos dados, o que pode exigir mais campo de visão para escanear do que o nível L.
- O nível H é necessário para logos sobrepostos e ambientes físicos exigentes. Ele prejudica ativamente a confiabilidade de escaneamento em códigos pequenos, limpos e bem iluminados, por causa da densidade extra que impõe.
O Que São os Níveis de Correção de Erros de um QR Code?
Gere um QR code de proteção máxima — grátis
ComecarOs níveis de correção de erros de um QR code são quatro configurações, L, M, Q e H, que determinam quantos codewords de paridade Reed-Solomon são anexados aos dados durante a codificação. Um nível que reserva mais codewords de paridade consegue reconstruir mais dados corrompidos se o código impresso for danificado, obstruído ou lido parcialmente, mas deixa menos codewords disponíveis para o conteúdo real no mesmo tamanho físico. Por isso a escolha não é "qual nível é melhor", e sim "quanta capacidade de dados estou disposto a trocar por quanta tolerância a danos".
Todo QR code que você já escaneou fez essa troca, quer quem o gerou soubesse disso ou não. A maioria dos geradores usa o nível M por padrão, a própria recomendação da DENSO Wave para uso geral, porque equilibra razoavelmente bem capacidade e resiliência sem que ninguém precise pensar nisso.
Se você precisa primeiro da decisão prática em linguagem simples, nosso guia dos quatro níveis de ECC e nosso resumo sobre qual nível usar para logos, impressão e sinalização externa cobrem esse terreno por conta própria. Este artigo se concentra no mecanismo Reed-Solomon, na matemática de capacidade por versão e nos dados reais de escaneamento por trás dessas recomendações.
Os quatro níveis, com precisão
- L (Baixo): recupera até 7% de codewords danificados. Capacidade máxima de dados em uma versão dada.
- M (Médio): recupera até 15%. O padrão na maioria dos geradores e o recomendado pela DENSO Wave para uso geral.
- Q (Quartil): recupera até 25%. Usado em códigos com desgaste moderado esperado, chão de fábrica, etiquetas de armazém.
- H (Alto): recupera até 30%. Necessário para logos sobrepostos e ambientes físicos exigentes.
Essas porcentagens não são linguagem de marketing, são o resultado direto de quantos codewords de paridade o padrão aloca em cada nível, que é onde entra o mecanismo real.
Por Que Existem Quatro Níveis: O Mecanismo Reed-Solomon Por Trás de L, M, Q, H
QR codes usam codificação Reed-Solomon, a mesma família de códigos corretores de erro usada em CDs, DVDs e comunicação espacial profunda, para proteger dados contra dano físico. O mecanismo é o mesmo nos quatro níveis; o que muda é quantos codewords de paridade cada nível gera. Para a especificação completa sob a qual esses níveis são definidos, veja nosso resumo em linguagem simples sobre ISO 18004, o padrão de QR code.
O Campo de Galois GF(256), em termos simples
A matemática de Reed-Solomon acontece dentro do GF(256), um Campo de Galois com exatamente 256 elementos, um para cada valor de byte possível (0-255). A soma no GF(256) é apenas XOR, sem transporte, totalmente reversível. A multiplicação segue um polinômio primitivo fixo (QR codes usam x^8 + x^4 + x^3 + x^2 + 1), o que permite expressar todo valor diferente de zero como uma potência de uma raiz primitiva, transformando multiplicação em simples soma de expoentes.
A razão de isso importar: na aritmética comum, dividir dois números pode produzir uma fração sem resto exato. Dentro de um campo finito como o GF(256), todo elemento diferente de zero tem um inverso multiplicativo exato, então a divisão de polinômios sempre produz um quociente e um resto limpos. Essa propriedade é a base inteira da correção de erros Reed-Solomon. Sem ela, o truque de "checar o resto" que detecta e localiza erros simplesmente não funcionaria.
Como os níveis de correção mudam a divisão de codewords
Durante a codificação, seus dados viram um polinômio. Ele é multiplicado por x^r (onde r é o número de codewords de paridade do nível escolhido) e dividido por um polinômio gerador construído a partir de potências consecutivas da raiz primitiva do GF(256). O resto dessa divisão, exatamente r bytes, se torna os codewords de paridade anexados aos seus dados.
r é todo o mecanismo por trás das quatro letras. Um nível de correção mais alto significa simplesmente um r maior, mais codewords de paridade calculados e armazenados, o que também explica por que ele consome diretamente os codewords de dados disponíveis em uma versão de QR fixa. Um leitor consegue corrigir até r / 2 codewords corrompidos (ou até r "apagamentos" conhecidos, posições marcadas como não confiáveis durante a amostragem) usando cálculos de síndrome e os algoritmos Berlekamp-Massey e Forney. Percorremos essa sequência de decodificação passo a passo em como o escaneamento de QR code funciona tecnicamente; este artigo foca no que muda entre L, M, Q e H, não no pipeline de decodificação em si.
A Troca Real: Correção de Erros vs. Capacidade de Dados
Aqui está a parte que quase nenhum artigo mostra: exatamente quanta capacidade cada nível custa, em versões reais de QR, usando as tabelas de codewords definidas no ISO/IEC 18004.
| Versão QR | Codewords totais | Codewords de dados em L | em M | em Q | em H | Perda de capacidade 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% |
O total de codewords por versão nunca muda, isso é fixado pelo tamanho físico da grade. O que muda é a divisão entre codewords de dados e de paridade. Olhe a última coluna: em toda versão verificada, passar do nível L para o H custa cerca de 53-57% da sua capacidade de dados utilizável, uma proporção constante independente do tamanho do código. Esse é o número que deveria guiar sua escolha de nível mais do que as porcentagens brutas.
Por que mais correção torna o código maior, não só "mais seguro"
Como o total de codewords por versão é fixo, codificar a mesma quantidade de dados em um nível de correção mais alto costuma obrigar seu gerador a saltar para a próxima versão de QR, mais módulos, um símbolo impresso fisicamente maior ou mais denso, para acomodar tanto seus dados quanto os codewords de paridade extras. Uma URL que cabe confortavelmente em um código versão 3 no nível L pode precisar de uma versão 5 no nível H. Essa é uma diferença de tamanho real e visível no seu material impresso, não um detalhe técnico escondido.
Tolerância Real a Danos: Teoria vs. O Que Realmente Acontece
Os números 7/15/25/30% são máximos teóricos sob dano ideal, distribuído uniformemente. O experimento de 2021 do desenvolvedor Huon Wilson testou isso contra dano simulado mais realista, reflexos, sujeira e obstrução parcial, usando o decodificador de código aberto ZBar.
Wilson sobrepôs 10 padrões de ruído em 8 níveis de dano sobre as 40 versões de QR nos 4 níveis de correção de erros, 12.800 configurações no total, e contou quantas foram escaneadas com sucesso.
Os códigos de nível H foram escaneados com sucesso 2.001 vezes do conjunto completo de configurações, o nível M 1.600 vezes, o nível Q 1.839 vezes, e o nível L apenas 1.257 vezes, cerca de 60% mais escaneamentos bem-sucedidos no nível H do que no nível L no geral. Mas a correção de erros funciona nos dois sentidos: em uma versão de QR fixa, níveis mais altos escaneiam com mais confiabilidade sob dano; com uma quantidade fixa de dados codificados, níveis mais altos forçam uma versão maior com mais módulos totais, o que pode exigir um campo de visão maior para escanear do que um código de nível mais baixo com os mesmos dados. (Huon Wilson, "QR error correction helps and hinders scanning," 2021)
Duas coisas se destacam aqui. Primeiro, a diferença de 60% entre L e H sob dano simulado é um resultado de escaneamento real e medido, não uma estimativa de marketing, exatamente o tipo de evidência que os artigos genéricos de "aqui estão as quatro porcentagens" nunca citam. Segundo, a descoberta de Wilson de que uma correção de erros mais alta também pode prejudicar o escaneamento, uma vez considerada a versão de QR maior que ela força com um comprimento de dados fixo, é a mesma troca entre capacidade e densidade que este artigo mede em codewords acima, obtida de forma independente por meio de testes reais de escaneamento, e não das tabelas do ISO/IEC 18004. Para ser justo, o ZBar é apenas um decodificador entre vários, e o leitor de câmera nativo de um celular pode se comportar de forma diferente diante da mesma imagem de teste. A matemática de Reed-Solomon por trás disso não muda dependendo de qual software a lê, então a troca que Wilson mediu não é um artefato do seu ambiente de teste específico.
Por Que Logos Sobrepostos Precisam Especificamente do Nível H
Um logo centralizado não corrói as bordas de um QR code, ele elimina um bloco sólido de módulos na parte mais densa e central do símbolo. É exatamente o tipo de dano concentrado que a correção de erros precisa absorver, e consome o mesmo orçamento de correção que o desgaste físico. Cobrimos a regra dos 20% para o tamanho do logo separadamente em como adicionar um logo a um QR code; aqui está o mecanismo por trás de por que o nível H é especificamente necessário.
Pegue um QR code versão 5. No nível Q, ele carrega 72 codewords de paridade de 134 totais, resultando em uma capacidade de correção de cerca de 36 codewords, perto de 27% do símbolo. No nível H, carrega 88 codewords de paridade, uma capacidade de correção de cerca de 44 codewords, perto de 33% do símbolo, antes mesmo de considerar as regiões de informação de formato e padrões de localização que ficam fora da área de dados corrigível.
Um logo comumente recomendado a ficar entre 20% e 30% da área visual de um QR code consome sozinho quase todo o orçamento de correção do nível Q, deixando quase nenhuma margem para imperfeições de impressão, borrões de tinta ou um canto um pouco desgastado. Pense no orçamento de correção como uma conta bancária: o logo faz o saque dele primeiro, antes que um arranhão ou reflexo sequer tenha a chance de fazer o seu. No nível H, esse mesmo logo deixa margem suficiente para também absorver a variação normal de impressão. Esse é o mecanismo real por trás do conselho que você vê em todo lugar de "use nível H para logos", não é uma regra arbitrária, é uma consequência direta de quanto orçamento de correção um logo centralizado consome.
Quando a Correção de Erros Alta Pode Sair Pela Culatra
Aqui está a parte que quase nenhum guia menciona, incluindo o alerta "quando não usar H" no nosso próprio guia de níveis de ECC: o nível de correção de erros e a escaneabilidade não são o mesmo eixo, e forçar o nível H em um código que não precisa disso pode fazer com que ele escaneie pior. O que vem a seguir é o mecanismo por trás desse alerta, não apenas a recomendação.
Como um nível de correção mais alto reduz sua capacidade de dados utilizável ou força uma versão de QR maior com a mesma quantidade de dados, um nível desnecessariamente alto produz uma grade de módulos mais densa no mesmo tamanho de impressão. Módulos mais densos significam quadrados individuais menores, e quadrados menores são mais difíceis de resolver para uma câmera a distância, com pouca luz ou em um celular mais antigo ou mais simples. O algoritmo de correção rodando a 100% da capacidade não ajuda se a etapa de binarização anterior não conseguir resolver os módulos individuais com clareza. Você acaba trocando um benefício de tolerância a danos que não precisava por um custo de escaneabilidade que não queria.
Isso falha de forma mais visível em três situações:
- Códigos impressos pequenos sem logo. Um cartão de visita ou etiqueta de produto de 2-3 cm não precisa da penalidade de densidade do nível H se o destino não tem logo sobreposto e o ambiente de impressão é limpo.
- Códigos exibidos em tela. Um código mostrado em um laptop ou TV para escaneamento raramente é danificado; forçar o nível H adiciona densidade sem nenhum benefício correspondente.
- Hardware de escaneamento simples ou antigo. Se seu público provavelmente vai escanear com celulares Android básicos ou câmeras mais antigas, um nível de correção mais baixo com módulos maiores e mais limpos costuma escanear com mais confiabilidade do que um código mais denso e de nível mais alto no mesmo tamanho físico.
O padrão correto é o nível M para uso geral, subindo para Q ou H apenas quando o código tem logo, vai enfrentar desgaste físico real, ou vive em um lugar onde a qualidade de impressão não pode ser controlada de perto, não o contrário.
Como Escolher o Nível Certo: Três Exemplos Reais
O nível certo depende inteiramente do que o código vai enfrentar fisicamente. Três cenários cobrem a maioria dos casos reais:
Baixa complexidade: um QR code de cardápio em suporte de mesa
Iluminação interna limpa, impresso em cartolina nova, sem logo, escaneado a 20-30 cm. O nível L ou M é suficiente. Não há dano a corrigir, e manter a densidade de módulos baixa maximiza velocidade e confiabilidade de escaneamento em uma ampla gama de câmeras de celular.
Complexidade média: um panfleto de marca com logo
O mesmo ambiente limpo, mas agora um logo centralizado ocupa cerca de 20% da área do código. O nível H é necessário aqui, não porque o panfleto vá se danificar, mas porque o logo em si é uma forma de perda de dados concentrada e intencional que só o orçamento de correção do nível H absorve confortavelmente.
Alta complexidade: uma etiqueta de ativo para equipamento externo
Uma etiqueta resistente às intempéries rebitada em equipamento industrial, exposta a desbotamento solar, sujeira, arranhões e anos de manuseio, sem logo mas com risco físico real. O nível H também é a escolha certa aqui, por uma razão completamente diferente da do panfleto: desgaste físico real e cumulativo ao longo de uma vida útil de vários anos, não uma decisão de design.
Como o QR Nova Lida com a Correção de Erros
O gerador grátis do QR Nova gera cada código no nível H, o nível máximo com 30% de recuperação, automaticamente, sem cadastro, sem configuração para procurar, sem plano pago envolvido, sem etapa extra. É uma troca deliberada: custa alguma capacidade de dados em cada código (a perda de 53-57% que medimos acima), em troca da maior tolerância a danos disponível em qualquer código que você criar, com ou sem logo.
Isso importa principalmente nos dois casos que este guia já indica como exigindo o nível H de qualquer forma: logos sobrepostos e códigos que vão enfrentar desgaste físico real. Se sua prioridade é encaixar uma URL longa ou um vCard extenso em um código limpo e apenas digital, as tabelas de capacidade acima são o que verificar antes de se comprometer com um conteúdo longo, já que o nível em si não é algo que você possa reduzir.
Códigos estáticos gerados pelo QR Nova, URL, WiFi, vCard, PDF, carregam esse nível de correção de erros incorporado permanentemente na imagem, sem dependência de servidor, sem assinatura necessária para o código continuar funcionando.
Checklist Rápido de Decisão
Use isso para escolher um nível em menos de um minuto:
| Situação | Nível recomendado |
|---|---|
| Limpo, interno, sem logo, uso geral | M |
| Armazém, chão de fábrica, desgaste moderado esperado | Q |
| Logo cobrindo 15% ou mais da área do código | H |
| Externo, industrial, ou exposição física de vários anos | H |
| Tamanho de impressão muito pequeno, sem logo, ambiente limpo | L ou M (evite densidade desnecessária) |
| Maximizar capacidade de dados (URLs longas, vCards) | L |
Se estiver em dúvida sobre qual nível escolher, esta tabela é a forma mais rápida de decidir antes de gerar qualquer coisa. O gerador grátis do QR Nova cria cada código no nível H automaticamente, então você sempre tem a máxima tolerância a danos sem configurar nada, só tenha em mente o custo de capacidade se for codificar uma URL longa.
Perguntas frequentes
O que são os níveis de correção de erros de um QR code?
São quatro configurações, L, M, Q e H, que determinam quantos codewords de paridade Reed-Solomon são adicionados a um QR code junto aos dados reais. O nível L reserva a menor redundância e recupera até 7% de codewords danificados; o nível H reserva a maior e recupera até 30%. O custo é a capacidade de dados: mais codewords de paridade significa menos espaço para o conteúdo real e um símbolo fisicamente maior ou mais denso com a mesma quantidade de dados.
Qual é a diferença entre os níveis de correção L, M, Q e H?
L (Baixo) recupera até 7% de codewords danificados e maximiza a capacidade de dados. M (Médio) recupera até 15% e é o padrão na maioria dos geradores. Q (Quartil) recupera até 25% e serve para desgaste moderado. H (Alto) recupera até 30% e é necessário para logos sobrepostos ou ambientes físicos exigentes. Cada nível adicional custa entre 15% e 20% da capacidade de dados utilizável, em qualquer versão de QR.
Qual nível de correção devo usar em um QR code com logo?
Use o nível H. Um logo centralizado cobrindo 20-30% da área do QR code consome sozinho uma grande parte do orçamento de correção, e só o teto de 30% do nível H deixa margem suficiente para o logo mais as imperfeições normais de impressão. Nos níveis M ou Q, um logo desse tamanho pode ultrapassar a taxa de erro recuperável e causar falhas de escaneamento, especialmente em câmeras de celular mais simples.
Um nível de correção mais alto torna o QR code maior?
Sim, se a quantidade de dados permanecer igual. Passar do nível L para o H na mesma versão de QR reduz a capacidade de dados utilizável quase pela metade (entre 53% e 57%, segundo as tabelas do ISO/IEC 18004), então codificar a mesma quantidade de dados no nível H frequentemente obriga o gerador a saltar para uma versão maior, com mais módulos, ou seja, um código impresso fisicamente maior ou mais denso.
Como funciona de fato a correção de erros Reed-Solomon em um QR code?
O codificador trata os dados como um polinômio sobre GF(256), um campo finito de 256 valores de byte, e o divide por um polinômio gerador para produzir codewords de paridade, que são adicionados aos dados. Um leitor recalcula a mesma divisão; um resto diferente de zero (o síndrome) indica dano, e os algoritmos Berlekamp-Massey e Forney localizam e corrigem os erros, até a metade do número de codewords de paridade adicionados. Explicamos essa decodificação passo a passo no nosso guia sobre como o escaneamento de QR code funciona tecnicamente.
Correção de erros em excesso pode tornar um QR code mais difícil de escanear?
Sim. O nível de correção de erros e a capacidade real de escaneamento são variáveis diferentes, e forçar o nível H em um código que não precisa disso torna a grade de módulos mais densa no mesmo tamanho de impressão, o que pode prejudicar o escaneamento com pouca luz, a distância ou em câmeras mais simples. O teste de 2021 do desenvolvedor Huon Wilson com o ZBar, que escaneou as 40 versões de QR com os quatro níveis de correção, encontrou que, para a mesma quantidade de dados, a versão de QR maior e mais densa do nível H pode exigir mais campo de visão para escanear do que a do nível L, confirmando que a densidade desnecessária tem um custo mensurável.
Qual nível de correção de erros o QR Nova usa por padrão?
O QR Nova gera cada código no nível H, o nível máximo com 30% de recuperação, automaticamente. Não há configuração escondida em painel nem plano pago bloqueando isso, cada código grátis recebe a maior tolerância a danos disponível por padrão. O custo é a capacidade de dados reduzida explicada acima, algo a considerar se você está codificando uma URL longa ou um conteúdo extenso como um vCard.
O nível H é sempre a escolha mais segura para QR codes impressos?
Não. O nível H é a escolha certa especificamente para logos sobrepostos, exposição externa ou industrial, e códigos impressos em materiais propensos a dano. Para um código limpo, bem iluminado, em ambiente interno e sem logo, o nível M ou até o L escaneia igualmente bem e mantém o símbolo impresso menor e menos denso, o que é em si uma vantagem de escaneabilidade.
Artigos relacionados
Como o Escaneamento de QR Code Funciona Tecnicamente
Como o escaneamento de QR code funciona tecnicamente: captura de imagem, binarização, finder patterns, correção de erros Reed-Solomon e o pipeline de 8 etapas.
Arquitetura de Redirect de QR Code Dinâmico: Edge em Escala
Como funciona a arquitetura de redirect de QR code dinâmico: a cadeia do scan ao destino, latência edge, cache, failover e vendor lock-in.
ISO 18004: O Padrão de QR Code Explicado
ISO 18004 é a especificação que todo QR code segue. Saiba o que ela define: estrutura, modos de codificação, correção de erros e o sistema de versões.
Gere um QR code de proteção máxima — grátis
Comecar