toolready. QR Code Scanner

QR Code Scanner

Decode a QR code from a screenshot or image, in your browser.

What this does

Reads the payload out of a QR code in a still image. Pick a screenshot or a photo and the decoded text appears in the box — a URL, a WiFi credential string, a vCard, a payment reference, plain text. Copy it, or use the Open URL button that appears for http:// and https:// payloads. The jsQR library does the decoding inside this tab: the image is drawn to a canvas in memory and its bytes never leave the page.

Does this use my camera?

No, deliberately. There is one file input and no live camera stream, so the page never asks for camera permission and never touches getUserMedia. It therefore works where a live scanner does not: a desktop with no webcam, a work browser where camera access is blocked by policy, or a machine whose camera is already busy. On a phone, the operating system's file picker usually offers "Take Photo" beside your library — that route goes through the camera app, hands the page a finished JPEG, and needs no browser permission.

How do I scan a QR code from a screenshot?

  1. Capture the code — a full-screen screenshot is fine, no cropping needed.
  2. Choose the file with the picker above. Decoding starts immediately.
  3. Read the payload before acting on it; copy it, or open it if it is a link you recognise.
  4. On "No QR code found", crop closer to the code and retry.

For a code on a poster or screen, photograph it head-on and hold still — a motion-blurred shot loses the module edges the decoder needs.

Which images does it accept?

Anything your browser can render — PNG, JPEG, WebP, GIF, AVIF, BMP. Large photos are scaled to a 2000-pixel longest side before analysis: plenty of detail for a QR code, and it stops a 48 megapixel photo stalling the tab. Light-on-dark codes work too, as the decoder tries both polarities.

Why is my QR code not decoding?

  • It is not a QR code. Barcodes (EAN, UPC, Code 128), Data Matrix, Aztec and PDF417 look similar in passing and none decode here.
  • Too small or too soft. Each module needs a couple of pixels; screenshots of a scaled-down code often fall below that.
  • Glare or a curved surface. Moderate rotation and perspective are fine; reflections that wash out modules are not.
  • Over-covered. Error correction tolerates damage, but a logo pasted over a low-redundancy code can push it past recovery.
  • Several codes at once. Only one result is returned; crop to the code you want.

Is it safe to open a link from a QR code?

Treat it like a link in an email from a stranger. QR phishing works because the destination is invisible until you scan, and a sticker over the code on a parking meter costs an attacker nothing. This tool shows the payload as text and never follows it. Read the domain — not the path, the domain — and be wary of shorteners, lookalike spellings, and anything asking for a login or payment. Non-URL payloads (WiFi joins, vCards, payment strings) appear as raw text, so you see what a phone would have acted on silently.

What can I do with the decoded text?

Keep going: URL encode/decode untangles the percent-escapes in a long tracking link, JSON formatter reads a structured payload, and the QR generator makes a new code once you have edited the contents. For a code inside a PDF, render the page with PDF to image first and feed the result in here.