QR Code with Logo — Design & Print Best Practices
Embedding a brand logo in a QR code looks sharp on packaging, business cards, and marketing materials. Done wrong, it produces a code that looks great but fails to scan. This guide covers everything you need to get it right — from the physics of error correction to the specifics of print sizing and color contrast.
Why logos in QR codes work at all
It seems counterintuitive: you place an opaque image directly on top of a QR code, obscuring dozens of data modules — and yet a phone camera still decodes it in milliseconds. The reason is error correction.
Every QR code encodes redundant data using Reed-Solomon error correction. The standard defines four error-correction levels:
| Level | Label | Can recover if this much of the code is damaged |
|---|---|---|
| Low | L | ~7% |
| Medium | M | ~15% |
| Quality | Q | ~25% |
| High | H | ~30% |
When you place a logo over the center of a QR code, you are deliberately damaging it. The scanner reconstructs the missing data from the redundant codewords. This only works if you use a sufficiently high error-correction level and keep the logo within the recoverable area. For any QR code that will carry a logo, always use level H — anything lower and you are gambling with your print run.
To understand how this reconstruction works in detail, see our guide on QR code error correction.
The 30% rule: maximum logo coverage
With error-correction level H, a QR code can theoretically recover from up to 30% damage. In practice, your logo should cover no more than 20–25% of the total module area. Here is why the headroom matters:
- Error correction level H adds significant redundancy, which increases the physical size of the code (more modules). A larger code means more surface area and therefore more visual complexity — which is already harder for some scanners to parse.
- Print imperfections, dirty surfaces, and slight misalignment all count as additional "damage." You need margin left over after the logo for real-world degradation.
- The 30% theoretical limit assumes the damaged area is spread randomly across the code. A logo creates a concentrated rectangular block of damage in the center — and that is harder for the decoder to handle than distributed damage.
A practical rule: if your logo covers more than roughly one-quarter of the QR code's width and height, reduce it. A logo that fills 20% of the area is almost always scannable; one that fills 35% is a coinflip. The goal is a code that scans reliably in poor lighting, at an angle, on a slightly worn surface — not one that barely passes a desktop preview.
You can experiment with logo size directly in QRonimo's QR code generator — the preview updates in real time so you can see the coverage before downloading.
Contrast is non-negotiable
QR scanners — whether a dedicated app or the built-in camera on iOS and Android — work by identifying the boundary between dark modules and a light background. If that boundary is ambiguous, the scanner either takes longer or fails entirely.
The WCAG 2.1 minimum contrast ratio for readable text is 4.5:1. For QR modules, the practical minimum is 4:1, and you should aim for 5:1 or higher in any context where you cannot control lighting (outdoor signage, printed menus, trade show booths).
The transparent-background logo trap
A logo with a transparent (PNG) background placed on a white QR code looks fine on screen. On a colored background — say, a dark blue packaging box — the "transparent" area becomes dark blue. That dark fill now bleeds into the surrounding QR modules. The scanner sees a large dark region instead of a logo surrounded by decodable modules, and it fails.
The fix is simple: always give your logo a solid white (or light) background that matches the QR code's quiet zone. Use a filled rectangle or circle behind the logo artwork, large enough to create a clear visual separation from the nearest QR module.
Avoid low-contrast color combinations
Some color pairings that look bold in design software produce unusable QR codes:
- Dark red modules on black background — nearly invisible to IR-sensitive cameras
- Yellow modules on white — under 2:1 contrast in most conditions
- Light grey on white — fails in any suboptimal lighting
- Complementary colors at similar brightness — high chroma, low luminance contrast
Test your contrast ratio with any WCAG contrast checker before committing to a color scheme.
The quiet zone
Every QR code specification mandates a quiet zone — a blank border surrounding the code on all four sides. The ISO/IEC 18004 standard requires this border to be at least 4 modules wide (some older scanners require 5).
The quiet zone tells the scanner where the code ends and the surrounding design begins. Without it, the scanner may fail to locate the finder patterns (the three large squares in three corners) or may misidentify surrounding artwork as part of the code.
The quiet zone violation that logo projects most often cause is not the logo itself — it is the container. Designers crop the exported QR code tightly, add a logo, and then place the whole thing flush against a colored background or inside a box with no margin. The result: zero quiet zone.
Make sure your QR export includes the quiet zone, or add it manually: 4× the module size on every side, in the same color as the QR background (typically white). If your QR code's modules are 3 px each, the quiet zone needs to be at least 12 px on every edge.
Minimum print and screen sizes
A QR code's physical size determines whether a camera can resolve individual modules. Below a certain size, the modules become smaller than the camera sensor can distinguish at a typical scanning distance.
Screen display
For a QR code displayed on a screen that users will scan by holding their phone roughly 30–60 cm away: 150 × 150 px is the practical minimum on a standard-density display. On high-DPI screens (most modern phones and monitors) this translates to 300–450 physical pixels, which is plenty. Below 150 CSS pixels, some scanners struggle, especially with high-error-correction or data-dense codes.
Print — standard
For printed materials at 300 DPI (brochures, business cards, packaging): minimum 2 × 2 cm. At 300 DPI, 2 cm equals roughly 236 pixels — enough resolution for a clean code without a logo. This is the floor, not the target; 3 × 3 cm is more comfortable.
Print — with logo
Embedding a logo increases code complexity because higher error correction adds more modules. More modules in the same physical space means each module is smaller, which is harder to scan. The minimum for a logo-embedded QR code at 300 DPI is 3 × 3 cm. For codes with dense data (long URLs, vCard data), 4 × 4 cm is safer. When in doubt, go larger — there is no downside to a bigger QR code.
Large format and outdoor
For signage, posters, or billboards, the minimum size scales with viewing distance. The rule of thumb: the QR code should be at least 10% of the expected scanning distance.
- Scanning from 1 m → minimum 10 cm × 10 cm
- Scanning from 2 m → minimum 20 cm × 20 cm
- Scanning from 5 m → minimum 50 cm × 50 cm
Note that most phone cameras struggle to focus on flat surfaces beyond 3–4 m, so codes intended for long-distance scanning need to be exceptionally clean, high-contrast, and free of any logo or visual complexity.
Color choices that scan reliably
The safest and most universally supported configuration is black modules on a white background. Every scanner on every device handles this combination without issue.
Inverted (light on dark)
Light modules on a dark background — sometimes called an "inverted" or "negative" QR code — works in principle, but not all scanner implementations handle it equally. iOS's native camera scanner copes with inverted codes since iOS 11. Many third-party apps and older Android implementations do not. If your audience is broad and uncontrolled (a bus shelter poster, packaging in a retail store), stick with dark on light.
Avoid blue-heavy dark backgrounds
Smartphone cameras use IR cut filters to improve color accuracy in daylight, but the IR sensitivity profile varies by sensor. Deep blue backgrounds — navy, royal blue, indigo — absorb near-IR light differently than they absorb visible light. A module pattern that appears high-contrast to the human eye may be low-contrast to the camera sensor. Avoid using dark blue as the QR background color. Dark green, dark brown, or dark charcoal are safer alternatives if you need a non-black module color.
Colored modules
Using a brand color (dark red, deep green, dark purple) for the modules is acceptable as long as contrast against the background is at least 4:1. Run the combination through a contrast checker. Gradient fills on modules — where a single module transitions from one color to another — reduce effective contrast at the edges and should be avoided.
Preparing your logo file
The format and design of the logo itself has a significant impact on scanning reliability.
Use SVG when possible
SVG logos are resolution-independent and render crisply at any export size. When QRonimo composites your logo onto the QR canvas, an SVG source means the logo stays sharp even at large output sizes. A low-resolution PNG logo will appear blurry at 2× or 3× export scales — which affects the visual quality of the final code even if it does not break scanning.
Avoid gradients and drop shadows in the logo
Gradients in the logo create mid-grey transition zones near the logo's edges. Those grey pixels overlap adjacent QR modules, reducing the effective contrast of those modules below the scanner's detection threshold. The scanner can no longer tell whether a particular pixel belongs to a module or to the logo edge. Use flat, solid-color artwork for the logo that will sit inside a QR code.
Drop shadows, glow effects, and outer strokes cause the same problem — they create soft, semi-transparent halos that bleed into surrounding modules. Strip all layer effects before exporting the logo file intended for QR embedding.
Shape: round or square fits best
QR code centers are square. A logo in a circular container (circle crop or circular background) wastes corner space but avoids visually clashing with the grid. A square logo with a solid background fills the space cleanly. Wide rectangular logos (e.g., a horizontal wordmark) are problematic: to stay within the 20–25% area budget, you either have to make them very small (hard to read) or accept that they extend into more rows of modules than a square would, reducing scanability. For QR embedding specifically, prefer a logo that is roughly 1:1 aspect ratio — the icon or symbol mark, not the full horizontal wordmark.
Include a solid background behind the logo
As discussed in the contrast section: always add a solid white (or light) background fill behind the logo artwork, with a few pixels of padding between the logo edge and the nearest QR module. This padding acts as a visual quiet zone specifically for the logo and prevents the logo's edge pixels from merging with module edges.
Testing before you commit to print
On-screen preview is not sufficient. A code that scans perfectly on a calibrated monitor can fail on a matte-coated business card stock. Test physically and test adversarially.
Test on an actual print
Print a proof at the intended size before ordering a full run. The ink absorption of different paper stocks — coated vs. uncoated, matte vs. gloss — changes the effective contrast of the modules. Laser print vs. offset print vs. digital print all render fine detail differently. Scan the physical proof, not a photo of it.
Test under bad lighting
Scan the printed code under fluorescent office lighting, in a dim restaurant, in direct sunlight, and under incandescent light. Sunlight glare on glossy paper is particularly hostile. If the code fails under any of these conditions, increase the code size or increase contrast before printing.
Test at angles
Scan from a 30° and 45° angle. QR codes are designed to be perspective-corrected by the decoder, but a logo reduces the amount of reference data available. A code with a large logo that scans fine head-on may fail at common real-world angles (a poster on a wall, a QR code on a product that is not facing you directly).
Test on multiple devices
iOS Camera, Google Lens, and at least one third-party QR scanner app. Each uses a slightly different decoder implementation. If your code fails on any of them, it will fail on some percentage of your audience's phones in the real world.
Do not trust on-screen preview alone
Screens display QR codes at a higher effective contrast than paper. A code that looks sharp on screen and scans instantly on a monitor can fail on paper. The preview in QRonimo lets you verify the visual composition and logo size — but always follow up with a physical print test before finalizing a design for production.
Common mistakes to avoid
Most logo QR failures come down to a handful of recurring errors. Here is what to watch for:
- Logo too large
- Covering more than 25–30% of the module area pushes past what error correction can recover. The code looks fine until it hits a real-world scanner, then fails intermittently — the hardest kind of failure to diagnose because it does not fail every time.
- Using error-correction level L with a logo
- Level L can only recover 7% damage. A logo easily covers more than that. This combination guarantees scanning failure. Always use level H for any QR code that will carry a logo. See our error correction guide for a full explanation of what each level means.
- Low-contrast color combinations
- Colors that look good together in brand guidelines do not always produce sufficient luminance contrast for a QR scanner. Check every color combination against a WCAG contrast tool before treating it as production-ready.
- Logo with transparent background on a non-white surface
- The transparent area adopts the background color of whatever surface the QR code sits on. On any non-white background this creates a large dark region inside the code that completely confuses the decoder.
- Drop shadows, glows, and gradients on the logo
- These effects bleed semi-transparent pixels into surrounding modules, lowering their contrast and making them ambiguous to the scanner.
- Forgetting the quiet zone
- Cropping the QR code tightly or placing it flush against a border eliminates the mandatory 4-module blank border. The scanner cannot locate the finder patterns without it.
- Logo bleeding into the finder patterns
- The three large squares in the corners are how the scanner orients and locates the code. If the logo is off-center or the code is too small and the logo too large, logo edges can encroach on these finder patterns. Finder pattern damage is especially hard to recover from — unlike data modules, these patterns have no redundant equivalent elsewhere in the code.
- Only testing on-screen
- As covered above, screen contrast is higher and more consistent than print. Physical print tests under real-world lighting are mandatory before finalizing any print production job.
Ready to create your QR code with logo?
QRonimo generates QR codes entirely in your browser — no data ever reaches our servers. Upload your logo, choose error-correction level H, and preview the result before downloading a high-resolution PNG or SVG for print.
Create a QR Code with Logo →