Why Won't My Barcode Scan? A 7-Step Checklist

A checklist for diagnosing barcode scan failures, covering quiet zones, contrast, print resolution, physical damage, wrong symbology, check digits, and scanner distance.

Your barcode looks fine and the scanner will not read it. The cause is almost always something mundane and fixable. Work through this checklist from the top. Most scan failures are in the first two steps.

1. The quiet zone is too small

The quiet zone is the blank white margin around a barcode, and the scanner uses it to locate the symbol. Without it, the decoder either fails to find the barcode at all or tries to decode adjacent text, a border, a fold line, or another barcode as part of it.

Designers routinely underestimate how much space is required. The GS1 General Specifications define quiet zones in X-dimensions, where X is the width of the narrowest bar or module.

SymbologyLeft / topRight / bottomNotes
EAN-1311X7XAsymmetric by design. At 100% size, about 3.6 mm left and 2.3 mm right
UPC-A9X9X
Code 12810X10XAt 10-mil X, about 2.5 mm per side. See ISO/IEC 15417 and the Code 128 check-digit reference
Code 3910X10X
QR Code4 modules4 modulesAll four sides, per ISO/IEC 18004
Data Matrix1 module1 moduleAll four sides, with 2-4 recommended in practice, per ISO/IEC 16022
ITF-1410X10XPlus mandatory bearer bars above and below

Add 20-30% beyond the minimum whenever you can. In label design software, check the quiet zone at the print size, since screen zoom hides the problem. The common culprits are text set too close to the symbol, a die-cut edge that clips the margin, and a second barcode on the same panel.

2. The color or contrast is wrong

Most point-of-sale scanners use a red laser at 630-680 nm. They measure reflectance, meaning how much light bounces back from dark bars compared with light spaces. Red paint, red ink and red packaging look dark to your eye and invisible to the scanner, because the red laser bounces straight off a red surface.

  • Black, dark navy and dark forest green absorb red light, so they are safe bar colors. Brown is a reddish color and is not.
  • Red, orange, bright yellow, pink and gold reflect red light and read as white, so never use them for bars.
  • White, cream, light yellow and light orange reflect red light, so they are safe backgrounds.
  • Red, dark green, dark blue and black absorb red light, so never use them as a background. White bars on a black background look high contrast to the eye and will not scan with a laser.

The industry minimum Print Contrast Signal (PCS) is 0.50, or 50%. The ISO/IEC 15416 scan reflectance profile grades symbols A through F. Retail compliance requires an overall grade of at least 1.5, which is a C, and a symbol contrast of 40-55% scores a C on that parameter. Grade A (70% and above) is what you should design toward. A barcode that passes in the lab and fails in the field is usually a Grade C symbol that prints slightly worse in production than it measured at prepress.

Metallic foil substrates create specular glare that blinds the scanner, so put a matte overcoat over the barcode area. Transparent labels on tinted bottles make the bottle color the background, so print a white flood area behind the barcode.

If ink bleed is the problem (bars growing wider than spec because ink spreads on absorbent paper), apply Bar Width Reduction in your generator. Barcode Press supports the inkspread parameter from bwip-js for this.

3. The print resolution is too low

A printer builds barcodes out of dots. If the narrowest bar is only 1-2 dots wide, a single misplaced dot is a 50-100% bar width error, and the scanner cannot reliably tell a narrow bar from a wide one. The rule is at least 3 dots per X-dimension for 1D barcodes and 4-5 dots per module for 2D codes.

  • At 203 DPI (entry-level thermal printers) you are safe only with X-dimensions at or above 15 mil (0.38 mm). A 10-mil Code 128 shipping label at 203 DPI is right at the edge and will give variable scan rates. That resolution is fine for large labels and too coarse for compact QR codes.
  • 300 DPI is the practical minimum for standard X-dimensions in the 0.25-0.33 mm range.
  • 600 DPI is required for any 2D code smaller than roughly 8 mm square, or any 1D code with X under 0.25 mm.

The fix is almost always vector output. Export SVG or PDF, which are resolution-independent and print crisply at any size. A PNG generated at screen resolution and scaled down in your design application prints blurry. If you must use PNG, export at a scale factor that gives you at least 300 effective DPI at the final print size.

4. Physical damage or distortion

One-dimensional barcodes, meaning Code 128, EAN-13, UPC-A, Code 39 and ITF-14, have no error correction. A scratch crossing the bars, a crease folded over the symbol, or label lift at the edge is a hard failure, and the scanner rejects the read outright. A scratch running parallel to the bars is usually harmless, because it does not change bar widths.

Two-dimensional codes are more forgiving. QR Code's Reed-Solomon error correction comes in four levels.

LevelRecoverySymbol sizeWhen to use
L (Low)About 7%SmallestClean indoor environments, maximum compactness
M (Medium)About 15%MediumDefault for most uses
Q (Quartile)About 25%LargerOutdoor, industrial, high-wear surfaces
H (High)About 30%LargestLogo in the center. Keep the logo under 30% of the area and away from the corner finder patterns

Data Matrix (ECC200) recovers roughly 25-30% of codewords and is the usual choice for direct part marking, the laser engraving and dot peening on metal components where some mark degradation is normal.

5. The scanner is configured for the wrong symbology

Barcode scanners can be set to recognize only specific barcode types. A scanner set up for Code 128 will silently reject a QR code, because the firmware is not looking for it. One hardware limit trips people up too. Laser scanners cannot decode 2D matrix codes. A laser reads a single line, and QR Code and Data Matrix need the whole grid read, so you need a 2D imaging scanner.

Check these common mismatches.

  • Code 39 and Code 128 look similar on a label but use different encoding schemes.
  • Older US-configured scanners sometimes reject 13-digit EAN-13 codes and read only UPC-A. Enable EAN-13 in the scanner settings.
  • Some scanners reject ITF codes outside a set length range, so an ITF-14 can fail on a scanner configured for a different ITF length.

The fastest diagnostic is to scan the code with a smartphone camera app. If the phone reads it and the dedicated scanner does not, the problem is scanner configuration. Zebra 123Scan, Honeywell EZConfig and Datalogic Aladdin are free configuration utilities that show which symbologies are enabled and let you change them without printing configuration barcodes.

6. The check digit is wrong or missing

A check digit is a calculated number appended to the barcode payload. After scanning, the reader recomputes it from the decoded data, and if the two disagree the scan is rejected before the data reaches your system. That catches transcription errors and print defects before they cause downstream problems.

EAN-13, EAN-8, UPC-A, UPC-E, ITF-14, Code 128, ISBN-13 and every GTIN have a mandatory check digit that the encoder calculates for you, so there is nothing for you to do.

Code 39 (Mod 43), Codabar (Mod 16) and plain ITF have an optional check digit, and that is where mismatches happen. A Code 39 printed with the check digit enabled, scanned by a reader with check digit verification off, returns the check character as an extra letter at the end of the data string. Set the encoder and the scanner the same way, both with the check digit or both without.

For EAN, UPC and GTIN numbers, verify the number with the GS1 check digit calculator before printing, or let the generator compute it. Never invent GTIN digits, because a made-up 12-digit string fails check digit validation nine times out of ten.

7. Scanner distance and depth of field

Every scanner has a minimum and maximum read distance. Too close, and the optics cannot focus or the beam spot is wider than the narrowest bar. Too far, and the beam has spread too thin to resolve fine detail. Both produce a no-read from an otherwise perfect barcode.

A larger X-dimension gives a wider depth of field and a longer maximum read distance. A dense Code 128 at 10-mil X reads only at close range on a standard handheld imager. A large pallet label at 30-mil X is what a long-range scanner is built to read from across an aisle.

Angle matters for 1D codes on a laser scanner. A typical handheld laser tolerates about 60 degrees of pitch or roll but only about 10 degrees of skew, the rotation of the bars within the label plane, so line the beam up square across the bars. A 2D imager decodes 1D and 2D codes at any rotation.

For warehouse high-shelf labels scanned from more than a meter away, use the top of the general distribution range in the GS1 General Specifications, up to 1.016 mm (40 mil). Every scanner manufacturer publishes a depth-of-field table in the product datasheet. Look up the X-dimension you are using and confirm your working distance is inside the range.

The quick triage sequence

  1. Scan with a smartphone. If it reads, the barcode data is valid and the problem is the dedicated scanner, meaning configuration, symbology support or distance.
  2. If the phone also fails, check quiet zones and contrast first.
  3. Check print resolution, especially if the output came from a 203 DPI or inkjet printer.
  4. Look for physical damage. Any crease or scratch crossing the bars of a 1D code is a hard failure.
  5. Verify the check digit if you entered the data by hand.
  6. Check scanner depth of field last, especially in fixed-mount or warehouse setups.

Nearly every barcode scan failure is preventable at the design stage. Enforce quiet zones in your templates, specify black on white, require SVG or PDF output from your generator, and test on the scanner hardware you will use before going to production. Do those four and you will almost never debug a barcode in the field.

Try it

More guides