Scanning Tools
Scan QR codes and barcodes with your camera or an uploaded image.
All 3 scanning tools
QR Code Scanner
Scan a QR code with your camera or an uploaded image.
ScannerBarcode Scanner
Read UPC, EAN, Code 128 and more from camera or image.
ScannerScan History
Review and export scans saved on this device only.
No tools match that search. Browse everything.
Read codes with your camera or from an image, entirely on your device. Camera access is requested only when you press the button, frames are analysed locally, and the stream is fully released when you stop.
A scanned link is never opened automatically: you see the full value and the domain first, dangerous URL schemes are blocked outright, and characteristics worth checking — shorteners, raw IP addresses, lookalike domains — are flagged rather than judged.
What your browser can actually read
Scanning uses the browser's own barcode detection where it exists, and falls back to a bundled QR decoder where it does not. That means capability varies by device, and the page tells you what it found rather than promising a fixed list.
| Browser | Native detection | In practice |
|---|---|---|
| Chrome / Edge on Android | Yes | QR plus most linear symbologies |
| Chrome / Edge on desktop | Partial | Varies by platform; QR always works via the fallback |
| Safari, iOS and macOS | No | QR only, via the bundled decoder |
| Firefox | No | QR only, via the bundled decoder |
If you need to read a UPC or EAN and your browser only offers QR, use the phone's own camera app — on iOS and Android it is built in — or upload a photo here and try the image path, which sometimes succeeds where the live camera does not.
If the camera will not start
- The page must be on HTTPS. Browsers block camera access on insecure origins.
- Permission may be remembered as denied. Reset it in the padlock menu in the address bar — a reload alone will not re-prompt.
- Another app may hold the camera. Close other tabs and video-call apps.
- iOS requires Safari's engine for camera access inside in-app browsers; open the page in Safari itself if a link opened it inside another app.
- No camera, or it will not focus? Upload or paste an image instead — it works everywhere and is often more reliable for a small or damaged code.
Camera or image — which one to reach for
Both routes end in the same result panel. They differ in what they cope with.
| Live camera | Image upload | |
|---|---|---|
| Best for | A code in front of you, right now | A screenshot, a PDF page, a photo someone sent you |
| Needs | HTTPS, a camera, and permission | Nothing — works on any device, including desktops with no camera |
| Small or damaged codes | Struggles: autofocus hunts, and each frame gets milliseconds | Better: the decoder can spend as long as it needs on one still |
| Low light | Poor — noise destroys the module edges | Unaffected if the source image is clean |
| Rotated or skewed | Handled; just turn the phone | Handled — QR finder patterns are rotation-invariant |
| Many codes in one go | One at a time | One at a time; for hundreds, generate rather than scan |
What happens to a code once it is read
Nothing opens by itself. The decoded value is shown in full first, and what happens next depends on what it turns out to be:
- A link is shown with its host spelled out, so
paypal.com.example.rucannot pass for PayPal. Shorteners, raw IP addresses and lookalike domains are flagged as things worth a second look — flagged, not blocked, because a shortener is not proof of anything. - A dangerous scheme —
javascript:,data:,file:,vbscript:— is refused outright and never made clickable. - A Wi-Fi payload is parsed into network, security type and password, and the password is masked until you ask to see it. It is redacted before anything is written to the on-device history.
- A contact card is offered as a
.vcfdownload built in the page. - A product number is check-digit tested, so a mis-read is caught rather than copied into your stock system.
History is optional, stored only in this browser, and clearing it removes it — see scan history.