Pular para o conteúdo
Português (Brasil)

Explicação

O que é um QR code?

Um QR code é um código de barras bidimensional que guarda texto numa grade de quadradinhos pretos e brancos. Este guia desmonta um deles — as marcas dos cantos, a área de dados, a informação de reparo — e explica por que essa estrutura decide quanto cabe lá dentro.

Um QR code é uma grade de quadradinhos pretos e brancos que guarda texto. É só isso. Não é um link, não é uma imagem e não é uma conta em lugar nenhum: é uma forma de escrever caracteres de um jeito que uma câmera consiga ler.

A sigla vem de Quick Response, resposta rápida, e descreve o problema para o qual ele foi inventado. Em 1994, na fábrica da Denso Wave, um código de barras comum obrigava a alinhar o leitor com as listras e cabiam apenas uns vinte caracteres. A equipe de Masahiro Hara procurava algo que pudesse ser lido de qualquer ângulo e que guardasse bastante mais. A solução foi passar de uma dimensão para duas: em vez de listras de larguras diferentes, uma malha em que cada célula — cada módulo — vale um bit.

Por que eles estão em todo lugar no Brasil

Vale começar por aqui, porque a resposta brasileira é diferente da de quase todo o resto do mundo.

Em muitos países o QR code passou vinte anos sendo uma curiosidade de marketing, apareceu em cartazes que ninguém escaneava e só virou hábito durante a pandemia, por causa dos cardápios. No Brasil aconteceu outra coisa: o PIX transformou o formato num gesto de pagamento cotidiano. Escanear um código para pagar deixou de ser novidade tecnológica e virou algo que se faz na feira, na barraca de praia, no salão e no aplicativo de banco, várias vezes por semana.

Isso muda duas coisas de forma prática. A primeira é que a habilidade está distribuída: quase ninguém precisa de instrução para apontar a câmera. A segunda, menos confortável, é que a familiaridade também virou superfície de ataque — e é por isso que o golpe do QR code existe aqui em escala, o que tem um guia inteiro só para ele neste site.

O que é cada parte do desenho

Se você olhar um QR code de perto vai ver que nem tudo é aleatório. Há áreas com função específica.

Os três quadrados grandes dos cantos são os padrões de posicionamento. São a primeira coisa que o leitor procura, e a proporção de anéis deles — preto, branco, preto, na relação 1:1:3:1:1 — é um padrão que quase nunca aparece por acaso numa fotografia. Ao encontrar três, o celular sabe onde estão três dos quatro cantos e, portanto, em que ângulo o código está. É por isso que você consegue escanear um código torto, ou de cabeça para baixo, e funciona igual: a orientação é deduzida de qual canto não tem quadrado.

O quadrado pequeno perto do quarto canto é o padrão de alinhamento. Corrige a deformação quando o código está sobre uma superfície curva ou é fotografado em ângulo. Os códigos menores não têm esse padrão porque não precisam; a partir de certo tamanho aparecem vários.

As duas linhas de módulos alternados que ligam os quadrados dos cantos são os padrões de temporização. Elas dizem ao leitor o tamanho exato de um módulo, que é o que permite dividir a malha corretamente mesmo com a foto um pouco fora de foco.

O resto são dados e correção de erros, misturados segundo uma ordem que a norma define.

Como o texto vira quadradinhos

O processo tem três passos e vale entendê-los porque eles explicam quase todas as decisões práticas.

Primeiro, o texto é codificado em bits usando o modo mais compacto que servir. Se só houver dígitos, cada caractere ocupa cerca de 3,3 bits. Se houver maiúsculas e alguns símbolos, 5,5 bits. Se houver minúsculas, acentos ou cedilha, passa-se ao modo byte e cada caractere custa oito bits ou mais. É por isso que um texto em português com acentuação gera um código mais denso do que o mesmo texto sem ela — e por que «cardápio» custa mais que «cardapio» dentro de um padrão.

Segundo, acrescenta-se a informação de correção de erros por meio de um algoritmo chamado Reed-Solomon. Não é um extra: é o que permite que um código continue funcionando com uma parte tampada, riscada ou mal impressa. Há quatro níveis — L, M, Q e H — que recuperam aproximadamente 7%, 15%, 25% e 30% do conteúdo. Quanto mais alto o nível, mais módulos o reparo ocupa e menos espaço sobra para dados.

Terceiro, tudo é posicionado na malha seguindo um percurso em ziguezague e recebe uma máscara: um padrão que se combina com os dados para evitar manchas uniformes grandes ou formas parecidas com os quadrados dos cantos. O codificador testa as oito máscaras possíveis e fica com a que produz o desenho mais equilibrado. Por isso dois códigos com o mesmo conteúdo podem parecer diferentes se forem gerados por ferramentas diferentes: os dois estão corretos.

Por que o tamanho não é você quem decide

O número de módulos por lado não é uma preferência, é uma consequência. O formato tem quarenta versões: a 1 tem 21×21 módulos e cada versão seguinte acrescenta quatro fileiras e quatro colunas, até a 40, de 177×177. O codificador escolhe a menor versão em que os seus dados caibam com o nível de correção que você pediu.

Daí saem as duas regras práticas mais úteis que existem sobre QR code:

  1. Menos texto, código mais grosso. E módulos grossos são os que sobrevivem a uma impressão pequena, a uma câmera mediana e a um papel que absorve tinta.
  2. Mais correção de erros, código mais fino. Subir de M para H com o mesmo conteúdo pode aumentar bastante o número de módulos, então só compensa quando você realmente espera dano ou vai cobrir parte do código com um logo.

O que acontece no segundo do escaneamento

Quando você aponta a câmera, o celular faz tudo isso em alguns milissegundos: localiza os três quadrados, deduz a orientação, calcula o tamanho de módulo com os padrões de temporização, corrige a perspectiva, lê os bits, desfaz a máscara, aplica a correção de erros para reparar o que faltar e obtém o texto original.

E então — e só então — decide o que fazer com esse texto. Se começar com https://, oferece abrir. Se começar com WIFI:, oferece conectar. Se começar com BEGIN:VCARD, oferece salvar um contato. Esse prefixo é a única diferença entre um «QR code de Wi-Fi» e um «QR code de link»: os quadradinhos funcionam exatamente igual, o que muda é o que está escrito neles.

Entender isso é o que evita o erro mais comum do formato, que é esperar que um código faça algo que o conteúdo dele não pede.

Perguntas frequentes

Quem inventou o QR code e de quem ele é hoje?

Foi desenvolvido em 1994 pela equipe de Masahiro Hara na Denso Wave, uma subsidiária da Toyota, para rastrear peças de carro numa linha de montagem. A Denso Wave tem patentes sobre o formato mas nunca as acionou contra quem gera ou lê códigos, e o formato foi normatizado como ISO/IEC 18004, que qualquer um pode implementar. As palavras QR Code continuam sendo marca registrada, e é por isso que a documentação as escreve em maiúsculas. Na prática você pode criar e imprimir quantos quiser sem pagar nem pedir permissão a ninguém.

Quantos dados cabem num único QR code?

O teto teórico é de 7.089 dígitos numéricos, 4.296 caracteres alfanuméricos ou 2.953 bytes no nível de correção mais baixo. Esses números não servem de nada na prática, porque um código assim tem 177 fileiras de quadradinhos e a câmera de um celular não consegue resolvê-los a menos que o código impresso seja enorme. Qualquer coisa que você queira que as pessoas realmente escaneiem deveria ficar abaixo de uns 300 caracteres, o que mantém a grade pequena o bastante para ser lida a uma distância confortável.

Por que alguns QR codes parecem mais carregados que outros?

Porque levam mais dados dentro. O formato cresce por versões, da 1 à 40, e cada uma acrescenta quatro fileiras e quatro colunas de módulos. Um código com vinte caracteres pode ser versão 2, com 25 módulos de lado; um com duzentos precisa de uma versão bem maior e o mesmo tamanho impresso passa a distribuir muito mais quadradinhos na mesma área. Subir o nível de correção de erros também acrescenta módulos, porque a informação de reparo ocupa espaço.

Dá para ler um QR code sem internet?

O código sempre é lido sem internet, porque decifrar o padrão é um cálculo local feito pelo próprio celular. O que pode precisar de conexão é o que vem depois: se dentro houver um endereço da web, abri-lo exige rede. Se dentro houver texto puro, dados de contato ou uma configuração de Wi-Fi, tudo funciona no modo avião.

QR codes vencem?

O padrão em si nunca vence: é uma forma de escrever dados, não um serviço. O que pode vencer é o destino. Um código estático guarda os dados dentro e funciona enquanto existir aquilo para onde ele aponta. Um código dinâmico guarda o endereço de um serviço de redirecionamento, e para de funcionar no dia em que esse serviço fechar ou deixar de ser pago, mesmo com o papel impresso intacto.

Geradores tratados aqui

Continue lendo