Can QR Codes Be Coloured?
Yes - QR codes can use custom colours and still scan reliably, provided the fundamental contrast and module visibility rules are followed. The colour of individual modules has no bearing on scan reliability; the contrast between modules and background is everything.
Standard QR codes use black modules on a white background because this produces maximum contrast in all lighting conditions and printing environments. Custom colours introduce risk only when contrast is insufficient, or when design modifications interfere with the scanner's ability to detect the finder patterns (the three square-corner markers).
Rule 1: Minimum Contrast Ratio - Non-Negotiable
The contrast between the module colour (the "dark" pattern elements) and the background colour must meet a minimum ratio for reliable scanning across different lighting conditions, camera qualities, and scanning angles.
- Absolute minimum: 3:1 contrast ratio (the same WCAG AA accessibility standard for text)
- Recommended: 4.5:1 or higher
- Ideal: As close to pure black on pure white as possible (21:1)
You can check any colour pair's contrast ratio at webaim.org/resources/contrastchecker - it accepts hex colour codes.
Colour combinations that typically work
- Dark navy blue (#003087) on white → 13:1 ✅
- Dark green (#1a5276) on white → 10:1 ✅
- Deep burgundy (#922b21) on white → 9:1 ✅
- Dark grey (#2c3e50) on light cream (#fdfefe) → 11:1 ✅
- Brand orange (#e67e22) on white → 2.4:1 ❌ (insufficient)
- Yellow (#f4d03f) on white → 1.3:1 ❌ (fails)
- Light blue (#aed6f1) on white → 1.9:1 ❌ (fails)
Rule 2: Dark Modules on Light Background - Never Reverse
The canonical QR code format uses dark modules on a light background. While some scanners can read inverted (light on dark) codes, many cannot - and the spread of QR code readers across different devices and ages of hardware makes inversion unreliable in real-world deployment. Never create a QR code with light-coloured modules on a dark background and expect it to scan universally.
If your brand uses a dark background: place the QR code inside a white or very light box with adequate quiet zone, maintaining the dark module standard within that box.
Rule 3: Finder Patterns Must Remain Visually Distinct
The three large square patterns in the three corners of a QR code are the finder patterns - how the scanner detects the code and establishes its orientation. These must remain clearly recognisable as large dark squares with a light interior. Do not alter the finder pattern colours, add gradients to them, or apply design effects that blur their square definition. Finder patterns that are too lightly coloured, filled with brand colours instead of dark fill, or obscured by overlapping design elements cause the majority of custom QR code scan failures.
Rule 4: Logo Integration - Maximum 30% Coverage
A logo placed in the centre of a QR code uses the error correction mechanism. The QR code stores redundant data; the error correction can reconstruct the damaged modules obscured by the logo. The maximum logo coverage is therefore tied to the error correction level:
- Error correction level L: maximum 7% - no practical logo
- Error correction level M: maximum 15%
- Error correction level Q: maximum 25%
- Error correction level H: maximum 30%
For logo integration: always use error correction level H. Never allow the logo to cover finder patterns. Centre the logo precisely. Give the logo a solid white or light background "box" so the logo boundary does not bleed into the surrounding modules. Logo size: ideally 20-25% of the total code area max (well within the 30% limit) for a reliability margin.
Rule 5: Quiet Zone - Keep It Clear of Your Brand Design
The quiet zone is the mandatory blank margin around all four sides of the QR code. Minimum: 4 modules wide on all sides. No brand colours, patterns, gradients, or text should enter the quiet zone. Scanners use the quiet zone contrast boundary to detect the code's edges - anything encroaching on it prevents detection entirely.
Most Common Custom QR Code Design Mistakes
| Mistake | Consequence | Fix |
|---|---|---|
| Light yellow or orange modules on white background | Insufficient contrast - fails in most lighting | Use module colour with 4.5:1+ contrast vs background |
| Inverted: light modules on dark background | Many scanners fail to read inverted codes | Keep dark modules on light background; put code in white box |
| Logo covers more than 30% of code area | Error correction exhausted - scan failure | Reduce logo size to ≤20% of code area |
| Gradient background behind modules | Local contrast varies - areas may fail | Use solid, single-colour background only |
| Finder patterns coloured same as background | Scanner cannot detect code orientation | Keep finder patterns dark and fully contrasted |
| Text overlapping the quiet zone | Scanner cannot detect code boundary | Keep 4-module quiet zone completely clear |
| Brand pattern behind code | Pattern detected as part of code - confusion | Place code on solid background only |
Always test your custom QR code on at least 3 different devices before deployment - different camera algorithms produce different results. If it fails even one test, redesign before printing.