What This Barcode Scanner Does
Upload or drag in a photo of a barcode or QR code and the tool reads it instantly, right there in the page — no app store, no account, no install. It works for a UPC on a cereal box, an EAN on a bottle, a shipping label's Code 128, or a QR code on a business card or flyer. Point your phone or a screenshot at it, drop the image in, and you get the decoded value back in seconds: a product number, a URL, a serial code, whatever the barcode was encoding. It's built for the one-off moment when you just need to know what a barcode says and don't want to dig through an app store, grant a camera app permissions, or sign up for anything to do it.
How to Scan a Barcode Online
Go to the Barcode Scanner tool, then drag in a photo or click to choose one from your device — a fresh photo, an existing image, or a screenshot all work. The scan runs the moment the image loads, and the decoded text appears below it along with the format detected (EAN-13, QR Code, Code 128, and so on). From there you can copy the result or, if it's a QR code encoding a URL, open it directly. There's no crop step and no manual alignment required — get the barcode reasonably in frame, in focus, and well-lit, and the decoder handles the rest. If nothing turns up, retake the photo closer or straighter and try again.
Barcode and QR Formats It Reads
The scanner covers the formats you'll actually run into on real-world packaging and documents: QR Code, Data Matrix, Aztec, PDF417, and MaxiCode among 2D formats, plus the common linear barcodes — EAN-13, EAN-8, UPC-A, UPC-E, Code 39, Code 93, Code 128, ITF, Codabar, RSS-14, and RSS Expanded. That range covers most retail products (UPC/EAN), shipping and inventory labels (Code 128, ITF), boarding passes and event tickets (PDF417, Aztec), and the QR codes on marketing materials, restaurant menus, and business cards. If a format isn't decoding, it's worth checking it's actually one of these before assuming the photo is the problem.
Runs Entirely in Your Browser
The decoding happens with ZXing — the open-source barcode-scanning library used across the industry, running here as its JavaScript port entirely client-side in your browser. Your photo never gets uploaded to a server: the decoding happens locally on your device using WebAssembly/JS, and the image never leaves your machine. That's the same privacy model every tool on this site follows. Practically, it also means the scan is fast — there's no upload wait, no server round-trip, and nothing sitting on a server afterward to worry about deleting. Close the tab and the photo is gone.
One Barcode Per Photo, for Now
This is a v1 tool, and it's built to find and decode one barcode per photo. If your image has several barcodes or QR codes in it — a sheet of shipping labels, a product with both a UPC and a QR code — only the first one it finds gets returned. That's a deliberate scope decision, not an oversight: the JavaScript port of ZXing (unlike its original Java version) doesn't ship a working multi-barcode-detector implementation, only an interface with nothing behind it, so reliable multi-barcode detection wasn't something we could ship honestly in v1. For now, photograph or crop to one barcode at a time. And if nothing decodes at all — a blurry shot, a bad angle, a blank frame — that's treated as a normal outcome, not an error: you'll just see a plain "no barcode found, try a clearer photo" message.
When You'd Reach for This
Typical situations: you've got a photo of a product's UPC and want to check the code without typing it in manually, a shipping label with a Code 128 or ITF barcode you need to read off a screenshot, or a QR code on a flyer, poster, or business card that you photographed instead of scanning live. It's also useful for confirming a barcode actually encodes what you expect before printing it, or pulling a URL out of a QR code image someone sent you instead of a live camera scan. Anywhere you have the barcode as an image rather than the physical object in front of your phone camera, this tool covers it.