# QR codes on uncoated paper

> Uncoated paper absorbs ink, so printed modules gain roughly 15–25% and the white gaps between them narrow. Keep modules at 0.5 mm or larger, use plain square modules, and shorten the payload before shrinking the code. On brown kraft, add a white underprint to restore contrast.

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

---

## What uncoated stock does to a module

Coated paper holds ink on its surface; uncoated paper drinks it. The ink wicks along the
fibres, so every printed shape ends up larger than the plate intended, the phenomenon
printers call [dot gain](/docs/print/ink-spread-and-dot-gain-in-qr-codes). On uncoated
stock, gain typically runs **15–25%**, versus low single figures to ~15% on coated.

For text, gain just looks slightly bolder. For a QR code it is geometry: dark modules
fatten *into* the white gaps that separate them. Note that this damages every module
equally, which puts it in the class of failures
[error correction](/docs/spec/error-correction-levels-explained) cannot repair, EC fixes
a scuffed corner, not a uniformly swollen grid.

## The numbers

| Stock | Typical gain | Minimum module |
|---|---|---|
| Coated gloss or silk | up to ~15% | 0.4 mm |
| Uncoated offset, letterpress stock | 15–25% | 0.5 mm |
| Newsprint | up to ~30% | 0.6 mm |
| Kraft, heavy recycled | 15–25% plus contrast penalty | 0.5 mm + white underprint |

These floors match the substrate table in the
[size pillar](/docs/print/qr-code-size-for-print); at a given code size, they translate
directly into a payload ceiling, which the [size calculator](/size-calculator) will show
you.

## Bridging: the specific failure

The uncoated failure mode is **bridging**: two adjacent dark modules swelling until the
white gap between them closes, merging into a single blob. The decoder samples the centre
of each grid cell, and once light cells go dark the codeword errors pile up faster than
any EC level can vote away.

Fine styling dies first. [Dot-style modules](/docs/design/qr-code-module-shapes-compared)
depend on white space *inside* each cell, and rounded modules on narrow inter-module
gaps: both are exactly what gain consumes. On uncoated stock, print **plain square
modules**, and let the paper's texture be the design statement instead.

## Kraft's second problem

Kraft and heavy recycled stocks add a contrast penalty on top of gain: the paper itself
is a mid-brown, already partway toward the module colour. Black ink on kraft can fall
close to the **40% luminance floor**
[the contrast rules require](/docs/design/qr-code-colors-that-scan), and gain then eats
the geometric margin at the same time.

Two fixes, one warning:

- **White underprint**: flood a white patch behind the code (standard on kraft label
  presses), restoring a proper light background.
- **A white label** carrying the code, applied to the kraft pack.
- Never "solve" it by reversing the code white-out-of-brown,
  [inverted codes](/docs/design/inverted-qr-codes) fail on many readers even before the
  gain arrives.

## The compensation checklist

1. Modules ≥ 0.5 mm (≥ 0.6 mm on newsprint), grow the code or shorten the payload.
2. Plain square modules; no dot or fine-rounded styles.
3. 100% K ink build, per [CMYK practice](/docs/print/qr-code-in-cmyk-print).
4. On kraft: white underprint or a white label patch.
5. Proof on the production stock and scan it, then
   [verify the artwork decodes](/validate) so the file itself is never the suspect.

## FAQ

### Why does my QR code fail on uncoated or recycled paper?
Ink wicks into uncoated fibres, fattening modules by 15–25% until the white gaps between them start closing. Use modules of at least 0.5 mm, plain square styling, and test a proof on the actual stock.

### What is dot gain on a QR code?
The growth of every printed shape as ink spreads on and into the paper. On a QR code it narrows the light gaps between dark modules, and in bad cases merges neighbouring modules, a systemic error that error correction cannot fix.

### Can I print a QR code on brown kraft paper?
Yes, with a white underprint or white label behind the code. Black directly on kraft loses much of its luminance contrast to the brown base, and dot gain on the soft stock erodes the rest of the margin.

### Does higher error correction help on uncoated paper?
Not for gain: swelling affects all modules equally, which is outside what error correction repairs. Spend the margin on bigger modules and a shorter payload instead, and keep EC at M or Q.

## Try it

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