Read QR codes from images.

Upload a QR image and decode it locally in the browser. No uploaded file is sent to a server.

Images are decoded locally. Links are shown as text and never opened automatically.
Decoded textWaiting
-decoded type
Choose an image to begin.

How it works

The image is drawn to a local canvas and QR pixels are passed to a browser-side decoder.

Image data is read with FileReader and decoded in the browser.

Practical examples

  • Choose a phone screenshot to extract a URL as text before deciding whether to visit it.
  • Scan a saved Wi-Fi QR image and copy the decoded payload for review.
  • Use the canvas preview to verify that the selected file contains the entire code rather than a cropped corner.

How to read the result

  • Decoded type classifies common URL, email, phone, and Wi-Fi payloads; everything else is labeled as text.
  • A Not found result means the decoder could not locate a QR matrix in the rendered image.
  • Links are returned as text and are never opened automatically.

Limits and privacy notes

  • Blur, glare, heavy compression, cropping, or low contrast can prevent decoding.
  • The reader scans one still image and does not access the camera.
  • The selected image is decoded in the page and is not uploaded.

Method used

  • FileReader loads the selected image and the page draws it onto a canvas, scaling very large images down to at most 900 pixels per side.
  • The decoder receives the canvas RGBA pixel buffer and searches it for a QR code.
  • Only decoded text and a simple payload classification are shown; the page does not follow URLs or execute payload content.
Safety

Read before opening

  • Decoded links are not opened automatically.
  • Copy and inspect the destination first.
  • Type classification is a quick hint, not a security verdict.
Image quality

Improve scans

  • Use a sharp, uncropped image.
  • Avoid low contrast.
  • Canvas preview confirms the selected file.
Privacy

Local image handling

  • The image is drawn in the browser.
  • No upload is needed for decoding.
  • Clear the file input before scanning another image.
Copied