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.
- The typed number is the fallback; if that is refused too, the code is the problem, not the barcode.
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.
Why won't my phone barcode scan?
A scanner reads a barcode by finding a pattern of dark and light bars with enough contrast, enough blank space around it, and the right structure for the type of code it expects. A phone screen fails one of those three in most cases: not enough contrast, no blank margin, or a symbol that was drawn as the wrong type or has been blurred by copying. The table is the whole diagnosis; the sections below are the fixes.
| What you see | Likely cause | Fix |
|---|---|---|
| Nothing happens, cashier tries again | Screen too dim or dimmed mid-scan | Brightness to maximum, keep the screen awake |
| Scanner beeps on other phones, not yours | Matte or cracked screen protector, fingerprints | Wipe the screen; try the number |
| Barcode fills the screen edge to edge | No quiet zone | Zoom out until there is white either side |
| Scans, but the till says invalid | Wrong symbology, or separators encoded | Read the number; let the wallet redraw it |
| Image was forwarded to you | Recompressed screenshot | Ask for the number, not the picture |
| Watch will not scan | Ambient mode, curved glass, held too close | Full brightness, flat, about ten centimetres away |
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.
Dark mode is a related failure. A barcode drawn as light bars on a dark card is inverted from what most scanners expect; the symbol should always sit on a white card regardless of the app's theme.
Two phone settings work against you here. Adaptive brightness will pull the screen back down a few seconds after you raise it, and battery saver caps brightness and shortens the screen timeout. Neither needs to be turned off permanently; the app should override both for as long as the code is on screen, and a manual swipe to maximum before the till does the same job.
PeakVoucher does this from your own data. A wallet for the vouchers buried in your messages. Join the free beta →
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.
Size matters less than people think. A barcode a few centimetres wide, with clean margins and sharp bars, reads better than one stretched across the whole screen with soft edges. If a long code produces narrow bars, it is the sharpness of the narrowest bar that limits the scan, not the overall width.
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.
The number is also the safer thing to hold. An image of a card in a chat thread is a copy of a bearer code in a place that syncs and forwards; a voucher code is cash and should be stored where it is fetched on demand, not where it is a picture.
Does a barcode scan from a watch?
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.
On a Galaxy Watch the always-on display is the trap: ambient mode drops brightness and may redraw the face over the code. Raise the wrist, open the voucher, and let the app push brightness up; the same screen habits that make a Galaxy Watch usable for work apply here.
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. If the till rejects the typed number too, the code itself is the problem, not the barcode: check the balance online or ring the issuer before assuming the card is worthless.
When reading the number out, group the digits in fours and say the letters by name; a cashier typing a nineteen-digit code hears it better in chunks. If the card has a PIN, have it ready before the number is accepted rather than after.
- Brightness to maximum, screen awake.
- Wipe the screen, zoom out to restore the quiet zone.
- Show the number in large monospace; let the cashier type it.
- Check the balance with the issuer if the number is also refused.
Most of this is avoidable with one habit: have the voucher open, at full brightness, before the cashier asks. That means the voucher has to be findable in seconds, which is a sorting problem rather than a barcode problem; keeping gift cards in a list sorted by expiry is what makes the one you need the one at the top.
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.
Want this answered from your own data?
That is what PeakVoucher does. A wallet for the vouchers buried in your messages. In private beta — the waitlist is free.
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?
Why does my digital gift card say invalid at checkout?
Should I screenshot the barcode in case the app is slow?
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