Scan a QR code from an uploaded image, or point your webcam at one for a live read
QR codes encode text — usually a URL, but sometimes contact details, Wi-Fi credentials, or plain text — as a pattern of black and white squares. This tool reads that pattern back into text using jsQR, a pure-JavaScript decoder, either from an image you upload or from a live webcam feed. Everything runs locally: the image or video frame is drawn to a hidden canvas and analyzed pixel-by-pixel in your browser, so nothing is uploaded anywhere.
How to use it:
Tip: for webcam scanning, make sure the QR code fills a good portion of the frame and is well-lit and in focus — blurry or tiny codes are the most common reason a scan fails.
This happens if your device has no camera, if you denied camera permission when your browser asked, or if the page isn't loaded over HTTPS (or localhost) — browsers block camera access on insecure origins. Check your browser's site permissions and reload if needed.
The most common causes are the code being too small, blurry, cropped, or heavily skewed in the photo. Try a higher-resolution image or crop it so the QR code fills more of the frame.
No — video frames are read directly into a canvas in your browser for analysis and are never recorded, saved, or transmitted. The camera stream stops automatically as soon as a code is found or you click "Stop webcam."
QR codes include built-in error correction, so mild damage or obstruction (like a logo in the middle) usually still decodes fine. Heavily damaged, low-contrast, or very low-resolution codes may fail to scan.