Gerador de QR Code

19 / 2331 bytes
Correção de erros
15% recuperável
Versão 2 · 25×25 módulos

Nada do que você digita aqui é armazenado, registrado ou compartilhado.

Gere um QR code para uma URL, texto ou rede Wi-Fi e baixe em PNG ou SVG. Tudo acontece no seu navegador, então nada é enviado e o código nunca expira.

Como usar

  1. Digite a URL ou o texto que quer codificar.
  2. Ajuste a correção de erros, as cores e a zona de silêncio se precisar.
  3. Baixe em PNG para documentos, ou SVG para impressão.

O que realmente existe no padrão

Um QR code é uma grade de módulos com estrutura fixa. Os três quadrados grandes nos cantos são os padrões de localização, que permitem ao leitor achar o código e descobrir sua orientação em qualquer ângulo. Padrões de alinhamento menores aparecem nas versões maiores para corrigir a distorção de um código fotografado numa superfície curva ou inclinada. As linhas pontilhadas entre os localizadores são os padrões de temporização, que dão ao leitor a grade de módulos. Ao redor dos localizadores fica a informação de formato, que descreve o nível de correção de erros e a máscara.

Todo o resto são dados e correção de erros, intercalados. Existem 40 versões, de 21 por 21 módulos até 177 por 177, e a menor que comporta o conteúdo é escolhida automaticamente - é por isso que o código fica visivelmente mais denso conforme você digita.

O modo de codificação importa mais do que se imagina. Conteúdo numérico ocupa cerca de 3,3 bits por dígito, alfanumérico cerca de 5,5 - mas o conjunto alfanumérico é só de maiúsculas, com alguns símbolos. Qualquer outra coisa cai no modo byte, com 8 bits por caractere, e letras acentuadas em UTF-8 ocupam ainda mais. É por isso que HTTPS://EXAMPLE.COM/PATH gera um código bem mais simples que a mesma URL em minúsculas: esquema e host não diferenciam maiúsculas, então passá-los para maiúsculas não custa nada, e a diferença pode ser de uma ou duas versões.

Fazendo um código que leia com confiabilidade

Mantenha a zona de silêncio. A especificação exige quatro módulos de espaço livre em todos os lados, e removê-la para caber no layout é o motivo mais comum de um código impresso falhar. Os leitores usam esse espaço para sequer encontrar o código.

Mantenha a polaridade. Módulos escuros sobre fundo claro é o que todo leitor espera; códigos invertidos são lidos por alguns e não por outros. Mantenha o contraste alto, evite degradês e fundos fotográficos atrás dos módulos e, se for colorir, mude a cor escura em vez de clareá-la.

Dimensione pela distância. A regra prática é que o código tenha cerca de um décimo da distância de leitura de largura - uns 3 cm para um celular a 30 cm, e muito maior do que se imagina num cartaz lido do outro lado da sala. Na impressão, não deixe os módulos ficarem menores que cerca de 0,4 mm, e confira a peça impressa de verdade, não a prova na tela.

Se for colocar um logotipo no meio, aumente a correção de erros para H antes. Isso reserva cerca de 30% de redundância, que é o que cobre a área encoberta - mas o logo ainda precisa ficar longe dos padrões de localização, e vale testar a leitura com dois ou três celulares diferentes antes de imprimir mil cópias.

Formatos de conteúdo

Um QR code carrega texto, e o que o leitor faz com esse texto depende de convenções. Uma URL abre. Qualquer outra coisa geralmente aparece como texto simples, a menos que siga um formato conhecido.

Wi-Fi usa WIFI:T:WPA;S:nomedarede;P:senha;; com T definido como WPA, WEP ou nopass. Repare que os pontos e vírgulas são obrigatórios e que caracteres especiais no nome ou na senha precisam de escape com barra invertida. Telefone é tel:, e-mail é mailto: com a sintaxe de query usual para assunto e corpo, e localização é geo: com latitude e longitude. Contatos usam vCard, que é verboso, mas amplamente suportado.

Qualquer coisa que dependa de um esquema específico de app só funciona onde o app está instalado, e é por isso que uma URL https simples que redireciona costuma ser mais robusta que um esquema personalizado engenhoso.

Códigos estáticos e dinâmicos

O código gerado aqui é estático: o seu conteúdo é codificado diretamente nos módulos. Funciona para sempre, funciona offline, não depende de nenhum serviço e não reporta nada a ninguém. Também não pode ser alterado - se a URL para a qual ele aponta mudar, todas as cópias impressas morrem.

Um código dinâmico resolve isso codificando uma URL curta de redirecionamento de um provedor, que a encaminha para onde você indicar no momento e conta as leituras no caminho. Isso é de fato útil para uma campanha cujo destino vai mudar, e vale ter claro o custo: o provedor vê todas as leituras, o código para de funcionar se a conta vencer ou o serviço fechar, e muitos geradores gratuitos produzem códigos dinâmicos sem avisar.

Se você quer essa flexibilidade, o jeito honesto de tê-la é um código estático apontando para uma URL curta num domínio que você controla, com redirecionamento no servidor. Você mantém a possibilidade de mudar o destino e ninguém mais fica no meio do caminho.

Como a correção de erros faz um código danificado ainda ser lido

Os QR codes usam codificação Reed-Solomon, a mesma família de códigos corretores de erros que protegia os dados nos CDs e é usada em comunicação com o espaço profundo. A ideia é tratar os dados como coeficientes de um polinômio e transmitir pontos extras dessa curva, de modo que, enquanto sobreviverem pontos suficientes, o original pode ser reconstruído exatamente.

Há quatro níveis disponíveis. O L recupera cerca de 7% das palavras de código, o M cerca de 15%, o Q cerca de 25% e o H cerca de 30%, e a redundância fica espalhada pelo símbolo em vez de concentrada, e é por isso que um dano em um canto raramente importa. Níveis mais altos não deixam o código mais legível em boas condições; fazem com que ele sobreviva a condições piores, ao custo de um padrão mais denso para o mesmo conteúdo.

O M é o padrão sensato para tela ou impressão limpa. O H serve para códigos que serão impressos em superfícies curvas, expostos ao tempo ou parcialmente cobertos por um logotipo. Aumentar o nível aumenta a quantidade de módulos, então um código de nível H com uma URL longa pode ficar visivelmente mais fino que o equivalente em nível M, o que joga contra você quando o tamanho impresso é fixo.

Capacidade, e por que encurtar o conteúdo ajuda

A capacidade depende da versão, do nível de correção de erros e do modo de codificação em conjunto. Na versão 10 - uma grade de 57 por 57 - com correção de nível M, um código guarda aproximadamente 271 caracteres alfanuméricos ou 213 bytes. Na versão máxima, a 40, os números chegam aos milhares, mas um símbolo desse tamanho é impraticável de imprimir e lento de escanear.

O modo de codificação é a alavanca que a maioria ignora. Conteúdo numérico é compactado a cerca de 3,3 bits por dígito, o alfanumérico a 5,5, e todo o resto cai para 8 bits por caractere. O conjunto alfanumérico é formado por letras maiúsculas, dígitos e nove símbolos, então HTTPS://EXAMPLE.COM/PATH é codificado de forma bem mais eficiente que a versão em minúsculas, e como o esquema e o host não diferenciam maiúsculas de minúsculas, colocá-los em caixa alta não custa nada.

Encurtar a URL é a outra alavanca, e ela age antes de tudo isso: menos caracteres significam uma versão menor, módulos maiores no mesmo tamanho impresso e um código que é lido de mais longe e com luz pior.

Quishing, e o que um leitor deveria mostrar

Um QR code é opaco para quem o escaneia. É nisso que se apoia inteiramente o que hoje se chama de quishing: adesivos colados sobre códigos legítimos em parquímetros e mesas de restaurante, códigos em e-mails que escapam dos verificadores de link por serem imagens, e códigos em cartazes que levam a páginas de pagamento convincentes.

As defesas são banais. Vale escolher um leitor que mostre a URL antes de abri-la, e toda câmera de celular atual faz isso. Olhe o domínio, não a página, já que clonar uma página de pagamento é trivial. Desconfie de um código físico que pareça aplicado por cima de outra coisa, que é exatamente a aparência de um adesivo sobre um código impresso quando visto de perto.

Para quem publica códigos, a contrapartida útil é apontá-los para um domínio que as pessoas reconheçam como seu, em vez de um encurtador, para que a prévia signifique alguma coisa. Um código que resolve para um domínio curto qualquer é indistinguível do de um atacante.

Medir escaneamentos sem entregar o código a terceiros

Códigos dinâmicos de um fornecedor são a forma usual de contar escaneamentos e trocar o destino, e o custo é real: o fornecedor enxerga cada escaneamento, o código para de funcionar se a conta expirar, e alguns geradores gratuitos produzem códigos dinâmicos sem avisar - ou seja, o código que você imprimiu depende de um serviço que você nunca escolheu como dependência.

A versão que você controla é um código estático apontando para um caminho curto no seu próprio domínio, com o redirecionamento no seu próprio servidor. Mudar o destino é uma alteração de configuração, as métricas caem nos seus próprios logs e ninguém mais está no caminho. Um caminho separado por campanha dá exatamente as contagens por local de veiculação que costumam motivar a compra de códigos dinâmicos.

De um jeito ou de outro, o código em si nunca reporta nada. Os escaneamentos são contados quando o destino é requisitado, o que significa que um código impresso num cartaz, fotografado mas nunca aberto, é invisível, e quem digita a URL à mão é contabilizado igual a quem usou um leitor.

Uma lista de conferência antes de mandar imprimir

Teste o objeto final, não a arte. Imprima o código no tamanho definitivo, no material pretendido, e escaneie com pelo menos três celulares, incluindo um Android mais antigo. Teste na iluminação em que o código vai viver - um código numa parede escura de um bar com pouca luz é um problema diferente do mesmo código sobre uma mesa.

Verifique se a zona de silêncio sobrevive ao layout. Quatro módulos de espaço livre em cada lado é uma exigência da especificação, e o motivo mais comum para um código impresso falhar é um designer empurrar texto ou uma borda para dentro dessa margem para fechar a composição.

Confirme o destino antes da tiragem e mantenha-o funcionando depois. Um código sobrevive à campanha que o criou: a URL para a qual ele aponta deve redirecionar, e não devolver 404, quando a página de destino for desativada, porque um código impresso não pode ser editado e cópias dele circulam por anos.

Perguntas frequentes

Este código vai parar de funcionar depois?
Não. Os dados são codificados diretamente no padrão, então o código funciona para sempre e não depende de nenhum serviço no ar. Muitos geradores gratuitos produzem um código que aponta para a própria URL de redirecionamento deles, o que permite rastrear as leituras e pode parar de funcionar se a conta expirar ou se passarem a exigir um plano pago. Aqui nada redireciona para lugar nenhum.
O que o nível de correção de erros muda?
Ele define quanto do código pode estar danificado ou coberto e ainda assim ser lido: cerca de 7% no L, 15% no M, 25% no Q e 30% no H. Níveis mais altos exigem um código mais denso para os mesmos dados. Use H se pretende colocar um logo no meio, e L se o código ficará limpo e você quer o mais simples possível.
Por que meu código fica mais denso conforme adiciono texto?
QR codes têm 40 versões, de 21x21 até 177x177 módulos. A menor versão que comporta seus dados é escolhida automaticamente, então conteúdo mais longo significa uma grade mais densa. Encurtar a URL geralmente é a melhor forma de manter o código fácil de escanear.
Devo baixar PNG ou SVG?
PNG para slides, documentos e qualquer lugar onde se espera uma imagem comum. SVG para impressão e formatos grandes, já que é vetorial e continua nítido em qualquer tamanho.
Por que manter uma zona de silêncio ao redor do código?
A especificação exige quatro módulos de espaço livre em cada lado. Os leitores a usam para localizar o código, e removê-la é um dos motivos mais comuns de um código impresso não ser lido.
Funciona com texto não latino?
Sim. O conteúdo é codificado em UTF-8, então japonês, chinês, coreano e emoji sobrevivem à ida e volta. Alguns geradores corrompem isso silenciosamente porque codificam os bytes como Latin-1.

Última atualização:

Relatar um problema

Inclua os passos, o resultado esperado e o resultado real. Remova segredos e dados pessoais.

Ferramentas relacionadas