Key takeaways
- Full brightness and no auto-dim fix most failures; the app should do both while a code is showing.
- Keep the quiet zones; a barcode drawn edge to edge cannot be found by the scanner.
- Use the right symbology, strip separators, and never scan a recompressed screenshot.
A barcode on a screen fails for a short list of reasons, and none of them are the scanner being old. Work down the list and the third fix usually does it.
Brightness and auto-dim
Scanners read contrast. A phone at forty percent brightness in a bright shop gives them very little, and auto-dim after fifteen seconds gives them nothing, usually at the exact moment the cashier lines up the beam. Turn brightness to maximum before you reach the till and keep the screen awake. A wallet app should do both for you while a code is showing and restore them when you leave.
Quiet zones and the edge of the screen
A barcode needs blank space either side of the bars, the quiet zone, or the scanner cannot find where the symbol starts. The GS1 specification mandates it, and a barcode drawn edge to edge, or pinched wider than the screen, loses it. If the app lets you zoom, zoom out until there is white on both sides. Do not turn the phone sideways unless the barcode is genuinely too small; a bigger symbol with no quiet zone is worse than a smaller one with it.
The wrong symbology
Most gift codes are Code 128 (letters and digits, defined in ISO/IEC 15417) or EAN-13 (thirteen digits with a check digit). An app that draws every code as one type will draw some of them wrong, and a scanner that reads the wrong type returns nothing or, worse, a different number. Dashes and spaces typed into the code by whoever wrote the SMS should be stripped before encoding; they are formatting for people, not payload for the till.
A well-built app refuses to draw a barcode it cannot encode correctly and shows the number instead. That is a feature. A symbol that looks like a barcode and scans as garbage costs more time than an honest error.
Screenshots of screenshots
A barcode forwarded through three messaging apps has been recompressed three times. The bars blur, the narrow gaps close, and the check digit no longer matches. If you were sent an image, ask for the number and let the wallet draw a fresh symbol from it.
Watch screens
A barcode on a watch can scan, but only if it is drawn large on a white card, the screen is at full brightness, and the watch is held flat and still about ten centimetres from the scanner. Curved glass and ambient mode are the usual failures; a watch app should hold the screen on and bright for as long as the code is showing.
When it still will not scan
Read the number out, or show it in a large monospace font with the digits grouped in fours. Most tills accept a typed code. The wallet should make that a one-tap fallback rather than a hunt through the message.
How PeakVoucher does it
PeakVoucher encodes each code as Code 128 or EAN-13, auto-detected, with the quiet zones the standard asks for, on a white card. Separators are stripped before encoding and before the code is copied. If a code cannot be encoded it says so and shows the number. On the Galaxy Watch the screen goes to maximum brightness and stays awake while the code is up, and returns to normal when you leave.
PeakVoucher is built for this
A wallet for the vouchers buried in your messages. Coming soon, in private beta.
Questions
Does a screen protector stop barcodes scanning?
Why do some tills scan my phone and others not?
Can a barcode be wrong even if it scans?
Sources
- GS1. GS1 General Specifications: barcode symbology, dimensions and quiet zones. https://www.gs1.org/standards/barcodes-epcrfid-id-keys/gs1-general-specifications
- ISO/IEC 15417:2007. Information technology, automatic identification and data capture techniques, Code 128 bar code symbology specification. https://www.iso.org/standard/43896.html