I used to carry a dedicated Motorola handheld scanner on my belt for 12-hour shifts. It cost $800 and could scan a barcode from 30 feet away. Now I use my phone. Phone cameras have gotten good enough that for 90% of barcode scanning tasks — checking a product label, verifying a shipment, testing a printed barcode — a phone is faster than digging out a dedicated scanner. Here's what I've learned about which scanning methods actually work.
On iPhone: open the Camera app, point at a barcode, and a link appears at the top of the screen. On Android: Google Lens is built into the camera or accessible from the Google app. Both recognize EAN-13, UPC-A, Code 128, and QR codes without any additional setup.
I scan barcodes this way about 50 times a week. It works reliably for standard retail barcodes in good lighting. The catch: neither the iPhone Camera app nor Google Lens will scan more than one barcode at a time, neither works well in low light without the flash, and neither integrates with inventory software. For occasional scanning, these are all you need.
What I prefer about the built-in approach: no permissions to manage, no ads, no "premium upgrade" popups, and the results don't get sent to some third party's analytics server. The privacy aspect matters — I'm scanning product barcodes tied to my GS1 prefix, not browsing a supermarket aisle.
I tested five free barcode scanner apps on Google Play. Three of them showed full-screen video ads every third scan. Two required camera access AND location access for "scan history." One sent scan data to a server I couldn't identify. The scanning was fine — most used ZXing, the open-source library that's been the standard for a decade — but the business model was surveillance advertising.
If you need a dedicated app, look for one that works offline (airplane mode test: turn off data, scan something, if it still works, the scanning is local). My recommendation: Barcode Scanner by ZXing Team (the original, open-source, no-ads version) or Barcode to Sheet (if you need scan-to-spreadsheet for inventory counts).
The Barcode Detection API built into modern browsers — the same one powering GenBarcode's free scanner — is increasingly the best option for quick scans. It processes everything on-device using Chrome's native barcode engine, no app install required. The trade-off: it doesn't work in Firefox or Safari yet, only Chrome and Edge.
Phones fail at: scanning reflective surfaces (glossy labels), scanning in direct sunlight, scanning barcodes smaller than about 8mm wide, and scanning at conveyor-belt speed (more than about 1 scan per second sustained). If you're scanning hundreds of barcodes a day — warehouse receiving, retail checkout, production line QA — get a dedicated scanner. A used Symbol/Motorola LS2208 on eBay costs $30 and will out-scan any phone.
I learned this the expensive way: during a warehouse inventory count, I tried using my phone instead of a handheld scanner. After 200 scans, the battery was at 40% and my arm was tired from holding the phone at scanning angle. The $30 handheld scanner? 8,000 scans on a single charge and weighs less than my phone.
Whatever method you use, test it with the actual barcodes you'll encounter. Print a sample label, scan it in the lighting conditions of your warehouse/store/garage, and verify the decoded number matches the printed number. If you're printing barcodes from GenBarcode, scan every barcode on the test sheet before committing to a production run. I've found scanning failures that looked fine to the naked eye — a single missing bar, a smudge across the quiet zone, a label applied over a seam that warped the bars.