Decodificador QR
Escaneie e decodifique imagens de código QR online. Suporta arrastar e solar, colar da área de transferência. Todo processamento ocorre no navegador.
Arraste e solte uma imagem de código QR aqui
Suporta PNG, JPG, GIF, BMP, WebP e outros formatos de imagem comuns
Você também pode colar uma imagem da área de transferência com Ctrl+V
O que é decodificação de código QR?
O decodificador de QR Code lê uma imagem com QR e extrai os dados armazenados nela. O resultado pode ser uma URL, texto simples, configuração de Wi-Fi, cartão de contato, referência de pagamento ou outra string codificada. Ele é útil para inspecionar um QR antes de abrir, recuperar texto de uma captura de tela, copiar dados de um documento ou ajudar a entender por que um código não é lido corretamente no celular. Um conteúdo decodificado não é automaticamente seguro: links devem ser conferidos antes de visitar, pois podem apontar para phishing, recursos expirados ou redirecionamentos inesperados. A imagem é processada localmente.
Como Usar
Como usar
- Clique na área de upload para selecionar uma imagem de código QR, ou arraste e solte uma imagem
- Você também pode colar uma imagem da área de transferência usando Ctrl+V (Cmd+V no Mac)
- A ferramenta detectará e decodificará automaticamente o conteúdo do código QR
- O resultado decodificado aparece abaixo com detecção automática do tipo de conteúdo (URL ou texto)
- Clique no botão 'Copiar Resultado' para copiar o conteúdo decodificado para a área de transferência
Dicas de Decodificação
- Use uma imagem nítida com o código QR completo visível e espaço em branco suficiente ao redor para detecção confiável.
- Trate os links decodificados com cautela. Visualize o texto e verifique o domínio antes de abrir URLs de códigos QR desconhecidos.
Casos de uso
Princípio técnico
A decodificação de código QR é um pipeline de processamento de imagens em múltiplas etapas que localiza o código em uma fotografia ou captura de tela, corrige a distorção de perspectiva, aplica limiarização para preto e branco, lê a grade de módulos, aplica correção de erros e decodifica os dados de acordo com o modo de codificação. Esta ferramenta usa a biblioteca jsQR, que implementa o pipeline completo em JavaScript executado na thread principal do navegador. A primeira etapa é localizar os três padrões de localização — os marcadores distintos 7x7 quadrado-dentro-de-quadrado-dentro-de-quadrado nos cantos superior esquerdo, superior direito e inferior esquerdo de todo código QR. O jsQR escaneia a imagem em busca de sequências de pixels pretos e brancos alternados que correspondam à proporção 1:1:3:1:1 característica de uma seção transversal de padrão de localização, independentemente da rotação. Uma vez que três padrões de localização são encontrados, seus centroides definem o quadrilátero delimitador do código. A correção de perspectiva transforma o quadrilátero em uma grade quadrada usando uma matriz de homografia calculada a partir dos quatro pontos de canto. Isso é essencial porque códigos QR raramente são fotografados de frente — a correção desdistorce o código para que cada módulo (o quadrado preto ou branco representando um bit) caia em uma grade regular. O tamanho do módulo é determinado pelas dimensões do padrão de localização e pelo número da versão, que é lido das faixas de informação de formato adjacentes aos padrões de localização. A binarização da imagem converte os valores de pixels em tons de cinza para preto e branco puro. O jsQR usa uma abordagem de limiarização local: em vez de um único limiar global (que falha sob iluminação irregular ou sombras), ele calcula limiares para pequenas regiões da imagem, tornando-o robusto a gradientes e vinheta comuns em fotos de smartphone. A correção de erros usa códigos Reed-Solomon conforme especificado na ISO/IEC 18004:2015. Códigos QR suportam quatro níveis de correção de erros: L (~7% de recuperação), M (~15%), Q (~25%) e H (~30%). Os code words de dados e os code words de correção de erros são entrelaçados em blocos; o jsQR realiza o cálculo de síndrome e aplica o algoritmo Berlekamp-Massey para localizar e corrigir erros dentro da capacidade nominal do código. Se o dano exceder o nível de correção, a decodificação falha em vez de retornar dados corrompidos. Por fim, o fluxo de bits decodificado é interpretado de acordo com o indicador de modo de codificação nos primeiros quatro bits: numérico (0001, 10 bits por 3 dígitos), alfanumérico (0010, 11 bits por 2 caracteres), byte (0100, 8 bits por caractere, tipicamente UTF-8 ou Latin-1), kanji (1000, 13 bits por caractere usando Shift JIS) ou ECI (0111, Extended Channel Interpretation para especificação de conjunto de caracteres). A ferramenta exibe a string decodificada e detecta automaticamente se é uma URL (tentando a análise via new URL()) ou texto simples.
- Detecção de padrão de localização: o jsQR escaneia linhas em busca de sequências de pixels pretos/brancos alternados que correspondam à proporção 1:1:3:1:1 — três desses padrões em ângulos aproximadamente retos entre si confirmam a presença e orientação de um código QR independentemente da rotação.
- Correção de perspectiva: uma matriz de homografia calculada a partir dos quatro pontos de canto detectados mapeia o quadrilátero inclinado em uma grade quadrada — esta etapa é essencial porque fotos do mundo real raramente capturam códigos QR de frente.
- Binarização adaptativa: a limiarização local divide a imagem em pequenas regiões e calcula limiares por região, tornando o decodificador robusto a iluminação irregular, sombras e gradientes que derrotariam um limiar global.
- Correção de erros Reed-Solomon (ISO/IEC 18004): quatro níveis (L/M/Q/H) proporcionam 7-30% de recuperação de dados — o algoritmo Berlekamp-Massey localiza posições de erro e o algoritmo Forney calcula magnitudes de correção; se o dano exceder o nível, a decodificação falha de forma limpa.
- Detecção do modo de codificação: os primeiros quatro bits de dados indicam o modo — numérico (0001, eficiente para dígitos), alfanumérico (0010, para A-Z 0-9 e símbolos), byte (0100, para dados UTF-8/Latin-1 arbitrários), kanji (1000, para Shift JIS) e ECI (0111, para especificação de conjunto de caracteres).
- Versão e grade de módulos: versões de código QR variam de 1 (21x21 módulos) a 40 (177x177), com cada versão adicionando 4 módulos por lado — a versão é lida das faixas de informação de formato próximas aos padrões de localização, e a contagem de módulos determina a densidade da grade de amostragem.
- Execução local no navegador: a imagem é desenhada em um elemento Canvas oculto, getImageData() extrai o buffer bruto de pixels RGBA, e o jsQR o processa inteiramente na thread principal do navegador — nenhuma imagem é enviada a qualquer servidor, e o canvas é coletado pelo garbage collector após a conclusão da decodificação.
Exemplos
QR code de URL
Conteúdo lido: https://example.com
Tipo: URL
Ação: o leitor abre o link no navegador do sistema após confirmaçãoQR code de texto puro
Conteúdo lido: Este é um conteúdo de texto
Tipo: Texto
Ação: o leitor copia o texto para a área de transferência ou o exibe em uma tela de resultadoQR code com credenciais de WiFi
Conteúdo lido: WIFI:T:WPA;S:NetworkName;P:Password;;
Tipo: WiFi (WPA2)
Ação: celulares que reconhecem o formato perguntam 'Conectar a NetworkName?' e entram na rede com a senha fornecidaCartão de contato vCard
Conteúdo lido: BEGIN:VCARD\nVERSION:3.0\nFN:Jane Doe\nTEL:+1-555-0142\nEMAIL:jane@example.com\nEND:VCARD
Tipo: Cartão de contato
Ação: celulares oferecem criar uma nova entrada na agenda a partir dos campos lidosPerguntas frequentes
A imagem é enviada para a decodificação?
Não. A decodificação roda no seu navegador via WebAssembly ou JS puro. Os bytes da imagem são lidos localmente; nada é enviado a um servidor.
Quais métodos de entrada são suportados?
Envie um arquivo, cole uma imagem da área de transferência ou arraste e solte um arquivo de imagem. A imagem é processada no seu navegador e nunca é enviada a um servidor.
O que o decodificador retorna?
O texto decodificado bruto. A página detecta se o resultado é uma URL ou texto puro e mostra um selo correspondente. Se for uma URL, um botão Abrir URL é disponibilizado.
Por que meu QR não decodifica?
Causas comuns: borrão, baixo contraste, brilho/reflexo, inclinação de perspectiva ou o código está parcialmente coberto. Aproxime o corte, aumente o brilho, segure o celular firme a 90° em relação à superfície. QR codes com nível de erro L tolera quase nenhum dano; o nível H tolera oclusão significativa.
Ele consegue decodificar QR de capturas de tela e PDFs?
Capturas de tela costumam decodificar bem porque têm contraste perfeito e zero distorção de perspectiva. Para PDFs, faça uma captura de tela da seção do QR primeiro e depois envie a imagem.
Devo abrir toda URL que o QR contém?
Não. QR codes são um vetor conhecido de phishing ('quishing') porque a URL fica escondida dentro do visual. Inspecione a URL decodificada antes de abrir - a página mostra a URL completa para você ler o domínio. Cuidado com domínios com erros de digitação, endereços IP e URLs encurtadas que escondem o destino real.
Ele decodifica vários QRs em uma imagem só?
A página detecta um QR code por imagem. Se você tem uma imagem com vários códigos, recorte cada um separadamente e envie individualmente para resultados mais confiáveis.