QR codes explicados: capacidade, correção de erros e tamanho de impressão
Um QR code é uma grade de quadrados pretos e brancos que guarda texto: geralmente um link, às vezes um login de Wi-Fi, um número de telefone ou um pedido de pagamento. Ele foi apresentado em 1994 pela Denso Wave, na época uma divisão da fabricante de autopeças Denso, para rastrear componentes nas suas fábricas, e se tornou universal quando as câmeras de celular aprenderam a lê-lo. O código pode ser lido mesmo quando parte dele está suja ou coberta, e a quantidade de informação que ele guarda depende de três escolhas: quanto texto, que tipo de texto e quanto dano ele precisa suportar. Este guia trata dessas escolhas e do que elas significam para um código que você está prestes a imprimir.
O que há na grade
Cada quadrado é um módulo. Os três quadrados grandes nos cantos são os padrões de localização: eles indicam ao leitor onde está o código e qual é o lado de cima. Linhas de módulos alternados entre eles, os padrões de temporização, marcam o espaçamento da grade, e, a partir da versão 2, quadrados de alinhamento menores ajudam a compensar uma superfície curva ou inclinada. Uma faixa ao lado dos padrões de localização registra o nível de correção de erros e a máscara, um de 8 padrões aplicados sobre os dados para que eles nunca formem grandes áreas vazias nem formas parecidas com um padrão de localização. Códigos da versão 7 ou superior também registram a sua versão. Todo o resto são dados e correção de erros.
Ao redor do código precisa haver uma margem vazia, a zona de silêncio, com quatro módulos de largura em todos os lados. Sem ela, o leitor pode não encontrar onde o código termina, e um código que parece perfeito na tela pode falhar depois de impresso sobre um fundo carregado.
Versões: por que alguns códigos são mais densos
O tamanho da grade é chamado de versão. A versão 1 tem 21 × 21 módulos, e cada versão acrescenta 4 módulos a cada lado, até a versão 40, com 177 × 177. Um gerador escolhe a menor versão em que o texto cabe, então mais texto significa mais módulos, e menores, na mesma área impressa. Estas são as versões de que alguns conteúdos típicos precisam no nível M, a escolha mais comum:
| Conteúdo | Caracteres | Versão no nível M |
|---|---|---|
| https://ntools.xyz | 18 | 2 (25 × 25) |
| Um login de Wi-Fi com uma senha de 28 caracteres | 58 | 4 (33 × 33) |
| Um link longo com cinco parâmetros de rastreamento | 126 | 8 (49 × 49) |
O link longo precisa de quase o dobro de módulos por lado em relação ao curto. Impresso no mesmo tamanho, cada módulo dele tem pouco mais da metade da largura, então o celular precisa ficar mais perto e mais firme. Encurtar o link é a forma mais eficaz de tornar um código mais fácil de escanear.
Quanto cabe em um QR code
Um QR code codifica texto em um de quatro modos. O modo numérico é o que armazena dígitos de forma mais compacta. O modo alfanumérico abrange 45 caracteres: os dígitos, as letras maiúsculas de A a Z, o espaço e $ % * + - . / :. O modo byte aceita qualquer tipo de dado e é o que quase todo link usa, porque as letras minúsculas não fazem parte do conjunto alfanumérico. O modo Kanji é para texto em japonês.
Na norma, o conjunto de caracteres padrão do modo byte é o ISO 8859-1, que cobre apenas as letras da Europa Ocidental. Texto em outros alfabetos, ou com símbolos como €, é gravado em UTF-8 pela maioria dos geradores, inclusive o do nTools, e o leitor precisa reconhecê-lo, o que muitos leitores fazem, mas não todos. O maior código, a versão 40, comporta:
| Nível | Dígitos | Alfanuméricos | Bytes |
|---|---|---|---|
| L | 7.089 | 4.296 | 2.953 |
| M | 5.596 | 3.391 | 2.331 |
| Q | 3.993 | 2.420 | 1.663 |
| H | 3.057 | 1.852 | 1.273 |
Esses são limites, não metas. Um código versão 40 tem 31.329 módulos, e um celular só consegue lê-lo quando ele está impresso em tamanho grande e com nitidez. Para qualquer coisa impressa, um conteúdo curto mantém o código fácil de ler.
Correção de erros: L, M, Q e H
Os QR codes usam a correção de erros Reed–Solomon, a mesma família de códigos usada nos CDs. Parte de todo código são dados redundantes, a partir dos quais o leitor consegue reconstruir o que está faltando. Há quatro níveis, e cada um consegue recuperar aproximadamente esta proporção dos dados:
- L: cerca de 7%.
- M: cerca de 15%.
- Q: cerca de 25%.
- H: cerca de 30%.
A Denso Wave observa que o nível M é o escolhido com mais frequência, com Q ou H para ambientes sujos, como fábricas, e L para condições limpas e grandes quantidades de dados. O custo de um nível mais alto é o tamanho: o mesmo link no nível H precisa de mais módulos do que no nível M. As porcentagens contam palavras de código, blocos de 8 bits, e não módulos, então um arranhão atravessando o código pode comprometer uma parte maior dele do que a área do arranhão sugere.
Um logotipo no meio de um código só funciona porque a correção de erros reconstrói os módulos que ele esconde; por isso, ele consome parte dessa margem antes de o código precisar lidar com qualquer sujeira ou reflexo. Se você acrescentar um, mantenha-o pequeno, nunca cubra os três quadrados dos cantos nem a zona de silêncio, e teste o resultado em vários celulares.
Em que tamanho imprimir
O tamanho impresso é o número de módulos, mais 8 da zona de silêncio, multiplicado pela largura de um módulo. O próprio exemplo da Denso Wave é um código versão 3, com 29 módulos de largura, impresso com módulos de 0,254 mm: 7,4 mm para o código e 9,4 mm com a margem. Módulos tão pequenos servem para um scanner dedicado, segurado perto da etiqueta; a câmera de um celular à distância de um braço precisa de módulos bem maiores.
Com uma largura impressa de 2 cm, incluindo a margem, um código versão 2 tem módulos de cerca de 0,61 mm, enquanto um código versão 8 tem módulos de cerca de 0,35 mm. Se um código precisa ser pequeno, mantenha o conteúdo dele curto.
- Imprima módulos escuros sobre um fundo claro, com contraste forte.
- Mantenha a zona de silêncio de quatro módulos livre de texto, bordas e imagens.
- Evite superfícies brilhantes e dobras, onde um reflexo ou um vinco podem esconder módulos.
- Teste a prova impressa, e não a tela, na distância real e com um celular mais antigo.
QR codes de Wi-Fi
Um código de Wi-Fi é texto simples em um formato que as câmeras de celular reconhecem. Ele foi popularizado pelo projeto de códigos de barras ZXing e não faz parte da norma QR em si:
WIFI:T:WPA;S:Casa;P:correct horse battery staple;H:false;;T é o tipo de segurança (como WPA, WEP ou nopass), S é o nome da rede, P é a senha e H indica se a rede é oculta.
Os caracteres \ ; , : e " são escapados com uma barra invertida dentro do nome ou da senha; o gerador do nTools faz isso por você.
A senha fica guardada no código como texto legível: qualquer pessoa que escaneie o código, ou o fotografe, fica com a senha. Para um código na parede, use uma rede de convidados.
Códigos estáticos e dinâmicos
Um código estático contém o próprio conteúdo, como o link ou o login de Wi-Fi. Ele nunca expira, não tem limite de leituras e funciona sem nenhum serviço intermediário; para mudar o conteúdo, você imprime um código novo. O gerador do nTools cria códigos estáticos.
Um código dinâmico, vendido por muitos serviços de QR code, contém um link curto para esse serviço, que então redireciona para o seu endereço real. Você pode mudar o destino depois e contar as leituras, mas cada leitura depende do serviço: se a assinatura acabar ou a empresa fechar, os códigos impressos param de funcionar.
Escaneando com segurança
Um QR code não consegue executar nada sozinho; ele só entrega ao celular um texto, geralmente um link. O risco está no destino desse link. A Federal Trade Commission, a agência de defesa do consumidor dos Estados Unidos, alerta para códigos falsos colados sobre códigos verdadeiros, por exemplo em parquímetros, e para códigos em mensagens inesperadas que insistem para que você aja imediatamente.
- Leia o endereço que o celular mostra antes de abri-lo e procure erros de grafia.
- Desconfie de um código em um adesivo colado sobre outro código.
- Não escaneie códigos de mensagens que você não esperava; em vez disso, acesse você mesmo o site da empresa.
Perguntas frequentes
QR codes expiram?
Um código estático nunca expira: ele contém o próprio conteúdo. Um código dinâmico para de funcionar quando o serviço por trás do link curto deixa de redirecioná-lo.
Por que o meu QR code não é lido?
As causas mais comuns são um código impresso pequeno demais para a quantidade de conteúdo, uma zona de silêncio ausente ou ocupada, baixo contraste, um reflexo ou um vinco, ou um logotipo que cobre demais. Encurtar o conteúdo deixa cada módulo maior.
Qual nível de correção de erros devo usar?
O nível M serve para a maioria dos códigos impressos. Use Q ou H se o código for ficar sujo ou desgastado, ou se tiver um logotipo, e aceite que ele ficará mais denso.
O que o gerador do nTools faz?
Ele cria códigos estáticos no nível M, escolhendo a menor versão em que o conteúdo cabe, e acrescenta a zona de silêncio de quatro módulos. O código é desenhado no seu navegador, e nada do que você digita é enviado.
Guias relacionados
- Endereços IP explicados: IPv4, IPv6 e as faixas reservadas
- Registros DNS explicados: A, AAAA, CNAME, MX, TXT e NS
- Sub-redes e CIDR explicados: prefixos, máscaras e hosts utilizáveis
- Timestamps Unix e fusos horários explicados
- Formatos de imagem explicados: JPEG, PNG, WebP, AVIF e HEIC
- Força de senhas explicada: comprimento, entropia e frases-senha
- UUIDs explicados: v4, v7 e como escolher a versão certa
- Porcentagens e IVA explicados: somar, tirar e acumular