Keep the foreground dark and the background light. Low contrast is the number one reason codes fail to scan.
A QR code stores data as a grid of dark and light squares. The three large squares in the corners tell the scanner where the code is and which way up it is; the rest is the actual data plus error correction — redundant information that lets the code stay readable even when part of it is dirty, damaged or covered.
Error correction is a trade-off. Higher levels (Q, H) let you cover up to 30% of the code — handy if you plan to place a logo in the middle — but they make the pattern denser, so you need a larger print size for the same scanning distance.
| Content type | Maximum capacity |
|---|---|
| Numeric only | 7,089 characters |
| Alphanumeric | 4,296 characters |
| Binary / UTF-8 text | 2,953 bytes (≈ 900–1,400 CJK characters) |
The practical guidance is simple: the shorter the content, the simpler the pattern and the easier it scans. A long URL can nearly halve the reliable scanning distance compared with a short one.
The codes made here are static: the data is written directly into the pattern, so the code never expires and never depends on a third-party service. Marketing platforms often issue dynamic codes that store a short link and redirect — convenient for editing the destination or tracking scans, but the code dies the moment you stop paying that provider. For business cards, packaging and signage, always use static.