Skip to content
AZ Tools

QR Code Decoder

Drop a screenshot or photo of a QR code and read what's inside — entirely in your browser, no upload.

How to use

  1. Drop an image with a QR code, or click to choose one.
  2. Wait a moment for decoding.
  3. Copy the decoded contents with the button on the right.

About this tool

Show

Read a QR code from an image instead of pointing a camera at it — useful when the code arrives as a screenshot, sits in a PDF you exported to PNG, or is printed on a poster you photographed. Drop the file and the payload comes back as text you can read before deciding whether to act on it, which is the safe way to handle a code stuck on a parking meter or mailed to you: a QR is only a string, and seeing the URL first is the whole defence. The decoder runs on the raw pixels in the page and is fetched only when you decode something, so it never slows the first load. It reads QR codes specifically, not Data Matrix, PDF417 or one-dimensional barcodes, and a blurry or steeply angled photo may need a tighter crop.

Frequently asked questions

Is the image uploaded?

No. Decoding happens locally — Canvas reads the pixels and jsQR analyses them in your browser. The image and decoded data never leave the page.

What if the decoder can't find a QR code?

Make sure the QR fills a reasonable portion of the image, is in focus, and has good contrast. Heavily blurred or tilted codes may need a clearer source.

Can it decode QR codes inside other content (memes, screenshots)?

Often yes — jsQR scans the whole image. If multiple codes are present it returns the first one it finds.

Does it support special QR types like Wi-Fi or vCard?

The decoded text is returned as-is. For Wi-Fi or vCard codes you'll see the raw payload (e.g. WIFI:T:WPA;S:Name;P:secret;;) which you can paste into another tool to act on.

Will it read a white-on-black or inverted QR code?

Yes. The decoder attempts both polarities on every image, so a code printed light-on-dark, one lifted from a dark-mode screenshot, or a photo of a backlit display all work without you flipping anything first. That is not universal — plenty of phone camera apps only try the normal polarity and give up on inverted codes — so if a code scans here but not on your handset, inversion is a likely reason rather than damage to the code.

A photo from my phone fails but a crop of it works — why?

Because the image is scanned at its native resolution and nothing is downscaled first. A twelve-megapixel photo means twelve million pixels to binarise and search, which is slow, and the code itself may occupy only a small patch of that frame, giving the locator a lot of noise to reject. Crop tightly to the code and shrink the long edge to somewhere around 600-1000 px before uploading. What no amount of cropping fixes is a code on a curved surface, a strong perspective angle, or the moiré of a screen photographed at a bad distance.

Guides on this topic

Related tools