Print & production
QR codes on thermal printers: dots, density and fading
Thermal label printers are 203 or 300 dpi, so each module must be a whole number of printer dots, at 203 dpi one dot is 0.125 mm and a readable module needs at least four. Use the printer's native QR command rather than an image, and remember direct thermal prints fade in weeks to months in heat and light.
The dot grid is the law
A thermal head is a fixed row of heating elements: 203 dpi (0.125 mm dots) on most receipt and shipping-label printers, 300 dpi (0.085 mm) on finer label models. There is no sub-dot rendering, every module edge lands on a dot boundary or gets rounded to one. Two rules follow:
- Each module must be a whole number of dots. A module requesting 3.6 dots prints as an irregular mix of 3- and 4-dot modules, and the decoder's sampling grid drifts off the pattern.
- Use at least 4 dots per module, the floor established in DPI for printing. Below that, single-dot rounding errors are a large fraction of each module.
| Dots per module | Module at 203 dpi | Module at 300 dpi |
|---|---|---|
| 3 (marginal) | 0.375 mm | 0.254 mm |
| 4 (floor) | 0.500 mm | 0.339 mm |
| 6 (comfortable) | 0.750 mm | 0.508 mm |
| 8 | 1.000 mm | 0.677 mm |
What fits on a real label
At 203 dpi with 6-dot modules (0.75 mm), a version 4 code, 33 modules, 41 with quiet zone, is a 30.8 mm square: comfortable on a 4 × 6 in shipping label alongside the address block, and workable on a 40 × 40 mm product label at 4-dot modules (20.5 mm). Receipts are narrower than they look: an 80 mm-wide receipt has ~72 mm printable, but keep the code small enough that the payload stays low-version, longer URLs make denser codes, and dense codes on 203 dpi paper are where failures start. Check any payload–size pairing with the size calculator.
Send the command, not a picture
Every serious label language generates QR codes in firmware: ^BQ in ZPL, equivalents in
EPL, TSPL, DPL and ESC/POS. Firmware places each module on exact dot boundaries; a raster
image sent from a design tool gets resampled onto the grid and reintroduces the rounding
you are trying to avoid. Settings and workflow live in
Zebra and label printer settings, and the
full command syntax in the ZPL reference. If
you must send an image (some consumer printers accept nothing else), generate the PNG at
exactly the dot dimensions, e.g. a 41-module code at 6 dots is 246 × 246 px, so pixels
map 1:1 onto dots.
Direct thermal fades: plan for it
Most receipt printers and many label printers are direct thermal: no ink, the paper itself darkens under heat. The chemistry keeps reacting after printing. In a wallet, a car, a sunny window or any warm environment, expect the print to fade (or the whole label to darken) within weeks to months; in cool, dark storage, a year or more. A QR code degrades before it disappears, losing contrast until scans get flaky. If the code must outlive a delivery cycle, specify thermal transfer instead: the decision table is on direct thermal vs thermal transfer.
Watch for dead elements
A burnt-out heating element prints a clean white vertical line down every label, through the code. One dead dot inside a 4-dot module is survivable; a dead dot on a module boundary can flip a whole column. Print a solid black test box weekly, look for white streaks, and spot-scan production labels, the habit that catches it is the verify station described in why verify that your QR code decodes.
FAQ
What size should a QR code be on a 203 dpi thermal printer?
Make each module a whole number of dots, at least four, 0.5 mm per module. A typical short-URL code (version 3–4) then comes out between 18 and 31 mm wide depending on dots per module.
Why is my thermal-printed QR code blurry or unreadable?
Usually fractional module sizes from sending a scaled image. Use the printer's native QR command, or generate the image at exact dot dimensions so each module maps to whole printer dots.
How long does a QR code last on a thermal receipt?
Direct thermal paper fades in weeks to months in heat, sunlight or a wallet, sometimes faster on a dashboard. For anything that must remain scannable beyond a delivery cycle, use thermal transfer with a ribbon.
Can I print QR codes on a receipt printer?
Yes, ESC/POS and similar command sets generate QR codes in firmware. Keep the payload short so the module count stays low, and expect the print to fade with time and heat.
Try it: free, no signup
Related
- Zebra and label printer settings for QR codes, Darkness, print speed, media calibration and stock choice for crisp QR codes on Zebra and similar label printers, plus a print-then-verify workflow.
- Direct thermal vs thermal transfer for QR codes, Direct thermal fades and darkens with heat and UV; thermal transfer is permanent. How to choose by label lifetime, plus wax, wax-resin and resin ribbons.
- QR codes on Dymo and Brother label printers, What QR codes fit on Dymo LabelWriter and Brother P-touch and QL printers: tape widths, module maths, app features and tape durability.
- What DPI should a QR code be printed at?, Print QR codes from vector artwork (SVG or PDF), and DPI becomes irrelevant, because the RIP renders exact edges at the device's native resolution. If…