High-resolution print
Practical guide to DPI, sizes, file formats, and substrates. Read this once and never ship a fuzzy QR.
High-resolution print
A practical guide to the trade-offs between physical size, DPI, file format, and substrate. Read this once before sending QRs to a printer and you will never ship a fuzzy or unscannable print.
The DPI rule of thumb
| Output | DPI |
|---|---|
Web thumbnail (<img width=200>) | 72-150 |
| Standard inkjet / laser print | 300 |
| Offset press, magazine, brochure | 300-450 |
| Textile (sublimation, DTG) | 300-600 |
| Vinyl signage, billboard | 100-200 (viewed from far) |
| Fine-art giclee print | 600 |
Default to 300. It is the print-shop minimum. Bump to 600 only when both the substrate (high-res inkjet, offset) and the budget justify it. 600 DPI requires Pro plan or higher.
Picking size_inches
Match the physical size you will print at. The API multiplies
size_inches x dpi to get pixels.
| Use case | size_inches | dpi | Pixels |
|---|---|---|---|
| Email signature, social share | 1 | 300 | 300 x 300 |
| Business card | 1 | 600 | 600 x 600 |
| Sticker, table tent | 3 | 300 | 900 x 900 |
| Flyer, A4 poster QR | 4-6 | 300 | 1200-1800 px |
| Wall poster (A3 / 11x17) | 8 | 300 | 2400 x 2400 |
| Storefront window | 12-15 | 300 | 3600-4500 px |
| Billboard, large-format | 15 | 300 | 4500 x 4500 |
tip: When the printer asks for X DPI at Y inches Plug their numbers straight into the API. They want 600 DPI at 8 in?
size_inches: 8, dpi: 600-> 4800 x 4800 px PNG.
Substrate matters
| Substrate | Recommended setup |
|---|---|
| White paper / card | color: black, background: white |
| Black t-shirt (DTG) | color: white, background: transparent |
| Black t-shirt (vinyl) | color: white, background: transparent, format: svg (better cut quality) |
| Glass storefront | color: white, background: transparent, perforated vinyl |
| Photo backdrop | color: white, background: transparent |
| Brand-colored card | color: black, background: white (do not risk the brand color blocking the scan) |
danger: Avoid printing dark on dark A "dark blue on black" QR looks aesthetic but will not scan. Always test with a real phone before mass production.
File format choice
See PNG vs SVG for the deep dive. Quick rule:
- Need a single fixed-size print? -> PNG
- Need flexibility (multiple sizes from one file)? -> SVG
- Old print shop only knows JPG? -> render PNG, convert manually
Mandatory quiet zone
The QR spec mandates a "quiet zone": at least 4 modules of empty space
around the matrix on all four sides. The API includes this
automatically inside size_inches. You do not need to add padding
yourself.
If you crop the rendered image tight to the modules, you break the quiet zone and decoders struggle.
Pre-flight checklist before sending to print
- Color contrast: modules vs background ≥ 3:1 luminance
- Quiet zone preserved (no cropping the API output)
-
size_inchesmatches the physical print size -
dpimatches what your print shop accepts (default 300) - Logo is square and ≤ 24% of the QR diameter
- Scanned the rendered file with two phones (one iOS, one Android)
- Paper sample test print: QR scans from 30 cm away
- Substrate sample print: QR scans from 1 m away (signage)
Field-tested presets
Sticker on dark surface (neon white, transparent)
{
"size_inches": 3,
"dpi": 300,
"color": "white",
"background": "transparent",
"pattern": "rounded",
"logo_neon_alpha": true,
"format": "png"
}Business-card vCard (small, dense, monochrome)
{
"size_inches": 1,
"dpi": 600,
"color": "black",
"background": "white",
"pattern": "rounded",
"format": "png"
}Storefront window (large, vector, transparent)
{
"size_inches": 15,
"dpi": 300,
"color": "white",
"background": "transparent",
"pattern": "rounded",
"format": "svg"
}Magazine ad (high-fidelity, branded)
{
"size_inches": 4,
"dpi": 450,
"color": "#1a0d3a",
"background": "white",
"pattern": "rounded",
"logo_url": "https://cdn.x.com/brand-mark.png",
"format": "png"
}Branded gradient with frame
{
"size_inches": 6,
"dpi": 300,
"background": "white",
"gradient_from": "#6c48e8",
"gradient_to": "#1a0d3a",
"eye_color": "#1a0d3a",
"frame_style": "scan-me-bottom",
"frame_color": "#6c48e8",
"frame_label": "Scan to view menu",
"format": "png"
}What if the print is fuzzy
| Symptom | Cause | Fix |
|---|---|---|
| Soft, jagged edges | Print resolution > render DPI | Render at the printer's DPI |
| Modules blur into each other | Too small physical size for content | Increase size_inches or shorten data |
| Scanner reads it sometimes | Marginal contrast | Boost contrast (black-on-white is safest) |
| Phone camera fails on shiny paper | Glare from glossy lamination | Use matte / soft-touch finish |