O código desta página não rodou.

Abrir o index.html direto de uma pasta bloqueia os módulos de JavaScript, então não vai acontecer nada quando você escolher a imagem que vai ser lida. Sirva a pasta por http:

powershell -ExecutionPolicy Bypass -File serve.ps1

Depois abra http://localhost:8080/.

Leitor de QR Code e código de barras — ler um QR Code de uma imagem ou pela câmera

Aponte a câmera, ou solte aqui uma foto. A leitura acontece aqui, e em nenhum outro lugar.

Idioma: Português
Ver o código-fonte
Seus as imagens e os códigos que estão nelas são processados no navegador. Sem envio para processamento.

Ler um código é aritmética sobre pixels, e os pixels já estão aqui. Achar o símbolo, corrigir o ângulo, desfazer a máscara, reparar o dano com Reed-Solomon e ler os bits de volta acontece tudo em cerca de duas mil linhas de JavaScript nesta página, que você pode ler. A câmera é a mesma promessa, não uma exceção a ela: um quadro chega como pixels nesta aba, é examinado e some. Nada é gravado, nada fica guardado, e esta página não tem função de rede de espécie alguma para mandar coisa nenhuma.

Verificação ao vivo: verificando…

Offline: verificando…

Você não precisa confiar na nossa palavra. Abra as ferramentas do desenvolvedor, deixe a aba “Rede” à vista e leia um código com a câmera ligada. Nenhuma requisição leva um quadro nem um caractere do que estava escrito. Ou então desligue a internet e leia o código assim mesmo.

1 Mostre o código para ela

Uma fotografia, um print, ou a câmera. Escolha o que escolher, a imagem é lida aqui, nesta página, no seu computador — nada é enviado, e um quadro da câmera é examinado e jogado fora, não gravado.

Você também pode colar uma imagem direto com Ctrl+V — um print de um código que já está na tela é o caminho mais rápido.

2 O que está escrito

Mostrado, nunca aberto. Um código impresso é um endereço que ninguém consegue ler, que é exatamente o que faz valer a pena para alguém colar um adesivo por cima — então o texto inteiro está aqui para você olhar, com o host onde você realmente cairia numa linha só dele.

Ver como Markdown

Como ler um QR Code sem enviar a imagem

  1. Dê a imagem para ela. Solte uma foto ou um print na caixa, cole uma direto, ou aperte o botão da câmera. Várias de uma vez pode: cada uma é lida por conta própria e cada uma tem a sua resposta. Um print de um código que já está na sua tela é o caminho mais rápido e o mais confiável, porque ali não entra lente, nem ângulo, nem luz.
  2. Ponha o símbolo inteiro no quadro, margem incluída. O branco em volta de um código faz parte do código: é assim que um leitor sabe onde o símbolo termina. Uma foto cortada rente à borda dos quadradinhos é de longe o motivo mais comum de um código não ser lido. Encher mais ou menos metade do quadro com o código está bom; mais perto do que isso e os cantos ficam de fora.
  3. Leia o endereço antes de decidir qualquer coisa. O motivo de ler um código num cartaz, num parquímetro ou numa carta é descobrir para onde ele leva, e é justamente isso que a câmera do celular não deixa você fazer de verdade. Aqui o host fica numa linha só dele. Se não for um nome que você esperava, você já conseguiu o que veio buscar e não sobra nada para abrir.
  4. Leve os avisos a sério, principalmente os discretos. Um endereço http:// puro, um nome num alfabeto que não é o que parece, um encurtador de link, ou qualquer coisa antes de um @ no endereço: cada um é apontado onde aparece. Nenhum deles prova nada sozinho. Todos valem dez segundos antes de você ir.
  5. Se não ler, mude a luz antes de mudar qualquer outra coisa. Quase toda falha é problema de limiar: um reflexo atravessando o meio, uma sombra sobre um canto, ou uma tela fotografada num ângulo que pega a luz de fundo. Mude de posição para o brilho não cair no código, ou acenda a luz da câmera. Se ainda assim não der, tire uma foto reta e de frente e solte essa — uma imagem parada recebe uma busca muito mais minuciosa do que um quadro ao vivo consegue receber.
  6. Se a resposta parecer estranha, olhe a imagem amostrada. Abra “como este foi lido” e olhe a gradezinha. É o que esta página achou que o código era, redesenhado a partir dos módulos que ela amostrou. Um leitor que leu um símbolo errado e o reparou até virar algo plausível mostra isso ali, e em nenhum outro lugar.

A versão longa

Como criar um código QR e provar que ele escaneia Gere o código e depois verifique com o leitor do mesmo site: a carga exata, o link real, no tamanho de impressão e a partir de uma foto, antes da tiragem. Tudo no navegador, nada enviado.

Perguntas

A imagem é enviada para algum lugar?

Não, e nem o que é lido dela. A imagem é decodificada num canvas desta página e lida ali, por JavaScript servido deste site. Esta ferramenta não tem função de rede de espécie alguma — nunca busca nada e nunca manda nada — e a Content-Security-Policy da página nomeia todo endereço que ela pode contatar, e nenhum deles é nosso. A prova mais simples é desligar a internet: ela continua funcionando.

A câmera grava alguma coisa?

Não. Um quadro da câmera chega como pixels nesta aba, é desenhado num canvas, é examinado e é sobrescrito pelo próximo cerca de um décimo de segundo depois. Nada é escrito em disco e nada fica guardado. O fluxo para assim que você aperta parar, quando a aba vai para segundo plano e quando você sai da página — e a luz da sua câmera é o indicador em que confiar, porque nenhuma página consegue apagá-la.

Por que ela me mostra o link em vez de abrir?

Porque essa é a parte útil. Um QR Code é um endereço que você não consegue ler, e é justamente por isso que um adesivo sobre o código de um parquímetro funciona: quando você descobre para onde ele ia, já está lá. Aqui o texto é mostrado inteiro, o host sai numa linha só dele, e abrir é um botão separado que você aperta depois de ler. É um clique a mais, e é o clique de que esse formato sempre precisou.

O que ela consegue ler?

QR Codes em todas as versões, da 1 à 40, nos quatro níveis de correção de erro, em modo numérico, alfanumérico, byte e kanji, informando os conjuntos de caracteres ECI e os símbolos de um conjunto encadeado em vez de descartar em silêncio. Do lado das barras: EAN-13, EAN-8, UPC-A, UPC-E, ITF-14, Interleaved 2 of 5, Code 128 e Code 39. Não lê Data Matrix, PDF417, Aztec nem MaxiCode.

Ela não lê o meu código. O que está errado?

Nove em cada dez vezes é uma de três coisas. A margem branca foi cortada, e um leitor usa ela para saber onde o símbolo acaba. Tem um reflexo ou uma sombra sobre parte do código, então nenhum limiar separa os quadradinhos escuros dos claros. Ou o código está tão pequeno no quadro que os módulos dele não passam de um ou dois pixels. Mude a luz, encha mais ou menos metade do quadro, e tire a foto de frente em vez de enviesada.

Ela lê um código danificado ou coberto em parte?

Às vezes. Reed-Solomon restaura palavras de código danificadas dentro da capacidade do símbolo. Os cerca de 30% de H se referem ao total de palavras de código, não a módulos arbitrários nem à área; danos nos padrões de localização podem impedir a detecção. O contador do resultado mostra os reparos realizados. A DENSO explica os níveis.

Por que ela diz que não sabe para onde um link do bit.ly leva?

Porque descobrir seria perguntar ao bit.ly, e isso é uma requisição de rede. Todo o resto do que esta página afirma se apoia em não existir aqui nenhum código que contate coisa alguma, e abrir uma exceção caladinho valeria menos do que a resposta. Então o encurtador é apontado e o que ele esconde fica honestamente desconhecido. Se você quiser resolver, cole num lugar que aceite perguntar.

É seguro ler um QR Code?

Ler é seguro. Obedecer é o risco, e é um risco real: código colado por cima do verdadeiro em parquímetro, em mesa de restaurante e em aviso de entrega já é comum o bastante para ter nome. O que faz isso funcionar é que ninguém consegue ler um código olhando para ele. Ler sem abrir — que é o que esta página faz — tira essa vantagem inteira, e os dez segundos que custa olhar o host são a defesa toda.

O que é a gradezinha embaixo de cada resultado?

Os módulos que esta página amostrou de verdade da sua imagem, redesenhados a um quadradinho por módulo. Ela está aí para a leitura poder ser conferida no olho em vez de acreditada: se aquela grade parece o código que você fotografou, a resposta acima saiu dos pixels certos. Quase nenhum leitor te mostra isso, e é a diferença entre uma ferramenta que dá para conferir e uma em que você tem que acreditar.

Ela lê vários códigos numa imagem só?

Um por imagem, por enquanto. Solte várias imagens de uma vez e cada uma é lida por conta própria, e a câmera vai lendo código atrás de código enquanto você move, guardando cada um novo que ainda não viu. Uma única foto com uma folha cheia de códigos é caso de recortar, ou de apontar a câmera para um de cada vez.

Por que ela chama o meu código de barras de outro nome?

Porque um código de barras não carrega o próprio nome. UPC-A é um EAN-13 cujo primeiro dígito é zero, ITF-14 é Interleaved 2 of 5 com catorze dígitos e um dígito verificador válido, e o Code 128 no modo numérico não se parece com mais nada. O que esta página informa é o que as barras dizem mais o que o dígito verificador confirma, que é tudo o que o próprio símbolo sabe.

Funciona offline?

Sim. Carregue a página uma vez, depois desligue a internet e ela continua funcionando, câmera inclusive. É também o jeito mais simples de provar que nada é enviado: um leitor que mandasse a sua imagem para fora para ser decodificada pararia no instante em que você tirasse da tomada.