Branded QR codes look great and often perform worse than plain black-and-white ones, not because branding is inherently risky, but because most of the ways people brand a code quietly reduce the contrast a scanner relies on. Knowing where the real limits are lets you keep a code on-brand without gambling on whether it will scan.
Contrast is the only rule that actually matters
A scanner does not care about your colour palette. It cares about being able to tell, module by module, whether a square is meaningfully darker or lighter than its neighbours. Two colours that look distinct to a human eye, like a mid-tone blue and a mid-tone purple, can look nearly identical in the greyscale a camera sensor effectively reduces everything to. The safest colour pairings keep one side genuinely dark and the other genuinely light, rather than two colours of similar brightness.
A simple gut check: convert your intended dark colour and your background to greyscale in any image editor. If they look close together in that greyscale version, a scanner will likely struggle too, especially under poor lighting or on an older phone camera.
Where you can safely add a logo
QR codes are built with error correction, meaning they can still be read even if a portion of the grid is damaged, covered or missing. This is what makes a small centre logo possible at all. As a general guideline, covering more than about 15 to 20 percent of the total code area starts to risk pushing past what error correction can recover, especially for longer messages that already use a denser grid.
- Keep a logo centred and modestly sized, rather than large or off to one side.
- Leave a small clear margin, sometimes called a quiet zone, around the logo so it does not blur into the surrounding modules.
- Test with a shorter message where possible, since shorter messages leave more spare error correction capacity for the logo to borrow against.
The corners are not optional
The three larger square markers in the corners of a QR code are what a scanner uses to find the code and work out its orientation before it even starts reading the data inside. Covering, recolouring dramatically, or replacing these markers with custom art is one of the most common reasons a beautifully designed code fails to scan at all. If you want the corners to feel branded, a subtle colour shift that preserves strong contrast against the background is far safer than reshaping or obscuring them.
Test at the size you will actually use
A code that scans perfectly on a laptop screen can fail on a printed flyer the size of a business card, simply because there are fewer physical pixels of camera resolution available to resolve small modules. Whenever possible, print or display a code at its real intended size and test it with a few different phones before finalising a design, rather than trusting a test done only at a large, easy-to-scan size on screen.