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.
Ferramentas relacionadas
Decodificador de Código de Barras
Decodificador de código de barras online gratuito. Carregue imagens, arraste e solte, ou cole para escanear e decodificar códigos de barras. Suporta CODE128, EAN13, EAN8, UPC, CODE39. Tudo no navegador.
Conversor Unicode
Codificador e decodificador Unicode online gratuito suportando múltiplos formatos: \uXXXX, &#xXXXX;, etc. Gerencie texto internacionalizado facilmente, resolva problemas de codificação.
Conversor de Excel para JSON
Conversor online de Excel para JSON. Suporta formatos .xlsx e .xls com seleção múltipla de planilhas. Converta dados de planilha para formato JSON localmente.
Codificador/Decodificador Base64
Codificador e decodificador Base64 online gratuito suportando texto UTF-8, caracteres chineses e imagens. Codificação/decodificação em tempo real, sem instalação necessária, processamento local focado em privacidade.
Conversor de XML para JSON
Conversor online gratuito de XML para JSON com indentação personalizável. Converta dados XML em JSON bem formatado instantaneamente no navegador.
Conversor de JSON para XML
Conversor gratuito de JSON para XML online com elemento raiz personalizável e recuo. Converta dados JSON em XML formatado instantaneamente no seu navegador.
