QR Code Scanner
Scan QR codes and barcodes from photos or using your live camera
Click to upload an image
Supports JPG, PNG, WebP, GIF — any image containing a QR code or barcode
100% Private: All scanning happens in your browser. No images or data are sent to any server. Camera feed is never recorded.
This scanner reads codes two ways: upload a photo that contains one, or point your device's camera at one live. Both paths decode through the browser's own BarcodeDetector API, which recognizes eight formats — QR codes, EAN-13, EAN-8, Code 128, Code 39, Data Matrix, PDF417, and Aztec. Every decoded value is added to a results list with a one-tap copy button, and if the text turns out to be a valid URL, an extra button appears to open it directly in a new tab.
BarcodeDetector is a Chromium-only browser API — Chrome, Edge, and similar browsers support it, but Firefox and Safari don't. The page checks for support as soon as it loads: if it's missing, a warning banner appears and the upload path shows an on-screen message asking you to switch browsers instead of silently failing. Live camera scanning additionally needs a camera permission grant and, naturally, a device with a camera to point.
How it works
1. Choose Upload Photo or Live Camera
The two modes sit as tabs at the top of the tool and switch instantly.
2. Upload mode: pick an image
Click the dashed box to browse any photo containing a code. There's no minimum or maximum file size enforced here — any image your browser can decode is accepted.
3. Camera mode: start scanning
Press Start Camera, allow the permission prompt, and hold the code inside the frame. The tool rescans automatically about twice a second.
4. Copy or open a result
Every decoded value gets a copy button; an extra open-in-new-tab button appears only when that value is a valid URL.
When you'd use it
Reading a code from a photo you already took
Scan a QR code printed on a poster, menu, or piece of packaging by uploading a photo of it rather than needing to revisit it in person.
Reading a product barcode without a dedicated scanner app
Point your camera at an EAN-13 or Code 128 barcode on a product to pull its number.
Decoding a code shown on someone else's screen in a call
Use your laptop's camera to scan a QR code someone is holding up on a video call rather than photographing your own screen.
Pulling the raw text out of a WiFi or contact QR code
Scan a printed WiFi or vCard QR code to read its underlying text quickly, without needing a phone's built-in scanner.
What it can decode, and why some browsers can't run it
The eight supported formats cover QR codes plus the common retail and logistics barcode families: EAN-13, EAN-8, Code 128, Code 39, Data Matrix, PDF417, and Aztec. All eight rely on the browser's own BarcodeDetector implementation rather than any library bundled with the page, which is why support is inconsistent — it currently works in Chromium-based browsers and doesn't exist at all in Firefox or Safari, where the tool detects that and tells you outright instead of just failing quietly.
Upload versus live camera
Upload mode is a single-shot scan of a still image, and unlike most other tools on this site, it has no file-size cap coded in at all — it bypasses the site's usual uploader component entirely. Camera mode instead pulls a frame from the video feed roughly every 500 milliseconds and checks each one, but it won't add the same value to your results twice within a 3-second window, so holding a code steady in front of the camera doesn't flood the list with repeats.
Scanning a UPI payment code
This scanner always shows you the raw text a code contains, nothing more. If that text starts with upi://pay, it's a UPI payment code, and /image/upi-qr-scanner is the tool built specifically for those — it breaks the same code into readable fields (who gets paid, how much is locked into it, and whether anything about it looks like a scam) and can rebuild the code with a different amount or none at all, which this scanner doesn't attempt.
Frequently asked questions
Which code formats can this scanner read?
QR codes, EAN-13, EAN-8, Code 128, Code 39, Data Matrix, PDF417, and Aztec — all through the browser's built-in BarcodeDetector API.
Why does it say my browser isn't supported?
BarcodeDetector is only implemented in Chromium-based browsers like Chrome and Edge. Firefox and Safari don't have it, and the tool shows a banner and blocks uploads with a message rather than failing silently.
Is there a file size limit on the photo I upload?
No. Unlike most tools on this site, upload mode here doesn't run through the usual size-checked uploader, so there's no cap enforced in the code.
Does the camera feed get recorded or sent anywhere?
No. Decoding happens locally through the browser's BarcodeDetector API; no image or camera frame is ever uploaded or stored.
I scanned a UPI QR code — why do I just see raw text?
This scanner only shows a code's raw contents. For a UPI code specifically (text starting with upi://pay), use /image/upi-qr-scanner to see it broken into payee, amount, and safety-check fields.
Why doesn't the same code appear over and over while I hold it in front of the camera?
Live scanning checks the video feed roughly twice a second, but it skips adding a value it already saw within the last 3 seconds, so a steady code doesn't spam the results list.

