About the QR Code Scanner
This reads a QR code and shows you what's inside it — using your device camera in real time, or by uploading a photo or screenshot of a code. It's handy on a desktop or laptop that has no built-in QR scanning, for decoding a QR code you've been sent as an image, or for safely checking where a code leads before you act on it. If the content is a link, it offers to open it; otherwise you can copy the decoded text.
How it works
In camera mode, it asks for camera permission and scans the video feed frame by frame with the jsQR library, decoding the moment a QR code comes into view. In upload mode, you drop in or choose an image and it decodes the code from the picture. Either way the detection happens entirely in your browser — no frame or file is uploaded. When a code is found, the decoded text is shown; if it's a web address, an "open" button appears.
Assumptions and behaviour
- Camera mode uses the rear/environment camera where available, which is what you'll point at a code.
- Detection runs locally: camera frames and uploaded images are processed on your device and never sent anywhere.
- Decoded links are detected (http/https) so you can open them, but you stay in control — it doesn't auto-navigate.
- Uploaded images can be a photo, screenshot or saved QR image.
Limitations
- It reads QR codes only — not 1D barcodes (like EAN/UPC) or other 2D symbologies (Data Matrix, Aztec, PDF417). Use the Barcode Generator's counterpart tools for those.
- Camera scanning needs permission and reasonable conditions — good lighting, focus, and a code that isn't too small, skewed or damaged. A blurry or low-contrast code may not decode.
- It finds one code at a time; it won't decode multiple codes in a single image simultaneously.
- Opening a scanned link carries the usual caution — check the URL before trusting it, since QR codes can point anywhere.
Privacy
Scanning is done entirely in your browser with jsQR. Camera frames and uploaded images are processed on your device and are never uploaded or stored.

