Por que o QR Code não lê
Simulamos 3.024 fotografias de QR Code — reduzidas, borradas e com ruído, como sai de uma câmera de celular — e mandamos todas para o leitor do próprio sistema. A resposta é um número só, e não é nenhum dos suspeitos de sempre: quantos pixels de câmera sobram para cada quadradinho. Abaixo de 1,75, nenhuma das 864 fotos foi lida. A partir de 3, todas as 720 foram.
Esta página começou querendo provar outra coisa — que a borda é a culpada — e a medição não deixou. O que apareceu no lugar é mais útil, porque tem conserto: quem mais rouba resolução do seu código é o tamanho do link que você enfiou dentro dele, e ninguém associa uma coisa à outra.
A resposta curta
Se o seu QR não lê, é isto, nesta ordem
1. O conteúdo é longo demais para o tamanho impresso. Um link de 200 caracteres exige um código com muito mais quadradinhos que um de 30 — no mesmo adesivo, cada quadradinho fica menor, e é aí que a câmera desiste. É a causa que ninguém procura.
2. Está impresso pequeno demais para a distância. Mesmo problema, pelo outro lado.
3. O contraste é fraco. Custa resolução, mas menos do que se imagina — e código invertido, claro sobre escuro, leu tão bem quanto o preto no branco.
4. A borda. A norma pede quatro módulos e continua valendo pôr, mas na nossa medição ela não fez diferença nenhuma. Se o seu código não lê, o problema quase certamente não é esse.
A curva: onde a leitura começa e onde ela fica garantida
O experimento gera o símbolo com o encoder deste site, desenha ele dentro de uma cena, e transforma a cena em foto: reduz por média de área — que é o que o sensor faz com a luz —, borra com um núcleo de lente e salpica ruído. O que varia é a resolução da captura. 12 cenas × 21 resoluções × 12 fotos cada.
| Pixels de câmera por módulo | Leu | Taxa |
|---|---|---|
| 1 | 0 de 144 | — |
| 1,125 | 0 de 144 | — |
| 1,25 | 0 de 144 | — |
| 1,375 | 0 de 144 | — |
| 1,5 | 0 de 144 | — |
| 1,625 | 0 de 144 | — |
| 1,75 | 2 de 144 | 1% |
| 1,875 | 7 de 144 | 5% |
| 2 | 78 de 144 | 54% |
| 2,125 | 120 de 144 | 83% |
| 2,25 | 131 de 144 | 91% |
| 2,375 | 127 de 144 | 88% |
| 2,5 | 142 de 144 | 99% |
| 2,625 | 144 de 144 | 100% |
| 2,75 | 144 de 144 | 100% |
| 2,875 | 143 de 144 | 99% |
| 3 | 144 de 144 | 100% |
| 3,125 | 144 de 144 | 100% |
| 3,25 | 144 de 144 | 100% |
| 3,375 | 144 de 144 | 100% |
| 3,5 | 144 de 144 | 100% |
Três faixas, e elas são a página inteira. Abaixo de 1,75 pixels por módulo não existe leitura: 864 fotos, nenhuma lida, em nenhuma das 12 condições. A primeira leitura aparece em 1,75 — duas fotos em 144 —, e a maioria só passa a ler em 2. Entre 1,75 e 2,875, a leitura é sorteio: 72,1% no agregado, com a mesma cena lendo numa foto e falhando na seguinte. E de 3 para cima não houve uma falha sequer.
Por que a faixa do meio importa
É ela que produz a experiência que todo mundo já teve: o código que lê para uma pessoa e não lê para a outra, que abre hoje e não abre amanhã, que funciona quando você chega mais perto. Não é o celular de ninguém que está ruim — é um código projetado bem no meio da faixa de sorteio. Um QR ou está com folga, ou é loteria.
A borda: a explicação favorita da internet não sobreviveu
A norma ISO/IEC 18004 pede quatro módulos de margem clara em volta do símbolo, e a explicação é boa: o leitor precisa dessa faixa para achar onde o código começa. Testamos três fundos diferentes — papel branco, um fundo escuro encostando, e uma textura densa de blocos claros e escuros do tamanho de um módulo, que é o pior caso para quem procura o padrão de localização — cada um com borda de quatro módulos e sem borda nenhuma.
| Cena | Leu | Nunca mais falhou a partir de |
|---|---|---|
| Borda de 4 módulos, em papel branco | 61,9% | 2 |
| Sem borda nenhuma, em papel branco | 61,1% | 2,25 |
| Borda de 4 módulos, com fundo escuro em volta | 57,5% | 2,125 |
| Sem borda, com fundo escuro encostando | 55,6% | 3 |
| Borda de 4 módulos, com textura densa em volta | 57,1% | 2,125 |
| Sem borda, com textura densa encostando | 63,1% | 2,25 |
Somando tudo: 58,9% com borda contra 59,9% sem borda. A diferença é menor que a variação entre repetições da mesma cena, e o sinal chega a inverter: no fundo de textura densa — justamente onde a borda deveria salvar o dia — a versão sem borda leu mais.
O que isso quer dizer, com cuidado, porque é fácil concluir demais. Não quer dizer que a borda é inútil e pode ser cortada. Quer dizer que o decodificador que testamos é bom o suficiente para dispensá-la, e que num código que não abre a borda é a última coisa a investigar, não a primeira. Leitores mais antigos, leitores industriais de laser e bibliotecas mais simples não são todos assim, a norma pede os quatro módulos, e o gerador daqui os coloca sempre. Manter é barato; a questão é parar de culpá-la.
Contraste e cor: o invertido lê melhor que o cinza
Aqui a medição confirma parte do senso comum e derruba a outra parte. A razão de contraste da coluna é a da WCAG, a mesma que se usa para texto, calculada a partir das cores exatas de cada cena:
| Cena | Contraste | Leu | Estável a partir de |
|---|---|---|---|
| Preto no branco | 21:1 | 61,9% | 2 |
| Invertido: claro sobre fundo escuro | 21:1 | 63,9% | 2 |
| Cinza médio no branco | 3,9:1 | 57,1% | 2,125 |
| Cinza claro no branco | 2,2:1 | 54,4% | 2,625 |
| Cinza bem claro no branco | 1,5:1 | 50,8% | 2,5 |
| Amarelo no branco | 1,7:1 | 53,2% | 2,5 |
O código invertido não é problema. Claro sobre fundo escuro foi a cena com a MAIOR taxa de leitura de todas as doze, e estabilizou na mesma resolução do preto no branco. A crença de que leitor não lê QR invertido é verdadeira para leitores antigos e falsa para o que está no bolso das pessoas — e a razão é simples: em contraste os dois são idênticos, 21:1.
O que custa é contraste baixo, e ele custa resolução. O cinza claro e o amarelo no branco não param de ler — eles exigem que a câmera chegue mais perto. O preto no branco estabiliza em 2 pixels por módulo; o cinza claro e o amarelo, em 2,625 e 2,5. É de 25% a 30% de resolução a mais para dizer a mesma coisa — ou seja, um código colorido precisa ser impresso proporcionalmente maior, e é esse o preço que a agência não conta quando pinta o QR na cor da marca.
O vilão de verdade: o tamanho do link
Este é o experimento que vale por todos os outros. O adesivo tem sempre o mesmo tamanho impresso e é fotografado da mesma distância — as quatro colunas são quatro combinações de tamanho e distância, escritas como o número de pixels que o adesivo inteiro ocupa na foto. A única coisa que muda entre as linhas é quanto texto foi enfiado lá dentro.
| Caracteres | Módulos | 80 px | 120 px | 160 px | 240 px |
|---|---|---|---|---|---|
| 25 | 25 × 25 | leu (1,78) | leu (2,67) | leu (3,56) | leu (5,33) |
| 30 | 29 × 29 | — (1,63) | leu (2,45) | leu (3,27) | leu (4,9) |
| 40 | 29 × 29 | — (1,63) | leu (2,45) | leu (3,27) | leu (4,9) |
| 50 | 33 × 33 | — (1,51) | — (2,26) | leu (3,02) | leu (4,53) |
| 60 | 33 × 33 | — (1,51) | — (2,26) | leu (3,02) | leu (4,53) |
| 75 | 37 × 37 | — (1,4) | leu (2,11) | leu (2,81) | leu (4,21) |
| 90 | 41 × 41 | — (1,31) | — (1,97) | leu (2,62) | leu (3,93) |
| 110 | 45 × 45 | — (1,23) | — (1,85) | leu (2,46) | leu (3,69) |
| 130 | 49 × 49 | — (1,16) | — (1,74) | — (2,32) | leu (3,48) |
| 160 | 53 × 53 | — (1,1) | — (1,64) | leu (2,19) | leu (3,29) |
| 200 | 57 × 57 | — (1,04) | — (1,56) | leu (2,08) | leu (3,12) |
| 250 | 61 × 61 | — (0,99) | — (1,48) | — (1,98) | leu (2,96) |
| 320 | 69 × 69 | — (0,9) | — (1,35) | — (1,8) | leu (2,7) |
| 400 | 77 × 77 | — (0,82) | — (1,24) | — (1,65) | leu (2,47) |
| 500 | 85 × 85 | — (0,76) | — (1,14) | — (1,52) | — (2,29) |
| 700 | 101 × 101 | — (0,66) | — (0,99) | — (1,32) | leu (1,98) |
| 1.000 | 121 × 121 | — (0,57) | — (0,85) | — (1,13) | — (1,7) |
| 1.400 | 141 × 141 | — (0,5) | — (0,75) | — (0,99) | — (1,49) |
| 1.800 | 157 × 157 | — (0,45) | — (0,68) | — (0,9) | — (1,36) |
O número entre parênteses é a resolução em pixels por módulo que aquele caso alcançou — e é ele que explica a tabela inteira. Cada célula desta tabela obedece à curva da primeira seção: tudo o que ficou abaixo de 1,75 falhou, tudo o que passou de 2,5 leu, e as trocas de resultado que parecem erráticas no meio da tabela estão todas dentro da faixa de sorteio.
Na prática, para quem imprime: no adesivo de 120 pixels — o cartãozinho de mesa visto de perto — 40 caracteres leem e 90 não leem. No de 240, o limite vai para a casa dos 400. Nenhuma dessas linhas tem defeito de impressão, de cor ou de borda: é o mesmo adesivo, com um endereço mais comprido dentro.
O conserto que quase ninguém tenta
Encurtar o que vai dentro do código. Tirar os parâmetros de campanha do fim da URL, usar o domínio sem www, criar uma página curta que redireciona. Sair de 200 para 30 caracteres derruba o símbolo de 57 para 29 módulos de lado — e faz cada quadradinho crescer 97% no mesmo espaço de papel, de graça. É mais eficaz do que qualquer coisa que se faça com a cor, a borda ou o nível de correção.
De pixels para milímetros: que tamanho imprimir
Pixels por módulo é a grandeza certa, mas ninguém compra papel em pixels. A tradução exige duas hipóteses, e elas estão declaradas: uma foto de 4.032 pixels de largura (12 megapixels) e uma abertura de 68 graus, que é a faixa comum da câmera principal de celular. Com isso, e exigindo os 3 pixels por módulo em que nenhuma foto falhou:
| Distância de leitura | Módulo mínimo | Símbolo de 33 módulos | Regra de bolso (1:10) |
|---|---|---|---|
| 20 cm | 0,2 mm | 0,8 cm | 2 cm |
| 30 cm | 0,3 mm | 1,2 cm | 3 cm |
| 50 cm | 0,5 mm | 2,1 cm | 5 cm |
| 1 m | 1 mm | 4,1 cm | 10 cm |
| 2 m | 2,01 mm | 8,2 cm | 20 cm |
| 5 m | 5,02 mm | 20,6 cm | 50 cm |
A última coluna é a regra que circula em todo lugar — o símbolo mede um décimo da distância de leitura — e a comparação é o ponto desta seção: ela pede um código cerca de 2,4 vezes maior do que a nossa conta. As duas estão certas, e a diferença tem nome: margem. Nossa medição é o melhor caso possível — foco perfeito, luz uniforme, código de frente, impressão impecável, sem tremida. A regra de bolso já vem com o desconto de tudo isso embutido.
Por isso a recomendação prática desta página é a regra de bolso, não a nossa tabela. O que a nossa tabela dá é a outra coisa, que a regra de bolso não dá: o piso absoluto. Abaixo dele não existe celular bom, luz boa nem mão firme que resolva — e é útil saber a diferença entre “está apertado” e “é impossível”.
Duas ressalvas de impressão que não medimos e que circulam com força: que o módulo não deve ficar abaixo de 0,4 mm no papel, e a própria regra 1:10. Procuramos e não encontramos fonte primária de nenhuma das duas — a ISO/IEC 18004 é paga e não foi aberta aqui, e o que se acha são páginas de fabricantes de QR repetindo os números umas das outras. Elas entram nesta página como o que são: prática consolidada, sem documento atrás.
E o logotipo no meio?
Essa medição já está publicada aqui, e é de outro tipo: em vez de simular câmera, ela cobre uma área do símbolo e pergunta até onde a correção de erro segura. No nível M — o padrão da maioria dos geradores — o símbolo aguentou até 5% da área tapada, e não os 15% que se costuma anunciar, porque a porcentagem anunciada é a fração de BYTES que a correção recupera, não a fração de área que dá para cobrir. Os quatro níveis estão na página do gerador.
O que as duas medições juntas dizem sobre logotipo é o seguinte: ele gasta correção de erro que você provavelmente vai precisar para impressão imperfeita, sujeira e ângulo. E, pior, ele costuma vir acompanhado do erro de verdade — para caber o logotipo, alguém sobe o nível de correção, o que aumenta o número de módulos, o que encolhe cada um deles. Ou seja: o logotipo cobra duas vezes, e a segunda é a que derruba a leitura.
Checklist, em ordem de efeito medido
1. Encurte o conteúdo. É o que mais mexe na resolução por módulo, e é grátis. Link curto, sem parâmetros de campanha, sem utm_source de 60 caracteres.
2. Imprima maior, ou aceite ler mais perto. As duas coisas são a mesma grandeza. Use a regra de um décimo da distância.
3. Se for colorir, compense no tamanho. Contraste baixo custou de 25% a 30% de resolução na medição — então o código da cor da marca precisa ser proporcionalmente maior, e um QR amarelo pequeno é a pior combinação possível.
4. Inverter pode. Claro sobre escuro leu tão bem quanto o contrário. Se a arte pede, use — e mantenha o contraste alto.
5. Mantenha a borda, sem esperança. Custa quase nada e a norma pede. Só não conte com ela para consertar código que não lê.
6. Teste no pior aparelho que você tiver, na distância real. Testar no seu celular novo, a 15 cm, com luz de escritório, é o teste que aprova o código que vai falhar no balcão.
O que esta medição não cobre
Um leitor só. Todas as 3.024 fotos passaram pelo CIDetector do Core Image. É o leitor do sistema da Apple, o mesmo da câmera do iPhone, e é excelente — o que faz dele um teste generoso. Um aparelho Android, um leitor embutido em aplicativo de banco ou uma pistola de código de barras podem ser bem menos tolerantes, e a conclusão sobre a borda é a que mais depende disso.
A câmera é simulada, e simulada bem-comportada. Redução por média de área, borrão de lente e ruído de sensor. Não há desfoque de foco, tremida, luz irregular, sombra, reflexo em plástico, perspectiva nem papel amassado — e todos esses só pioram. Por isso os números daqui são piso, e a página recomenda a regra de bolso e não a própria tabela.
Um conteúdo e um nível. A curva usa um símbolo só (45 caracteres, versão 4, 33 módulos) no nível de correção M. O experimento do adesivo varia o conteúdo, mas com uma foto por caso — as trocas de resultado dentro da faixa de sorteio são exatamente o que a curva prevê, e não devem ser lidas como “este tamanho lê e aquele não”.
Impressão de verdade não entrou. Nada aqui saiu numa impressora. Ganho de ponto, tinta espalhando em papel poroso e registro de cor são causas reais de código ilegível que esta medição não toca.
Como refazer
Tudo que a página afirma sai de três peças abertas: o encoder em gerador-de-qr-code/qr.ts, que escreve a ISO/IEC 18004 inteira em casa; a simulação de câmera e os números, no arquivo de medição ao lado desta página, com o método escrito em cima de cada constante; e o leitor, que é do sistema operacional. As tabelas de geometria — módulos, versões e milímetros — são calculadas no momento em que a página é publicada, e o build cai se algum símbolo desta página deixar de ser o mesmo que foi fotografado.
Fontes
- Medição própria, feita em 9 de agosto de 2026: 3.024 fotos simuladas lidas pelo CIDetector do Core Image, no macOS 26.5, mais 76 casos do experimento do adesivo.
- ISO/IEC 18004 — a norma do QR Code: as versões, os níveis de correção, a borda de quatro módulos. Paga; o que este site usa dela está implementado e testado no encoder próprio, não copiado do documento.
- CIDetector — documentação da Apple do detector usado como leitor.
- WCAG 2.2, razão de contraste — a fórmula usada na coluna de contraste.