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
- Drop an image with a QR code, or click to choose one.
- Wait a moment for decoding.
- Copy the decoded contents with the button on the right.
About this tool
ShowHide
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
Image to Text (OCR) — Extract Text from Images
Copy the text out of a screenshot, photo or scanned page. OCR runs in your browser in 12 languages; the image is never uploaded.
Image
QR Code Generator
Create custom QR codes from any text or URL and download them.
Image
WiFi QR Code Generator
Generate a scannable QR code that joins a WiFi network — print it for guests, no app needed.
Image
Image Sharpen (Unsharp Mask)
Sharpen any photo or screenshot with the unsharp-mask algorithm — amount, radius and threshold sliders, four presets and a live before/after view.
Image
Image Pixelate
Drop an image and pixelate it to any block size — block-perfect output you can use to censor a screenshot or build retro art.
Image
Image Text Watermark
Drop an image, stamp a text watermark — choose corner, size, opacity, rotation, colour, drop-shadow, or full-image tiling.
Image