How to brand a QR code without breaking it.
Last updated
6 min readIn short
You can change the colour of the finder eyes and modules, the dot shape and the background, and keep four things intact: dark modules at about 4 to 1 or better against a light ground, a quiet zone of 4 modules, any centre logo under about 18 to 20 percent of the width, and a high error correction level. Encode a short link you control so the destination can change after printing.
What a scanner needs from your design.
A phone does four things to read a QR code. It finds the three large squares in the corners, called finder patterns or eyes. It separates dark modules from light ones by brightness. It reads the grid inside a clear margin. And it repairs the modules it could not read, using the error correction built into the code. Branding is safe as long as each of those four steps still works.
That gives you a test for any change. Does it hide the eyes, shrink the brightness difference, crowd the margin or damage more modules than the correction can repair? If the answer to any is yes, do not do it.
What you can change, and what each change risks.
| Change | Risk | Condition for keeping it safe |
|---|---|---|
| Finder eye colour | Low | Dark enough against the ground, see the contrast rule below |
| Dark module colour | Low | Same contrast rule, one dark colour for all modules |
| Rounded dots instead of squares | Low to medium | Dots close to the full module width, so the grid still reads, with level Q or H |
| Light background tile | Low | Plain, with the full quiet zone around the code |
| Frame and call to action | Low | Entirely outside the quiet zone |
| Centre logo | Medium to high | Up to about 18 to 20% of the width, level H, modules under it cleared, tested on a printed proof |
| Gradient across the modules | Medium | The lightest part still meets the contrast rule |
| Inverted code, light on dark | High | Only if you can test on every scanner that matters to you |
| Thin or round shapes that merge or detach | High | Avoid: merged dots lose the grid |
| Photo or pattern behind the code | High | Avoid |
| Smaller quiet zone | High | Avoid: keep 4 modules |
On the logo: 18% of the width is 0.18 squared, about 3% of the code's area, and 20% is 4%. At level H a scanner can repair about 30% of the code, so there is headroom. Do not spend all of it on a logo, because scuffs, glare and ink spread need the same margin. The figures are a working limit, not a guarantee. The size guide explains the quiet zone and error correction levels.
Use a contrast rule, then measure it.
A rule of thumb works well: keep the dark modules at least 4 to 1 against the light ground, using the contrast ratio formula from the Web Content Accessibility Guidelines. This is a working rule, not part of the QR standard. The web guidelines ask 4.5 to 1 for text, so 4 to 1 is deliberately close to that. Darker is always safer.
| Colour | Hex | Ratio | Verdict |
|---|---|---|---|
| Deep navy | #14213D | 16.0 to 1 | Safe for modules and eyes |
| Blue | #1F4E8C | 8.3 to 1 | Safe |
| Teal | #005F73 | 7.3 to 1 | Safe |
| Green | #2E7D4F | 5.0 to 1 | Safe |
| Bright teal | #0E8A8A | 4.2 to 1 | Just passes, use for the eyes only |
| Grey blue | #7A869A | 3.7 to 1 | Fails |
| Amber | #E8A317 | 2.2 to 1 | Fails |
| Mint | #51E071 | 1.7 to 1 | Fails |
If your brand colour fails, do not lighten the ground. Use a deeper shade of the same hue for the code. Then convert your proof to greyscale. If the eyes and modules become hard to tell from the ground, a scanner will struggle too. Print lowers contrast further, since ink spreads and paper is not pure white, so a colour that only just clears 4 to 1 on screen has no margin left.
4 : 1
minimum contrast to keep between dark modules and the light ground, a working rule and not part of the QR standard
Work in this order.
- Step 1.
Pick the address first. Decide where the code should lead, and be sure that page will exist for as long as the print does.
- Step 2.
Shorten it with a short link on a domain you control. A shorter address gives bigger modules, as the size guide shows.
- Step 3.
Choose two colours from your brand guideline: one dark colour for the modules and one accent for the eyes. Check both against the contrast rule.
- Step 4.
Generate at error correction level Q or H, with the full quiet zone.
- Step 5.
Print a proof on the real stock and run the pre-print test from the size guide on two phones.
- Step 6.
Freeze the design. Write it into the brand guideline, name the file and print.
Do the steps in that order. Teams that style first and shorten later end up with a styled code for a long address, and then have to redo the proof.
Static or dynamic: choose a destination you can change.
A static code encodes the final address. It never expires, and it can never be changed. If the page moves, every printed copy of the code is dead. A dynamic code encodes a short address that redirects to the destination, and you can edit the destination later. The two look the same.
Never print a code whose destination you cannot change. Put a short link on a domain you control behind it, so a moved landing page, a corrected campaign tag or a finished event does not mean a reprint. Two cautions. If the redirect lives on a service you rent, the code stops working when the service does, so check what happens when a subscription ends. And do not rename the key after printing, because the key is part of the encoded address.
Write the QR code into your brand guideline.
Teams that print at several shows end up with five different QR codes. One guideline entry stops that. Copy this table into yours and replace the example column.
| Item | Example entry |
|---|---|
| Module colour | #14213D, one colour for all modules |
| Eye colour | #1F4E8C, never below 4 to 1 on the ground |
| Dot shape | Rounded dots at almost the full module width |
| Ground | White tile, no pattern behind it |
| Quiet zone | 4 modules, nothing printed inside it |
| Error correction | Level H |
| Centre logo | None, or up to 18% of the width after a proof test |
| Address | Short link on go.yourcompany.com, one key per placement |
| Minimum size | Scanning distance divided by 10, never under 2 cm |
| Sign-off | Name and date of the last proof test on two phones |
What not to do.
- Caution: Do not print a code before you have scanned the proof on two phones.
- Caution: Do not put a large logo, a photo or a pattern over the modules.
- Caution: Do not use a light colour for the modules because it matches the brand.
- Caution: Do not invert the code on a dark background unless you have tested it.
- Caution: Do not encode a long address with tracking parameters. Encode a short link and put the parameters behind it.
- Caution: Do not use one code for every placement. Give each placement its own code so you can compare them.
- Caution: Do not reuse an old file for a new size. Export the vector file again.

Quick answers.
Can I put a logo in the middle of a QR code?
Yes, if the code uses a high error correction level such as H, the logo covers no more than about 18 to 20 percent of the width, and you test the printed proof. A larger logo, or a logo on a code with a long address, risks failure.
What colour should a QR code be?
Any dark colour with a contrast ratio of at least about 4 to 1 against a light background, as a working rule. Deep navy, dark green and black are safe. Light colours such as yellow, amber or mint fail.
Can I change where a printed QR code points?
Only if it encodes a short link or another redirect that you control. A static code that encodes the final address cannot be changed after printing.
Does a branded QR code scan on older phones?
A code that follows these rules scans like a plain one, but older cameras have less margin. Test the printed proof on an older phone before you approve the run.