# QR codes on tote bags

> A tote bag is read at 1–2 m while being carried, so the code should be at least 10 cm square. Use error correction H because fabric drapes, folds and creases distort modules, and print on the flattest panel, never across a seam or the bottom gusset.

Source: https://useqr.app/qr-codes-on/tote-bags · Last reviewed 2026-08-21 · UseQR is free forever, no signup.

---

| Typical scan distance | **1–2 m** |
|---|---|
| Minimum code width | **≥ 10 cm** |
| Error correction | **H** |

## The numbers

By the [ten-to-one rule](/docs/print/the-10-to-1-distance-rule), a reader 1–2 m away needs
a **10–20 cm** code. A tote differs from a poster in one important way: the reader is
usually looking at a bag being *carried*, by a stranger, in motion. That argues for the top
of the range, not the bottom, on a standard 38 × 42 cm tote panel, a **12–15 cm** code is
proportionate and scannable.

## Drape is the failure mode

A poster is flat; a tote never is. Cotton canvas drapes around whatever is inside it, and
every curve foreshortens a strip of modules while every crease breaks a line of them.
This is the same failure family as [t-shirts](/qr-codes-on/t-shirts), and it is why the
table says **H**: with 30% error-correction capacity, the code survives moderate
distortion that would kill an L or M code outright.

Placement rules that follow directly:

- **Centre of the main panel**, the flattest region when the bag hangs or is carried.
- **Never across the bottom gusset**: the fold line runs straight through the code and
  the gusset spends half its life bent 90°.
- Keep the code away from seams and at least 4 cm from panel edges, where fabric curls.
- Empty bags fold flat for storage; a code that sits on the panel centre crosses the fewest
  storage creases.

## Production

Print method determines edge sharpness on fabric: the full comparison is in
[QR codes on fabric](/docs/print/qr-codes-on-fabric). The short version:

- **Screen print**: sharp, durable, the default for canvas totes. One colour is all a QR
  code needs.
- **DTG (direct to garment)**: fine for detailed artwork, slightly softer module edges;
  keep modules ≥ 2 mm.
- **Heat-transfer vinyl**: sharpest edges of all, but peels at corners with washing.
- **Embroidery cannot render a scannable code** at this size: stitch width is too coarse
  for the module grid. See [embroidery](/qr-codes-on/embroidery) for why.

Natural (unbleached) canvas is beige, not white. Black on natural canvas still clears the
**40% luminance difference** floor comfortably; mid-tone inks on natural canvas often do
not. Dark bag, light code is an inverted code: avoid it.

## Worth saying honestly

A tote code is ambient advertising, not a call to action. Strangers rarely photograph
strangers' bags; realistic scans come from the moment of handover and from the bag lying
flat at home or on a desk. Design the payload for the owner: a [link](/url-qr-code) to
the shop, a loyalty page, a playlist, rather than imagining pavement conversions.

## FAQ

### How big should a QR code be on a tote bag?

At least 10 cm square, and 12–15 cm sits well on a standard 38 × 42 cm panel. The bag is
read from one to two metres, usually in motion, so err large. Verify your distance
assumption with a size calculator before printing.

### Why will the QR code on my tote bag not scan?

Almost always drape: the fabric is curving or creasing through the code. Hold the bag
flat and try again, if it scans flat, the fix is placement and error correction H, not a
new code. If it fails flat, check contrast and print sharpness.

### What is the best print method for a QR code on canvas?

Screen printing. It lays down dense, sharp, single-colour ink that survives washing, which
is exactly what a QR code needs. Heat-transfer vinyl is sharper still but peels with wear.
Embroidery cannot reproduce the module grid at tote sizes.

### Can I embroider a QR code on a bag?

Not reliably at tote-bag sizes. Thread width limits how small a module can be, and stitch
edges are ragged at the scale a camera needs. If the design must be stitched, put the code
on a printed woven label instead.

## Try it

- https://useqr.app/url
- https://useqr.app/size-calculator
- https://useqr.app/validate
