Correção de erros e tamanho do QR code: L, M, Q e H testados
Uma correção de erros maior deixa um QR code resistir a danos, mas também o deixa mais denso. Geramos códigos para quatro tipos comuns de conteúdo em cada nível e os cobrimos aos poucos até pararem de ser lidos.
Todo gerador de QR code pede um nível de correção de erros: L, M, Q ou H. A explicação comum é que níveis mais altos deixam o código resistir a mais dano. É verdade, mas tem um custo que raramente se menciona, e a tolerância real é menor que os números que costumam ser citados. Geramos códigos para quatro tipos comuns de conteúdo em cada nível e os cobrimos aos poucos até nosso leitor não conseguir mais lê-los.
O que a correção de erros faz
Um QR code guarda seu conteúdo como uma série de bytes, chamados palavras de código, e acrescenta palavras de código extras calculadas a partir delas com a codificação Reed-Solomon, a mesma técnica usada nos CDs. Se algumas palavras de código forem danificadas, as extras permitem ao leitor reconstruí-las. Os quatro níveis definem quanto do código é dedicado a isso:
| Nível | Palavras de código recuperáveis | Conselho comum |
|---|---|---|
| L (baixo) | Cerca de 7% | Telas e documentos limpos |
| M (médio) | Cerca de 15% | O padrão comum |
| Q (quartil) | Cerca de 25% | Impressão, áreas externas, logotipos |
| H (alto) | Cerca de 30% | Condições difíceis, logotipos grandes |
As palavras de código extras ocupam espaço que, de outro modo, guardaria conteúdo. Para o mesmo conteúdo, um nível maior precisa de uma grade maior de quadrados (chamados módulos).
Quanto o código cresce

| Conteúdo | Caracteres | L | M | Q | H |
|---|---|---|---|---|---|
| Link curto | 19 | 25 × 25 | 25 × 25 | 25 × 25 | 29 × 29 |
| Dados de Wi-Fi | 61 | 33 × 33 | 33 × 33 | 41 × 41 | 45 × 45 |
| Link com códigos de rastreamento | 89 | 37 × 37 | 41 × 41 | 49 × 49 | 53 × 53 |
| Cartão de contato | 202 | 53 × 53 | 57 × 57 | 65 × 65 | 77 × 77 |
Um link curto cabe na menor grade em três dos quatro níveis, porque essa grade tem espaço sobrando. Conteúdo mais longo cresce rápido: o cartão de contato no nível H precisa de 77 × 77 módulos, quase dez vezes a área do link curto.
Isso importa porque o que a câmera precisa enxergar é o módulo, não o código. Num código impresso com 2,5 cm de largura, o link curto tem módulos de 1 mm, e o cartão de contato no nível H módulos de 0,3 mm, mais ou menos o tamanho de um grão de sal. Módulos pequenos são o que faz os códigos falharem em impressões de baixa qualidade, à distância e com pouca luz.
Quanto dano um código suporta
Para testar os níveis, cobrimos o centro de cada código com um quadrado branco, onde costuma ficar um logotipo, e aumentamos seu tamanho um ponto percentual da área do código por vez até o leitor do nosso leitor de QR code falhar.
| Conteúdo | L | M | Q | H |
|---|---|---|---|---|
| Link curto | 5% | 6% | 9% | 16% |
| Dados de Wi-Fi | 5% | 8% | 14% | 19% |
| Link com códigos de rastreamento | 7% | 11% | 20% | 20% |
| Cartão de contato | 8% | 12% | 19% | 15% |

Duas coisas se destacam. Primeiro, a tolerância real foi menor que os números da norma, muitas vezes em um terço ou mais. Um quadrado coberto corta palavras de código nas bordas, danificando mais do que seu tamanho sugere, e pode esconder marcas de alinhamento que o leitor usa para achar a grade. Segundo, os níveis mais altos nem sempre ganharam: no cartão de contato, o H falhou antes do Q. Códigos maiores têm mais marcas de alinhamento para um quadrado central atingir, e cada leitor lida com o dano de um jeito um pouco diferente.
A lição prática é deixar margem. Se um código precisa resistir a danos, não conte com usar toda a sua correção de erros.
Logotipos em QR codes
Um logotipo funciona danificando o código de propósito e contando com a correção de erros para consertá-lo. Nosso gerador de QR code sobe o nível para Q quando você acrescenta um logotipo, se ele estava mais baixo, e limita a área que o logotipo cobre a uma parte do que esse nível consegue recuperar. Conferimos todas as combinações dos nossos quatro tipos de conteúdo, dos níveis M, Q e H e de tamanhos de logotipo de 24 a 40%, o maior que o gerador oferece: todas foram lidas.
Como fazer um QR code que sempre funciona
- Mantenha o conteúdo curto. Use um link curto em vez de um longo com códigos de rastreamento. É o maior ganho de todos, porque menos módulos significa módulos maiores.
- Use M para telas e impressões limpas, e Q para cartazes, embalagens e tudo com logotipo. Use H só quando o conteúdo for curto, para a grade continuar pequena.
- Imprima grande o bastante. Uma regra comum é largura do código de pelo menos um décimo da distância de leitura: 3 cm para um display de mesa lido a 30 cm, 30 cm para um cartaz lido a 3 metros.
- Mantenha contraste forte e margem. Quadrados escuros sobre fundo claro, e uma borda livre de pelo menos quatro módulos. Nem todo app lê códigos claros sobre fundo escuro.
- Teste antes de imprimir, com um celular antigo e com um novo, na distância real.
Os códigos criados com nosso gerador são estáticos: o conteúdo está no próprio código, então funcionam para sempre e não dependem de nenhum serviço. Alguns serviços de QR criam códigos «dinâmicos» que apontam para o próprio servidor e redirecionam de lá, o que permite mudar o destino depois, mas param de funcionar se o serviço ou sua assinatura acabarem.
Perguntas e respostas
Qual nível de correção de erros usar num QR code?
M para telas e impressões limpas, Q para impressão, áreas externas e códigos com logotipo. O H deixa o código bem mais denso, então use só para conteúdo curto.
Quanto de um QR code pode ser coberto?
Menos do que sugerem os 7, 15, 25 e 30% da norma. No nosso teste, um quadrado centralizado podia cobrir de 5 a 8% no L, de 6 a 12% no M, de 9 a 20% no Q e de 15 a 20% no H.
Um logotipo dificulta a leitura de um QR code?
Ele consome parte da correção de erros. Com a correção no nível Q e um logotipo de tamanho moderado, todos os nossos códigos de teste foram lidos.
Qual o tamanho mínimo de um QR code impresso?
Uma regra comum é largura de um décimo da distância de leitura, uns 2 a 3 cm para algo lido com o braço estendido. Conteúdo curto permite códigos menores.
Ferramentas deste artigo
Mais do blog
ZIP, 7z ou RAR: qual formato de arquivo compactado é melhor?
Compactamos as mesmas pastas de fotos, vídeos, documentos e dados em ZIP, 7z e RAR e medimos tamanho e velocidade. O vencedor depende quase totalmente do que está dentro.
CSV, Excel ou JSON: qual formato para seus dados?
Salvamos a mesma tabela de 100 mil linhas em CSV, em uma pasta de trabalho do Excel e em JSON, e comparamos os tamanhos, a velocidade de leitura no código e o que dá errado com datas, zeros à esquerda e números longos.
Timestamps Unix explicados
Um timestamp Unix é só uma contagem de segundos, mas causa um fluxo constante de bugs. O que ele conta, como distinguir segundos de milissegundos num relance, o que acontece com fusos horários e segundos bissextos, e por que 2038 importa.