QR Code Scanner
Scan any QR code with your camera or from an image — decoded entirely on your device.
Camera is off
Drag & drop a QR image here
Supports PNG, JPG and WebP — nothing is uploaded anywhere.
100% on-device scanning. Your camera feed and images never leave your browser.
About the Toolers QR Code Scanner
Not every device has a camera app that decodes codes cleanly, and desktop machines rarely do it at all. The Toolers QR Code Scanner fills that gap with a browser-based reader that works two ways: point your webcam or phone camera at a code for a live scan, or drop in a screenshot, photo or saved image and have it decoded instantly. Both paths run entirely on your own device.
That local-only decoding matters more than it sounds. Codes on invoices, boarding passes, authentication setup screens and internal signage frequently contain identifiers you would rather not hand to a third-party website. Because the pixel analysis happens in your browser, the image never leaves the machine and no copy is retained after you close the tab.
Live camera scanning and file scanning
The live mode requests camera permission, streams frames into a canvas and analyses each frame until a code is found. A front and back camera switch is provided for phones and tablets. If lighting is poor or the code is behind glass, take a still photo instead and use the upload path, which can work with a much sharper single frame than a live video stream typically provides.
Reading the result safely
Decoded content appears in a result panel with a copy button and, when the payload is a web address, a link you can open deliberately rather than automatically. Treat unexpected codes with the same caution you would apply to an unexpected email link: read the domain before you open it. Codes found on stickers in public places are a known vector for phishing, and seeing the raw destination first is the entire defence.
Frequently asked questions
Live scanning needs video frames to analyse. The permission is handled by your browser, the stream is used only inside the page, and nothing is recorded or transmitted. Decline it and the upload path still works.