§

Solte a imagem ou clique para escolher

Solte a imagem ou clique para escolher PNG, JPG, GIF, BMP, WebP — ou cole do clipboard
§

Digitalizar com câmara

O acesso à câmara é solicitado apenas quando esta opção está ativa. Nunca fazemos upload ou gravamos nada.
§

Conteúdo descodificado

Em Portugal e no Brasil, os QR codes transportam dados frequentemente sensíveis. Menus de restaurantes em cartões de mesa, portões de entrada de eventos, receitas médicas digitais do SNS ou da ANS, cartazes de informação de saúde, aplicações de fidelização de supermercados, cartões de embarque da TAP e da LATAM. Todos esses casos de uso apontam a câmara de um telemóvel para um símbolo impresso. Quando aponta um navegador de computador para o mesmo símbolo, normalmente quer verificar o que está dentro antes de agir — confirmar se o URL num cartaz é o site real do local, recuperar a senha Wi-Fi que a página de configuração do router imprimiu como QR, ou ler o vCard que um crachá de conferência quer guardar nos seus contactos. Este leitor suporta todos os formatos que essas fontes produzem: URL, strings de ligação Wi-Fi, vCard, MeCard, texto simples, e-mail, SMS, coordenadas geográficas. Os bytes da imagem e o payload descodificado ficam no seu separador.

O que é um leitor de QR code?

Um QR code é um código de barras matricial bidimensional definido pela ISO/IEC 18004. Codifica texto, URLs, cartões de contacto, credenciais Wi-Fi e outros payloads curtos numa grelha de módulos quadrados a preto e branco, juntamente com dados de correção de erros Reed-Solomon para que o símbolo ainda descodifique após danos parciais ou uma sobreposição de logótipo. Um leitor de QR code faz o inverso: recebe a imagem de um símbolo QR e recupera a string do payload original. Este leitor executa o pipeline de descodificação diretamente no seu navegador usando a biblioteca de código aberto jsQR (cerca de 130 KB, licença MIT). A imagem que soltar, colar ou digitalizar com a câmara nunca sai do separador. Não há etapa de upload. Abra as DevTools durante a descodificação e o painel Network permanece silencioso — a página não faz XHR, fetch, nem beacon de análise ligado ao conteúdo da sua imagem.

Como funciona a descodificação de QR?

A descodificação corre inteiramente na sua máquina. Cada imagem passa por um pipeline fixo antes de o texto do payload ser devolvido:

  1. O ficheiro de imagem (PNG, JPG, WebP ou um fotograma de câmara) é desenhado num <canvas> HTML fora do ecrã. A API canvas devolve os dados brutos de pixels como um array de bytes RGBA.
  2. A biblioteca jsQR converte o array de pixels num bitmap em escala de cinzentos e procura os três quadrados de padrão localizador característicos nos cantos de um símbolo QR.
  3. Uma vez localizados os padrões, o descodificador calcula a transformação de perspetiva e extrai a grelha completa de módulos, lendo cada célula como 0 ou 1 binário.
  4. A grelha de módulos é analisada de acordo com a especificação QR: as informações de formato e versão são lidas primeiro, depois os módulos de dados são desinterlaçados e a correção de erros Reed-Solomon é aplicada.
  5. As palavras de código de dados corrigidas são descodificadas de acordo com o modo de segmento (numérico, alfanumérico, byte ou kanji), produzindo a string do payload original.
  6. A ferramenta analisa então o payload com um pequeno conjunto de expressões regulares para identificar o tipo de conteúdo (URL, credencial Wi-Fi, vCard, etc.) e apresenta o resultado com um botão de ação adequado.

Por que usar um leitor de QR baseado no navegador?

  • Os bytes da imagem nunca saem do seu dispositivo. Cole um QR que esconde uma senha Wi-Fi, um URL de staging interno ou um vCard com o número de telefone pessoal de alguém, e esse conteúdo fica no seu computador. Outros leitores de QR executam a descodificação num servidor remoto e pedem-lhe para fazer upload da imagem primeiro — este não.
  • Após o carregamento da página, a descodificação funciona offline. A biblioteca jsQR vive no seu separador. Pode desligar o Wi-Fi, soltar uma imagem QR na página e ainda obter o payload — útil em voos, caves e em qualquer lugar onde a rede corporativa bloqueie scanners de terceiros.
  • Se o seu computador tem webcam, pode apontá-la a um QR code impresso e lê-lo sem instalar uma aplicação. O fluxo de câmara fica no navegador e para no momento em que um código é descodificado.
  • O leitor reconhece URLs, strings de ligação Wi-Fi, vCard, MeCard, mailto, SMS e payloads geo e apresenta um botão de ação correspondente. Abrir um URL, copiar a senha Wi-Fi, guardar o cartão de contacto — seja o que for que o QR contém.

Usos comuns para um leitor de QR code

Sempre que precisar de ver o que um QR code realmente diz sem apontar um telemóvel:

  • Depurar códigos que acabou de gerar. Cole o QR que a sua aplicação produziu e confirme se o URL ou payload codificado corresponde ao que pretendia antes de o enviar para impressão, embalagem ou um cartaz.
  • Recuperar credenciais Wi-Fi. Digitalize o QR Wi-Fi de uma página de configuração do router, um cartão de boas-vindas de hotel ou uma foto de anúncio de alojamento local, e o leitor devolve o SSID, o tipo de segurança e a senha como texto simples que pode copiar para outro dispositivo.
  • Auditoria e acessibilidade. Descodifique QR codes em documentos digitalizados, etiquetas de produtos, crachás de conferência ou capturas de ecrã de publicações em redes sociais para extrair o seu conteúdo para uma folha de cálculo, um registo de conformidade ou software de apoio.

Como é a descodificação de um QR code real?

Considere um QR code Wi-Fi impresso na vitrina de uma cafeteria. Por trás do símbolo, o payload bruto segue o esquema URI WIFI:: WIFI:S:CafeGuest;T:WPA;P:espresso2026;H:false;;. Fotografe o símbolo, solte a imagem na zona de upload acima, e o pipeline entra em ação: o canvas lê os pixels, o jsQR localiza os três padrões localizadores nos cantos, a transformação de perspetiva endireita a grelha, o Reed-Solomon repara qualquer brilho ou dano de compressão, e o segmento de modo byte produz a string URI. O leitor analisa então o prefixo WIFI: e classifica o tipo como Wi-Fi, interpreta o nome da rede como CafeGuest, o tipo de segurança como WPA e a senha como espresso2026. Um botão Copiar coloca a senha na área de transferência para poder colá-la no seletor de rede do sistema operativo. Para um QR URL simples contendo https://tools.ultim8soft.com, o mesmo pipeline devolve o emblema de tipo URL e um botão Abrir que navega para o destino num novo separador. De qualquer forma, a única coisa que aconteceu na rede foi o carregamento da página em si — a descodificação é local.

Este leitor de QR code foi construído para uma função: mostrar exatamente o que um QR code codifica, no seu navegador, sem servidor intermédio. Solte uma imagem, cole do clipboard ou deixe a webcam a funcionar, e o conteúdo descodificado mais o seu tipo aparecem no ecrã em menos de um segundo. Os bytes da imagem não são enviados. Os fotogramas da câmara não são gravados. O payload descodificado não passa pelos registos de mais ninguém no caminho até si. Use-o em conjunto com o Gerador de QR Code quando precisar de confirmação de ida e volta de que o que codificou é o que outra pessoa verá.

A imagem é enviada para um servidor?

Não. A imagem é desenhada num canvas HTML em memória e descodificada inteiramente por JavaScript do lado do cliente a correr no seu separador. Nenhum pixel da sua imagem é enviado para um servidor, registado ou guardado. Pode confirmar isso abrindo as DevTools e observando o painel Network enquanto solta uma imagem: não há XHR, fetch nem beacon de análise ligado ao conteúdo do ficheiro.

Como funciona a digitalização com câmara?

Quando ativa o modo de câmara, o navegador pede permissão para aceder à câmara do dispositivo através da API getUserMedia padrão. Os fotogramas de vídeo são capturados num canvas fora do ecrã com resolução até 640×480 e entregues ao jsQR para descodificação. Cada fotograma é descartado no momento em que o seguinte chega, e o fluxo de câmara é parado na primeira descodificação bem-sucedida. Não são gravados fotogramas, não são transmitidos fotogramas, e o pedido de permissão só aparece quando ativa a opção — não no carregamento da página.

Por que algum conteúdo QR é detetado automaticamente como Wi-Fi ou vCard?

Os payloads QR para credenciais Wi-Fi seguem o formato WIFI:S:ssid;T:tipo;P:senha;;, e os vCards começam com BEGIN:VCARD. Este leitor reconhece esses padrões juntamente com outros prefixos padrão (mailto:, geo:, smsto:, MECARD:, https://) e classifica automaticamente o tipo de conteúdo para que o botão de ação corresponda ao que realmente quer fazer com o payload.

Por que o meu QR code não foi lido?

Causas comuns: a imagem é muito pequena ou tem baixa resolução (~100×100 px é o mínimo, 300×300+ lê de forma fiável), o símbolo tem danos graves ou está parcialmente obstruído por um logótipo sem correção de erros suficiente, a zona de silêncio (a borda em branco em torno dos módulos) está em falta ou foi cortada, ou o contraste entre módulos escuros e claros é baixo. Para o modo de câmara, melhore a iluminação ou aproxime o código da lente — o jsQR precisa de resolver módulos individuais com clareza para localizar os padrões.