The middle is not empty
QR codes use Reed-Solomon error correction: the message is stored with redundant information spread across the whole pattern, so a scanner can reconstruct it from a partial read. That is why a scuffed code still works, and it is the same mechanism a logo relies on.
So a centre logo is not decoration in a blank area. It is deliberate damage, paid for out of a fixed repair allowance. The question is never “can I add a logo”, it is “how much of the allowance is left afterwards”.
The budget, and why you should not spend it all
The four correction levels recover roughly 7% (L), 15% (M), 25% (Q) and 30% (H) of the code. Designers read that as “H means I can cover 30%”, and that is the mistake.
That percentage is the total damage the code can absorb, from every source at once: the logo, plus ink spread on absorbent card, plus a fold, plus glare on a gloss finish, plus a scanner reading at an angle in bad light. Spend the whole budget on the logo and the first scuff takes the code below the line. A practical limit is to keep a centre logo under about a fifth of the area even at H, and leave the rest for reality.
The other cost is size. Higher correction stores more redundant data, which means more modules, which means each module is physically smaller at the same printed size. On packaging, where you may only have two centimetres, a logo at H can push the pattern past what the printing process can hold. Fewer characters in the encoded URL buys that space back, which is a quiet argument for a short redirect link over a long tracked URL.
Why the corners are off limits
The three large squares in the corners are finder patterns. A scanner uses them to detect that a QR code exists at all and to work out its orientation and perspective. Smaller alignment patterns help it correct for the code being photographed at an angle or on a curve.
None of that is error-corrected data. Cover a finder pattern and the scanner does not repair the damage, it fails to recognise a code in the first place. This is why a logo placed in a corner “to keep the middle clean” is far riskier than one in the centre, and it is worth saying out loud to whoever is doing the layout.
Colour, contrast and the quiet zone
Colour is fine; low contrast is not. A scanner separates dark modules from a light background, so a brand mid-tone on another mid-tone can look elegant on screen and fail on a shelf. Inverted codes, light modules on dark, are not read reliably by every scanner app, so treat them as a deliberate risk rather than a style choice.
Keep the quiet zone: about four modules of clear space on all four sides. Layouts crowd it constantly, and a code with a border touching it fails intermittently, which is the worst failure mode because nobody reports it and you never find out.
Test it the way it will be used
Scanning the artwork on your monitor proves almost nothing: a bright backlit screen at 20cm is the easiest condition a QR code will ever face. Print it at final size, on the real material, and scan it with an old cheap phone, at an angle, under shop lighting.
Do that before the logo is signed off, not after the run is approved. If the code is dynamic you can at least fix a wrong destination later; you cannot fix a pattern that was too damaged to read.
One thing a logo does not give you
A branded code looks trustworthy, and that is exactly why it is not evidence. A QR code is unreadable to a human either way, so a logo is a claim about the destination that the reader cannot check. Placing a sticker over a real code in public works for the same reason.
Nothing to do about it in the artwork, but worth knowing when deciding how much to lean on a branded code as a trust signal for the person scanning it.