Skip to content

My QR code won't scan

Last updated June 12, 2026

First, split the problem in two

Scan the code with a normal phone camera:

  • Nothing happens → the code itself can't be read. Causes 1–4.
  • A page opens, but it's a notice instead of your passport → the code reads fine; the passport's state or GTIN is the problem. Causes 5–7.

Cause 1: Printed too small

Symptom: The code scans from your monitor but not from the printed label, or only scans when the phone is impractically close.

Small codes are the most common print failure, especially on textiles where the surface curves and creases. The minimums:

  • Care labels: 20mm
  • Hang tags: 25mm or larger
  • Woven labels: 14mm, woven from the SVG

Fix: Reprint at or above the minimum for the placement. Size presets and the full print guidance are in Downloading and printing QR codes.

Cause 2: Low contrast or inverted colors

Symptom: The code is large enough but scanners struggle, particularly in poor light.

Scanners expect dark modules on a light background. Recolored codes with low contrast, light-on-dark inversions, or codes printed over busy artwork all cut the scan rate. The white border around the code (the quiet zone) is part of the standard — artwork or label edges intruding into it break scanning too.

Fix: Use the downloaded black-on-white code as-is where possible. If your designer recolors it, keep dark-on-light with strong contrast, preserve the quiet zone, and test a physical sample before the production run.

Cause 3: The file was converted to JPG

Symptom: The printed code looks slightly blurry or has faint halos around the squares, and scanning is unreliable.

PassportCraft exports SVG and PNG only — there's no JPG export, so a JPG in your print pipeline means someone converted it along the way. JPG compression smears the sharp module edges that scanners depend on.

Fix: Go back to the original download. Send print suppliers the SVG; if a workflow demands a raster image, use the PNG. Never re-save either as JPG.

Cause 4: Damaged or badly placed code

Symptom: The code scanned fine when new but fails after wear — or fails only on the physical product, not on a flat test print.

PassportCraft codes are generated with high error correction (they tolerate up to 30% damage), but fabric is hostile territory: codes printed across a seam or fold, on heavily creased or abraded labels, or under glossy finishes that reflect light can still fail.

Fix: Place the code on a flat area away from seams and folds, prefer matte finishes, and for badly worn labels, reprint. If the same passport's code keeps failing in the field, consider moving it from the care label to a hang tag at a larger size.

Cause 5: The passport is a draft

Symptom: The code scans and a page opens — but it reads "This passport hasn't been published yet" with a sign-in option.

The QR code's URL never changes, but it only resolves to the live passport while the passport is published. A draft — including a passport that was published once and then unpublished — shows this neutral notice instead. No product data is exposed, and your own team can sign in from that page to preview the draft.

Fix: Publish the passport. The printed code picks up the change immediately — nothing to reprint.

Cause 6: The passport was deactivated by a plan change

Symptom: The page reads "This Digital Product Passport has been temporarily deactivated. Contact the brand for product information."

This is the notice for passports taken offline by a plan downgrade — for example when published passports exceeded a new plan's limit after the grace period. See Upgrading, downgrading, and the grace period for how that happens and how to avoid it.

Fix: Free up publish slots or upgrade, then republish the passport.

Cause 7: The GTIN doesn't match

Symptom: The page reads "This Digital Product Passport is not available."

The URL in the QR code is built from a GTIN — and no passport in the system matches it. Typical reasons: the passport's GTIN was changed after the code was printed, the label carries a code generated from the wrong GTIN, or a serialized URL points to a serial number no passport has.

Fix: Open the passport and compare its GTIN (and serial number, if used) against the Encoded URL shown in the QR panel, then against what's printed. How these URLs are constructed is covered in GS1 Digital Link explained.

Camera apps vs scanner apps

Any modern phone camera reads these codes — they're standard QR codes containing an ordinary https URL, no special app required. If a camera won't pick one up: add light, hold the phone 10–30cm away and steady, and avoid glare on glossy surfaces. A dedicated QR scanner app can help with marginal codes (small, worn, or low-contrast), but if a code only scans in a dedicated app, treat that as a failed test — your customers will use their cameras.

Test like a customer

Always verify with a plain phone camera, in normal indoor light, on the final printed material. A code that passes that test works for real shoppers.

Frequently asked questions

What's the minimum size for a printed QR code?

On sewn-in care labels, 20mm. Hang tags should be 25mm or larger, and woven labels at least 14mm (woven from the SVG, never a raster file). Bigger is safer — small codes that scan on screen often fail on curved or textured fabric.

The code scans but says the passport hasn't been published — why?

The QR code is fine; the passport behind it is in draft. A passport's QR code only resolves to the live page while the passport is published. Publish it (or republish it, if it was unpublished) and the printed code starts working immediately.

Why does my code show 'This Digital Product Passport is not available'?

The URL resolved, but no passport matches the GTIN (or GTIN + serial number) encoded in it. Check that the passport's GTIN matches the product the label is on — and if you use serial numbers, that a passport exists with that exact serial.

My QR code won't scan | PassportCraft