About this tool
Scan barcodes and get the data
The Barcode Scanner decodes a barcode or QR code from an uploaded image or a live camera feed by running a three-stage pipeline: the browser's native BarcodeDetector first, then jsQR for QR codes with both polarities attempted, then Quagga for the 1D retail and logistics symbologies. It reports the decoded value together with the detected format — EAN-13, UPC-A, Code 128, Data Matrix, PDF417 and more — and keeps a local history of recent scans. It is for anyone who needs the number behind a barcode without installing a scanner app.
Open Barcode Scanner on AltFTool — it loads instantly in your browser.
Choose Upload or Camera at the top of the page. In Upload mode, drag and drop an image onto the drop zone or click Choose Image — it supports PNG, JPG, JPEG and WEBP.
In Camera mode, click Start Camera and point your camera at a barcode or QR code; a Scanning… badge shows over the live view, detection stops the camera on its own, and Stop Camera ends it early.
The Scan Result panel shows the Barcode Type, the Decoded Value and Additional Info (Format, Dimensions, Scan Time, File Name, File Size, Scan Source). Use Copy, Download TXT for decoded-barcode.txt or Export JSON for decoded-barcode.json, and find past codes under Recent Scans.
If the native BarcodeDetector is missing or returns nothing, jsQR runs with attemptBoth inversion for inverted QR codes, and Quagga then attempts EAN, EAN-8, UPC, UPC-E, Code 128, Code 39, Codabar and ITF.
Camera frames use the fast native-plus-jsQR path so the loop stays smooth, while still images get the full pipeline including the slower 1D readers.
Copy the value, download it as a .txt, or export a JSON record with the format, image dimensions, source and an ISO timestamp.
QR Code plus EAN-13, EAN-8, UPC-A, UPC-E, Code 128, Code 39 and Codabar and ITF through the JavaScript readers, and additionally Code 93, Data Matrix, Aztec and PDF417 wherever your browser's native BarcodeDetector supports them.
Yes. Upload mode decodes any image file — a photo, a screenshot, or an exported label — and the image is drawn to a canvas capped at 1600 pixels on its longest edge before decoding.
No. Decoding runs entirely in your browser — the uploaded image or live camera frames are never sent anywhere. Recent scans with their small thumbnails are stored in local storage on this device only.
Usually blur, glare, or too little of the code in frame. Fill more of the picture with the barcode, keep it flat and in focus, and avoid reflections — the decoders need clean bar edges, and heavily damaged 1D codes often fail where a QR code would still recover.