Every branded QR code with a logo in the middle is a broken QR code that happens to work. The logo sits on top of real data. The phone reads what is left, notices the gaps, and rebuilds the missing pieces from spare information stored elsewhere in the symbol. That spare information is error correction, and it is finite.
So the question is not whether you can add a logo. You can. The question is how much of the safety margin you are willing to spend on it, and what will be left when the code meets a gloss laminate, a dim pub, and a phone with a smeared lens.
How error correction makes room for a logo
A QR code stores its message as a sequence of 8-bit codewords. Alongside the data, it stores extra Reed–Solomon codewords that let a reader detect and repair damage. The QR specification defines four levels, each trading capacity for resilience:
- L recovers roughly 7% of codewords.
- M recovers roughly 15%.
- Q recovers roughly 25%.
- H recovers roughly 30%.
Those percentages are about codewords, not square millimetres. A codeword is spread across a small cluster of modules, so a logo that only nicks the edge of a cluster still costs the whole codeword. In practice a solid block over the centre damages a little more than its area suggests.
The bigger point: that budget is shared. The logo draws on it, and so does everything else that goes wrong at the moment of scanning. Reflections from overhead lights, a crease in a leaflet, ink spread on uncoated stock, a slight angle, motion blur. If the logo has already used 25 of the 30 points, a stripe of glare finishes the job.
Treat the logo as a planned expense from the damage budget. At level H, aim for a logo that hides under 10% of the symbol and never more than about 15–20%. The rest is for the conditions you cannot control.
How big the logo can safely be
Width and area are easy to confuse. A logo 30% as wide as the code covers only 9% of its area (0.3 × 0.3). A logo half the width covers 25%, which is almost the whole H budget before a single real-world problem appears. That is why half-width logos photograph well in mock-ups and then fail on the till.
| Level | Recovers roughly | Safe logo width | When to use |
|---|---|---|---|
| L | 7% of codewords | No logo | Short links on screens, tiny prints where every module counts |
| M | 15% | None, or a very small mark under 15% of width | The default for most plain printed codes |
| Q | 25% | Up to about 20% of width | Small icon, or harsh surfaces such as packaging and outdoor signs |
| H | 30% | About 20–25% of width, 30% as a ceiling | Any code with a centre logo |
On a 40 mm code, a 25% logo is 10 mm across. That is enough for a recognisable mark: the initial of a salon, a coffee cup, the crest of a rugby club. It is not enough for a wordmark with a strapline, and it should not try to be.
The QRFree generator handles the first part for you. When you add a centre logo, it switches error correction to H automatically and sizes the image conservatively, so the area it hides is a fraction of what H can recover. It also removes the dots behind the logo rather than drawing the image over them. You still need to supply a sensible image and test the result.
The parts of the code you must never cover
Error correction repairs data. It does not repair the structure the phone uses to find and orient the data. Cover any of these and the code can fail outright, however much H you have.
- Finder patterns. The three large squares in the corners. They tell the camera where the symbol is, how big it is, and which way up. No logo, sticker, or rounded-off flourish belongs on them.
- Format information. Thin strips of modules running beside the finder patterns. They record the error correction level and mask pattern. Without them the reader does not know how to decode anything else.
- Timing patterns. Alternating dark and light lines connecting the finders along row and column six. They set the grid spacing.
- Alignment patterns. Smaller squares that appear from version 2 upwards, helping the reader correct for curve and perspective. From version 7, one sits in the middle of the symbol.
- Version information. Two small blocks near the top-right and bottom-left finders on version 7 and above.
- The quiet zone. The blank margin around the whole code. A logo hanging off the edge, or a frame pressed against the modules, is as bad as covering a finder.
This is why logos go in the centre. It is mostly ordinary data, well away from the finders and format strips. On larger symbols (version 7 and up) the centre alignment pattern will sit under the logo. Most phones cope, because they can infer the grid from the finders and the remaining alignment patterns, but it is another reason to keep the logo small and the data short.
Knock out the modules, then pad the logo
There are two ways to put a logo on a code. One is to paste the image over the top and let it cover whatever is underneath. The other is to clear a clean space in the middle and place the logo inside it.
Clearing the space is better. When an image is pasted over modules, fragments of dots peek out around the edges and through transparent areas of the logo. The reader sees half-modules and misreads them, which is worse than seeing a clean gap. A clean gap is an erasure. A half-visible module is a wrong answer.
Then give the logo room to breathe. Leave at least one module of empty space between the edge of the logo and the nearest dot. If the logo is a dark circle and the modules are dark squares, a logo pressed hard against them blurs into the pattern and the reader cannot tell where the data ends. A white pad around a dark logo, or a light pad around a coloured one, keeps the boundary obvious.
Contrast rules for the logo and the code
The code itself follows the usual rules in the design guide: dark modules on a light background, strong contrast, no inverting. Adding a logo does not relax any of them. A few logo-specific points:
- Keep the modules dark. It is tempting to recolour the whole code in the brand colour to match the logo. A deep navy or forest green works. A pale yellow, sky blue, or pastel pink does not.
- Do not let the logo colour match the module colour at the edge. A black logo on a black-module code with no pad reads as one blob.
- Watch transparent backgrounds. A transparent PNG logo on a transparent code can end up sitting on a busy photo when placed in the layout. Give the code a solid light background.
- No gradients across the modules. A gradient from brand purple to pale lilac can leave the light end with too little contrast for an older phone.
Simple flat logos beat detailed photos
At 10 mm, detail is noise. A flat mark with one or two colours and bold shapes survives. A photograph of the shopfront, a wordmark in a thin serif, or a gradient badge with a tagline becomes a smudge. The phone does not care what the logo looks like, but the customer does, and a smudge in the middle of a code looks like a printing error.
Use the simplest version of your brand: the favicon, the app icon, the monogram. Export it as a square PNG or SVG with a little built-in padding. If the full logo is wide, such as a long wordmark, crop to the symbol. A wide logo either becomes illegibly small to fit the square or spills sideways over data.
The cost: denser codes need more paper
Higher error correction is not free. Those recovery codewords take up room, so the same message needs a bigger symbol at H than at L. The symbol gets more modules, and at the same printed width each module gets smaller.
A worked example. A 60-character URL, say https://salon.example/book?utm_source=card&utm_medium=qr, fits version 4 at level L: 33 modules across. At level H the same URL needs version 7: 45 modules, plus the version information blocks and six alignment patterns. Add a 4-module quiet zone on each side and print both at 25 mm:
L: 25 ÷ 41 = 0.61 mm per module. H: 25 ÷ 53 = 0.47 mm per module.
The H version is still above the 0.4 mm floor, just. Then remember the logo is hiding some of those smaller modules, and the margin has gone. If you are adding a logo, either shorten the URL or print larger. The print size guide has the distance chart and the module check.
When to skip the logo entirely
Some jobs do not have the budget for a logo. Leave it out when:
- The code is on a business card. At around 20 mm, there is no room. The business card sizing guide explains why.
- The packaging is small. A jar lid, a sachet, a swing tag. The surface is often curved or textured too, which eats into the same budget. See QR codes on product packaging.
- The URL is long. If the code is already version 8 or 10 because of tracking parameters, shorten the link first. A short path on your own domain helps more than any logo hurts.
- It is a vCard. Contact cards carry a lot of text, so the symbol is already dense. A logo on top of a vCard QR code is a common reason they fail.
- It is a Wi-Fi code. Wi-Fi payloads with long passwords are dense, and the guest already knows whose network it is. Keep the Wi-Fi code plain and put your branding on the card around it.
Branding without covering the code
The goal of a logo is usually recognition and trust: this code belongs to the café you are sitting in, not a sticker someone has slapped over the top. You can get most of that without touching the modules.
- Logo beside the code. Put the mark to the left or above, outside the quiet zone. It reads at full size and costs the symbol nothing.
- A branded frame. A coloured panel with the code on a white square inside, and your name along the top. Keep the frame at least four modules away from the outer modules.
- A coloured call to action. “Scan for today’s specials” in the brand colour, under the code, does more for scans than a logo does. People scan for a reason, not a crest.
- Brand colour on the modules. A dark brand colour on a white background, with no logo, is often enough to make a code feel like yours.
Testing checklist
A logo code that scans on the designer’s monitor proves very little. Test the printed piece.
- Error correction is set to H (the generator does this automatically when a logo is added).
- The logo is no more than about 25–30% of the code’s width, and simple enough to read at that size.
- Finder patterns, the strips beside them, and the quiet zone are completely clear.
- Modules behind the logo are removed, not covered, and there is at least one module of padding around it.
- Modules are dark on a light background, with no pale brand colours or gradients.
- Module size at the final print width is at least 0.4 mm.
- A proof printed at 100% on the real stock scans on an iPhone and an Android, including one older phone.
- It scans from the real distance, at a slight angle, and in the worst light the venue has.
- It still scans after you lay a strip of tape across one edge of the data area, as a rough check for remaining margin.
- The destination opens correctly, not just “a page”.
Frequently asked questions
How big can a logo be in a QR code?
With error correction set to H, a logo about 20–25% of the symbol width is comfortable, and around 30% is a sensible ceiling. That covers well under 10% of the area and leaves most of the recovery budget for glare, blur, and print wear.
Which error correction level should I use with a logo?
H, which can recover roughly 30% of the codewords. Q (about 25%) can carry a small mark. M and L leave too little margin for anything but a tiny logo. QRFree switches to H automatically when you add a centre logo.
Does a logo make a QR code harder to scan?
It always costs something. The logo hides data, and the higher error correction needed to cover it makes the symbol denser, so each module is smaller at the same print size. A modest logo on a code printed large enough scans fine. A big logo on a small code does not.
Can I put the logo in a corner instead of the middle?
No. The three corner squares are finder patterns, and the strips beside them carry format information. Covering them stops the phone locating or reading the code. The centre is used because it holds ordinary data that error correction can rebuild.
Should I put a logo on a business card QR code?
Usually not. A business card code is about 20 mm wide, and a vCard is already a dense payload. Adding a logo pushes the modules below a safe size. Put the logo elsewhere on the card and keep the code plain.
Related: design rules that survive the printer, how big to print a QR code, and what to check when a QR code will not scan. You can also generate one directly with our free QR code with logo generator or download a vector file with the SVG QR code generator.
Add the logo. Keep the margin.
Upload a simple mark, let the generator switch to H and clear the space behind it, then export a print-ready SVG. Your logo never leaves your browser.
Create branded QR code