Scanning Tools

Scan QR codes and barcodes with your camera or an uploaded image.

All 3 scanning tools

Nothing is uploaded. The camera is requested only when you press the button, frames are analysed on your device, and the stream is released when you stop or leave the page.
Browser support varies. Which barcode symbologies can be read depends on your browser and device. Each scanner lists what it can detect where you are, and falls back to a bundled QR decoder when native detection is unavailable.

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.

BrowserNative detectionIn practice
Chrome / Edge on AndroidYesQR plus most linear symbologies
Chrome / Edge on desktopPartialVaries by platform; QR always works via the fallback
Safari, iOS and macOSNoQR only, via the bundled decoder
FirefoxNoQR 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 cameraImage upload
Best forA code in front of you, right nowA screenshot, a PDF page, a photo someone sent you
NeedsHTTPS, a camera, and permissionNothing — works on any device, including desktops with no camera
Small or damaged codesStruggles: autofocus hunts, and each frame gets millisecondsBetter: the decoder can spend as long as it needs on one still
Low lightPoor — noise destroys the module edgesUnaffected if the source image is clean
Rotated or skewedHandled; just turn the phoneHandled — QR finder patterns are rotation-invariant
Many codes in one goOne at a timeOne 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.ru cannot 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 schemejavascript:, 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 .vcf download 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.