Logo placement in QR codes — how big can it actually be
Logo placement in QR codes lives or dies on three numbers — error correction, percent of total area, and how far the logo sits from centre. Here's the math.
A centre logo on a QR code is the single biggest "this is ours" cue a brand can drop on a piece of printed media. It's also the thing most likely to silently brick the code somewhere between the proof and the print run. The marketing copy says "QR codes have error correction, you can put a logo in the middle." The engineering reality is that error correction is a budget, the logo spends it, and the size you can get away with depends on three numbers most generators won't show you.
This post is the math. How big can a logo on a QR code actually be, where to put it, and what the print conditions do to the safe ceiling. By the end you should be able to look at a QR mock-up with a logo in the centre and know whether it will still scan after the printer runs the job — without scanning thirty test copies.
How big can a logo on a QR code actually be
The single most asked question about branded QRs has a misleading short answer. The honest answer is a number divided by a worst-case multiplier.
The number is the error correction percentage of the level you've chosen: 7% at L, 15% at M, 25% at Q, 30% at H. Those are the maximum modules the Reed-Solomon decoder can recover if the logo is the only thing damaging the code. The worst-case multiplier is the headroom you need for everything else that goes wrong: print drift, fingerprints, partial shadow, the bus shelter the poster is glued to, a slightly off-angle camera. The factor most studios use in production work — and the one the free QR code generator bakes into its size warnings — is 0.65 to 0.75. You spend two thirds of the budget on the logo and reserve the rest for the world.
Multiply it out and you get the practical ceilings for a centred logo:
- Level L (7% redundancy): roughly 4–5% of the QR area. A dot, not a logo.
- Level M (15%): roughly 9–10%. A small icon, no text.
- Level Q (25%): roughly 14–17%. A typical logomark with breathing room.
- Level H (30%): roughly 18–22%. A logomark with text underneath, or a chunky monogram.
Most public articles tell you "logo up to 30% works at level H". Lab conditions, yes. The flyer printed on uncoated stock in a Riga winter, no. The numbers above are the ones that survive real conditions, and they're the ones the scanability score flags against before you export a file.
What "percent of QR area" actually means
A trap that catches a lot of agency teams: the logo's bounding box and the logo's covered modules are not the same number. The decoder cares about modules. The designer measures pixels. They diverge in two ways that bite at print.
A logo with a soft halo, drop shadow, or anti-aliased edge corrupts more modules than the rectangular bounding box suggests. The fading edge doesn't fully erase the modules underneath; it leaves them as mid-grey ghosts the decoder can't classify as either dark or light. The fix is a hard opaque silhouette with a small white "clear-space" ring around it. The clear ring acts as a known-light area the decoder can use as a contrast reference instead of guessing at half-burned modules. The docs on branding walk through the clear-space conventions that ship with the platform's QR designer.
A logo on a transparent background — common with vector exports — also corrupts more area than the silhouette implies. The modules show through the transparency, but at print scale they read as broken patterns rather than data. Black modules and white modules behind a transparent logo become a noisy field that scans worse than either pure logo or pure modules. Always flatten to an opaque background before measuring coverage. If your client insists on a "floating" logo with no white halo, render it on a perfectly matched solid colour matched to the QR's light modules and accept that you've effectively merged the logo with the light cells.
A third effect, less obvious: a circular logo at 20% area covers fewer corner modules than a square logo at 20% area, because the corners of the bounding box stay clear. Round logo silhouettes give you 5–10% more "safe coverage" than rectangular ones at the same percent-area number. If you have a circular mark already, use it. If your mark is square but you can afford a small frame around it, round the frame. The platform side of this — how the designer measures logo area against the encoded grid — is documented in the QR codes platform docs. If the QR underneath the logo is also using round modules, the practical ceiling shrinks by roughly a third on top of the numbers above — the round-QR-with-logo centre size math recalculates the budget by level.
The off-centre trick
The default place to put a logo is dead centre. That's also the most expensive place to put it. The middle of the QR is where the densest data-carrying modules live, and where the timing patterns — the alternating rows and columns that calibrate the decoder's grid — pass through. Stamping a logo on top of those particular modules costs the decoder more recovery work than stamping it elsewhere.
There's a workaround that almost nobody uses: shift the logo off the geometric centre by a quarter of the QR's width. The result is a logo positioned slightly above-and-to-the-side of centre, which still reads as "in the middle" to the human eye but lands on data-carrying modules that are statistically less load-bearing for decoder convergence.
The math: the three finder patterns in the corners and the alignment pattern in the lower-right do most of the decoder's lock-on work. The closer your logo is to those patterns, the worse. The further away, the better. Dead centre is the maximum distance from all four anchors, but it's also where the timing rows cross. Shifting up-and-left by ~25% of the QR width keeps you far from the corners and avoids the dead-centre timing crossing simultaneously.
The trick saves you about 3–4% of module-coverage budget for the same visible logo size. A logo at 20% area positioned dead centre uses about the same effective error-correction headroom as the same logo at 16–17% positioned off-centre. That headroom is what lets you push the logo to 22–23% at level H without crossing into the danger zone. The platform's QR designer surfaces this as the "logo position" control, and the docs on branding cover when to reach for it.
Don't go aggressive. The off-centre logo still has to read as "in the middle" — humans are sensitive to off-axis composition and will read a logo shifted by more than 30% as a layout mistake. The 25% shift is the sweet spot: visibly central, decoder-friendly. Anything beyond and you've stopped doing decoder optimisation and started doing graphic design that looks broken.
The interactive sizer
Logo-on-QR sizer
Set the level, the print conditions and the logo shape. The sizer returns the maximum percent-of-area you can give the logo and the minimum print size you need to back it up.
The sizer is the recipe for sanity. The numbers shift in real time so you can see what trade-offs survive your specific conditions. The reason most online "QR with logo" generators ship codes that don't scan isn't the maths being wrong — it's the maths being abstracted away. When you can see a 22% logo at level Q drop to "tight, tiny logo only" the moment you switch from clean print to outdoor, the right answer becomes obvious.
Want the sizer baked into a designer that won't let you ship a code below the safe ceiling?
Grab the lifetime tierWhat print conditions do to the safe ceiling
Three failure modes drop the safe ceiling faster than the spec suggests.
Uncoated stock. Newsprint, recycled cardboard, kraft paper. Ink soaks into the fibre, which softens module boundaries by 5–10% on the printed result. A logo at 22% on glossy coated paper at level H is fine. The same logo on uncoated kraft is on the edge. Either drop the logo by 4–5 percentage points or bump the level — preferably both. Print-on-fabric is similar but worse; merchandise codes need a 6–8 point buffer because thread weave eats module edges, and the print-method-by-print-method breakdown for QR codes on T-shirts lays out how much further you have to drop the logo ceiling for DTG vs screen vs vinyl-transfer vs embroidery before the code survives a year of wash.
Distance scanning. A poster at 2m read distance has half the angular resolution of a flyer at 30cm. The decoder has fewer pixels per module to work with, and that pushes the marginal-recoverable cases over the edge. For posters scanned from across a room, drop the logo size by ~3 percentage points from the indoor-flyer ceiling. For billboards scanned from a car, the right answer is usually no logo at all — the QR has to work as raw data first; branding belongs in the surrounding artwork. The full physics is in the minimum QR code size math for print.
Phone diversity. A flagship iPhone with PDAF autofocus reads codes that a five-year-old budget Android can't. If your audience includes older phones (industrial workers, retail customers in lower-income markets, anyone in tourism where international travellers carry whatever they had two years ago), drop the logo size by another 2–3 percentage points to give the older cameras time to lock on without losing the data.
The error correction percentage is a budget. Logo coverage is one line item against it. Print drift, dirt, off-angle scans, and bad lighting are the other line items. Spend the whole budget on the logo and you've left nothing for the world.
Stack the worst-case modifiers and you get the hard floor: outdoor poster, kraft stock, mixed-phone audience, big logo. That combination should send you to level H and a logo ceiling no higher than 14%. Bigger than that and you'll have a 5–10% scan-failure rate in the wild — which sounds small until you realise that's hundreds of lost scans per thousand impressions, every one a wasted ad dollar.
The clear-space rule the spec doesn't actually require
A folk rule says "always put a white ring around the logo". The ISO 18004 spec doesn't require this. What it requires is that the QR's quiet zone (the four-module margin around the whole code) is preserved. The clear-space ring is a folk fix for the soft-edge problem covered earlier: a hard white ring around the logo gives the decoder a clean contrast reference and prevents the modules under the logo's halo from being ambiguous.
That said, the folk fix is a good fix. The ring doesn't cost you any extra modules — those modules under the logo are already lost to the logo's area. Adding the white ring just lets the decoder skip the area cleanly rather than trying to interpret half-burned greys. Most platform generators ship the ring by default for this reason, and the how-to-design-a-custom-QR-code recipe makes the ring a non-negotiable.
The ring is typically 1–2 modules wide at the QR's printed size. Wider rings look weird (the logo starts to feel like a sticker placed on top of the code). Narrower rings don't give the decoder enough margin. Two modules is the safe default.
A subtle related point: the ring should match the QR's light-module colour exactly. If you're using off-white modules for a slightly tinted brand-friendly look, the ring is off-white, not pure white. A pure-white ring on cream-light modules creates a visible halo around the logo that breaks the visual cohesion of the code.
Multiple logos and other ambitious experiments
Two questions come up more than they probably should. First: can you put two logos on a QR — one centred, one in a corner? Yes, mechanically, if their combined coverage stays under your level's safe ceiling. Practically, no. The brain reads "two logos" as "two brands", and a QR that announces two brands at once reads as a co-promotion rather than a single brand statement. If you need to signal two brands, put the partner logo elsewhere on the asset and leave the QR alone.
Second: can the logo replace a finder pattern? No. The three big squares in the corners are how the decoder finds the code at all — replacing one with a logo is a guaranteed scan failure even at level H. The round QR codes — what makes them work post covers this in the context of round modules; the rule is the same here. Logos go in the data area, never on the finder patterns.
Third, and the one we get asked monthly: can the logo be transparent so the modules show through it tinted? Mechanically yes — practically no. A 50%-opacity logo over the QR creates a region where every module is darker-than-light or lighter-than-dark by an unpredictable margin. The decoder treats it as noise, and at any decent print scale the code fails to scan more than half the time. If you want the logo to feel "blended", use a low-contrast brand colour for the logo itself, opaque, with the white clear-space ring around it. The blending happens at the perceptual level, not the encoding level.
When the QR doesn't need a logo
A logo on every QR is a tic. There are placements where no logo is the right answer.
Long-distance scans (billboards, vehicle wraps): the QR has to work as raw data first. The brand belongs in the surrounding artwork, not stamped on the code. QR codes for outdoor advertising covers the distance-vs-size physics that drives this.
Small print sizes (sticker labels under 20mm, business card insets): every module of data costs you. Spending 15% on a logo when each module is already at the resolution limit means an unreliable code. Better to skip the logo, win the scan, and let the surrounding card carry the branding. The cross-platform decision tree is in how to add a QR code to a website.
Repeated assets in a campaign (one QR shows up on a poster, a flyer, a social card): the consistency of the QR's appearance across assets matters less than the consistency of the brand identity around them. If the surrounding artwork is already branded coherently, the QR can stay neutral. The reader's eye reads the package, not the individual element.
Disposable use (one-time event signage, single-use tickets): a logo on a code that exists for 48 hours is wasted design effort. The packaging covers the brand recognition. The QR's job is to scan, full stop.
The pattern: a logo on the QR is a high-value design choice in cases where the QR is the dominant visual element on the asset and the scan distance is short. Everywhere else, leave the QR clean and put the design effort into the artwork around it.
What we ship on Linked.Codes
The QR designer caps logo overlay at 25% of area regardless of level, and warns past 20% on any level below H. Round logos count as smaller-coverage than their bounding box would suggest. The position control lets you offset the logo by up to 25% off-centre if you want the timing-pattern dodge described above. The white clear-space ring renders automatically at two modules wide, in the QR's light-module colour.
Error correction defaults to Q. The moment you upload a logo, the editor checks whether the combined logo coverage and EC level can survive the print conditions you've selected, and it nudges you toward H if not. Most of the time the nudge is right; occasionally you'll want to override it because you know the print conditions are friendlier than the default assumes (gallery wall, glossy paper, indoor only). The override is one click.
The point isn't to be paranoid. The point is to surface the trade-off you're actually making. A logo on a QR is a deal: visible brand presence for some chunk of the error-correction budget. The platform's job is to tell you what the deal is before you ship it.
FAQ
What's the biggest logo I can safely put on a QR code?
About 22% of the total code area, at error correction level H, on a hard-edged round logo with a 2-module white clear-space ring, on clean indoor print, scanned at arm's length. Stack any worse condition (outdoor, soft logo edges, older phones, longer scan distance) and the ceiling drops 3–5 percentage points each.
Does the logo position matter, or just its size?
Both. A logo dead-centre crosses the QR's timing patterns and costs more error-correction budget than the same logo offset by 25% of the QR width. The offset trick frees up about 3–4% of module-coverage budget for the same visible logo size. Most generators don't offer the position control; the ones that do usually call it "logo offset" or similar.
Can I put a logo on a level L or M QR code?
Technically yes, practically a small one. At level L the safe ceiling is 4–5% of the area — basically a small dot, not a logo. At level M you have 9–10% to play with, which fits a small icon but not a logomark with text. For anything bigger, switch to level Q or H. Most generators that ship "QR with logo" presets quietly upgrade to H for this reason.
Why does the logo's shape change the safe percentage?
Because the decoder counts modules, not pixels. A circular logo at 20% bounding-box area covers fewer corner modules than a square logo at 20% bounding-box area — the corners stay clear. In practice, circular silhouettes give you 5–10% more "safe module coverage" than rectangular ones at the same nominal area.
Do I need the white ring around the logo?
The QR spec doesn't require it, but production work essentially always uses one. The ring prevents soft logo edges from corrupting adjacent modules and gives the decoder a clean contrast reference. Two modules wide is the safe default. Use the QR's light-module colour for the ring, not pure white, if your code is using off-white light modules.
What happens if my logo covers a finder pattern in the corner?
The code fails to scan. The three big corner squares are how the decoder finds the QR in the camera frame at all — they're not part of the error-correction budget. Never put a logo on or over a finder pattern. Logos go in the data area in the middle, never in the corners.
Will a transparent logo work?
Almost always no. A semi-transparent logo creates modules that are neither cleanly dark nor cleanly light, and the decoder reads the region as noise. At print scale, transparent-logo codes fail to scan more than half the time. If you want the logo to feel "blended", use a low-contrast opaque colour with a clear-space ring, not transparency.
Sourcesshow citations
- ISO/IEC 18004:2024 — QR code bar code symbology specification. https://www.iso.org/standard/83389.html
- Denso Wave — QR code error correction overview. https://www.qrcode.com/en/about/error_correction.html
- Wikipedia — QR code (timing patterns, finder patterns, format information). https://en.wikipedia.org/wiki/QR_code
- Wikipedia — Reed–Solomon error correction. https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction
- W3C — WCAG 2.1 contrast minimum (relevant to QR foreground/background ratios with logos). https://www.w3.org/TR/WCAG21/#contrast-minimum
- Apple Developer — AVFoundation barcode detection. https://developer.apple.com/documentation/avfoundation/avmetadatamachinereadablecodeobject
Try it on your own domain
Branded short links and dynamic QR codes, on your subdomain or your own domain. One-time purchase, no per-click fees.