Scanning
Batch scanning many QR codes
Three workflows scale past a handful of scans: a hardware 2D imager in keyboard-wedge mode typing each result into a spreadsheet row, a phone scanner app with a batch mode, or posting images to a decode API in a loop. Whichever you pick, deduplicate results and timestamp every scan.
Pick the workflow that matches the volume
The phone-camera flow — scan, banner, tap — is built for one code at a time. Past a dozen scans it collapses under its own taps. Three workflows replace it, in ascending order of setup effort:
1. Keyboard-wedge imager into a spreadsheet
A hardware 2D imager in USB-HID mode enumerates as a keyboard and types each decoded payload, with a configurable Enter suffix. Setup is: open a spreadsheet, click a cell, scan. Each pull of the trigger fills a row and drops to the next — hundreds of scans an hour with zero software written. This is the default answer for goods-in, asset audits and inventory management. Configure the Enter suffix (and the keyboard layout, which silently garbles symbols when mismatched) via the scanner's configuration barcodes.
2. Phone app with batch mode
Dedicated scanner apps offer a continuous mode that appends each detected code to a list without stopping, then exports CSV. Slower and less rugged than an imager but zero extra hardware — fine for occasional stocktakes and event check-ins in the low hundreds. This is one of the few workflows that justifies installing a scanner app at all, per do you need a scanner app.
3. A decode API in a loop
When the codes arrive as images — photos of received pallets, scanned paperwork, screenshots — post them to a decode endpoint instead of re-photographing them:
for f in scans/*.jpg; do
curl -s -F "file=@$f" https://useqr.app/api/v1/decode >> decoded.jsonl
done
Each response is JSON: {"count": n, "codes": [{"text": "...", "format": "QRCode"}]}.
The endpoint reads up to 8 codes per image (10 MB limit per image), so one photo
of several labels yields several results — useful in combination with the layout
advice in scanning multiple codes in one frame.
Wiring this into real pipelines is covered in
decoding QR codes programmatically.
Dedup and timestamps: the unglamorous 80%
Every batch workflow produces the same two data-quality problems.
Duplicates. The same label gets scanned twice — a re-picked item, a nervous
double-trigger. Decide before the count what a duplicate means: in inventory it is
noise (dedupe on payload, keep the first), at event check-in it is signal (a second
scan of one ticket is exactly what you want to catch). Deduping in a spreadsheet is a
COUNTIF on the payload column.
Timestamps. A wedge scanner types only the payload — no time, no station. And the
classic spreadsheet trap: NOW() recalculates on every edit, so pasting it beside
each scan silently rewrites history. Use a sheet script that stamps the row on edit,
an app that exports its own timestamps, or the API loop above (add date -Iseconds
per line). Record payload, ISO 8601 timestamp, station/operator — the minimum
that makes a count auditable.
Design the codes for batch scanning
Batch throughput is set when the codes are made, not scanned. Short payloads — an ID, not a 200-character URL — produce low-version codes that decode faster and tolerate wear, per scan latency. Generate them consistently with the bulk generator or the workflow in making QR codes in bulk, and print label runs with the sticker sheet tool.
FAQ
How do I scan many QR codes into a spreadsheet?
Use a 2D imager in keyboard-wedge mode. It enumerates as a USB keyboard and types each decoded payload followed by Enter, so with the cursor in a cell each trigger pull fills a row. No software or integration is needed.
Can a phone batch-scan QR codes?
Yes — dedicated scanner apps offer a continuous batch mode that appends every detected code to a list and exports CSV. It is slower than a hardware imager but needs no extra equipment, which suits occasional stocktakes and small events.
How do I decode a folder of QR code images?
Loop them through a decode API: post each image and collect the JSON responses. A single request can return multiple codes from one image, so photos containing several labels decode in one pass.
How should I handle duplicate scans?
Decide what a duplicate means first. For inventory, deduplicate on the payload and keep the earliest timestamp. For ticketing, a repeated payload is the fraud signal you are looking for, so log every occurrence with its own timestamp and station.
Try it — free, no signup
Related
- Hardware barcode scanners and QR codes — When a dedicated 2D imager beats a phone — decode latency, motion tolerance, keyboard-wedge output — and the scans-per-day threshold where buying one pays.
- Scanning multiple QR codes in one frame — Phone cameras decode one code per frame and pick unpredictably between neighbours. How to lay out adjacent codes, and the APIs that return all of them.
- QR codes for inventory management — QR vs barcode for bins and stock, phone-scannable workflows, printing bin labels at scale, and running a stocktake on codes alone.
- How to generate QR codes in bulk from a spreadsheet — Export a CSV with one row per code, upload it, and download a ZIP of images, a grid PDF, or Avery-format label sheets. Verify every code decodes before…