Home › Tools › QR Code Scanner
QR Code Scanner
Point your camera at a QR code, or upload an image containing one, and read what is inside it. The scanner recognises links, WiFi credentials, contact cards, email addresses and more, and offers the right action for each. Everything happens in your browser, so nothing you scan is sent anywhere.
Quick Answer
A QR code scanner reads the black and white pattern of a QR code and converts it back into the text stored inside, which is usually a web link but can also be WiFi credentials, a contact card, or an email address. This scanner works two ways: a live camera feed that decodes automatically, or an image you upload. Both run entirely in your browser, so no photo or video frame is ever sent to a server.
Press Start Camera below to begin scanning.
This session's scans
Nothing scanned yet. Results will appear here as you scan.
Advertisement
Frequently Asked Questions
Is this QR scanner safe and private?
Yes. Both the camera feed and any image you upload are processed entirely inside your browser using JavaScript. No video frame, no photo, and no decoded result is ever transmitted to a server, because there is no server involved in the scanning at all. You can prove it by loading this page, disconnecting from the internet, and scanning anyway. It still works. The scan history is held in memory only and disappears the moment you close the tab.
Why is my camera not working?
The three usual causes are permission, security context, and another app holding the camera. Browsers only allow camera access on pages served over HTTPS, so an insecure page will fail before it asks. If you denied permission earlier, the browser remembers that and will not prompt again, so you need to clear it from the padlock or site settings menu in the address bar. Also close any other tab or app using the camera, since most systems only allow one at a time. Upload mode always works regardless.
Can I scan a QR code from a photo instead of the live camera?
Yes, and it is often more reliable. Switch to Upload mode and drag in a screenshot, a photo, or any image file containing a QR code. This is the better option when the code is on the same screen you are using, when the code is printed small, or when lighting makes the live camera struggle. It also works on desktop machines with no camera at all.
What types of QR codes are supported?
Any standard QR code, since the underlying format is the same regardless of what it contains. This tool additionally recognises the common payload conventions and offers a matching action: web links, WiFi network credentials, vCard and MeCard contact records, mailto email addresses, telephone numbers, SMS messages, and geographic coordinates. Anything that does not match a known convention is shown as plain text with a copy button.
Does this work on mobile?
Yes, and mobile is where camera mode works best because phone cameras autofocus at close range. The scanner requests the rear-facing camera by default, which is the one you want for scanning something in front of you. On iPhone, camera access inside a browser requires Safari or a browser using the Safari engine, and the page must be served over HTTPS. If the camera is unavailable for any reason, upload mode works on every device.
How the decoding works
A QR code stores data in a grid of light and dark squares called modules, with three large position markers in the corners that let a decoder work out the orientation even when the code is rotated or photographed at an angle. The decoder finds those markers, corrects the perspective, reads the grid back into bits, and applies Reed-Solomon error correction to repair any modules that were misread. That error correction is why a QR code still scans with a logo covering part of it or a coffee ring across one corner.
This page decodes using jsQR, a pure JavaScript decoder, and will use the browser's native BarcodeDetector API instead for the live camera feed where that API is available, since it is faster and does not need to run in JavaScript on every frame. The format itself is defined by ISO/IEC 18004 and was invented by Denso Wave.