Custom QR code shapes — what works and what breaks
Diamond modules, leaf shapes, brand-mark pixels — beyond round QR codes, what's possible? Here's the contrast cost of custom QR code shapes and where to stop.
Round QR codes look great. So the next question every brand asks: can we go further? Diamonds, leaves, dots arranged in the brand mark itself, shapes that match the campaign — where does the line sit between "distinctive" and "doesn't scan"?
The honest answer: there is a line, it's not where most generators say it is, and most "creative QR" examples on Pinterest are demonstrably broken in the field. This post is the version that walks through what custom shapes actually do to the underlying decode, which shapes work, which fail, and the rule of thumb that lets you make the call yourself before approving a print run.
Why shapes matter at all
A QR code's data lives in a grid of dark and light cells. The decoder doesn't see "round" or "square" — it samples the centre of each cell and asks "darker than threshold or lighter than threshold?" The shape of each cell is purely cosmetic.
So in theory, you can render the cells as anything: circles, hearts, brand mascots, text characters. In practice, the shape changes three things the decoder cares about:
- How much of the cell is "dark." A full square is 100% coverage. A circle inscribed in the cell is 78%. A diamond is 50%. A complex shape might be 30-60%.
- Where the boundaries between adjacent dark cells sit. Two squares share a full edge. Two circles touch at a point. Two diamonds touch at a corner.
- How clean the cell centre is. The decoder samples the middle 40-60% of each cell. A simple shape gives a clean solid centre; an ornate shape might have transparent or anti-aliased edges that bleed into the centre.
If you understand those three things, you can predict whether a custom shape will scan. The failure mode is always one of those three breaking down.
Coverage: the simple math
The threshold in practice: shapes covering less than 50% of the cell area are unreliable in non-ideal conditions. Stars, ornate brand-mark shapes, thin outlined shapes — these all sit below the line. Circles, diamonds, leaves, and rounded squares stay above and stay reliable.
Below the 50% line, you're depending entirely on error correction to mask the contrast loss. Level H gives you 30% recovery — usable in lab conditions but the margin shrinks fast under print wear, low light, or angle.
Boundaries: the second thing decoders care about
Two adjacent dark cells need to read as continuous to the decoder. Square modules touch on a full edge — they're effectively one larger dark region in adjacency. Round modules touch at one point — there's a 1-pixel gap that some decoders read as light.
Diamonds touch only on the corners — so two adjacent diamond modules are essentially separate. The decoder still reads them as dark, but the contrast pattern on the boundary is weaker. Most modern decoders handle it; older ones (and some industrial scanners) struggle.
The fix custom-shape generators use: oversize the modules slightly, so they overlap into adjacent cells. Round at 105% of cell size. Diamonds at 110%. Stars at 115%. The overlap closes the boundary gap and the decoder reads the adjacency cleanly. Generators that don't oversize are why so many "creative QR" codes fail in field tests.
Centre cleanliness: the silent killer
This is the failure mode design tools rarely document. Modern QR decoders sample the centre 40-60% of each cell to make the dark/light decision. If that centre is solid, the decision is fast and correct. If it's anti-aliased, transparent, or part of a complex shape with thin features, the decoder oscillates on the threshold and makes inconsistent calls.
In the diagram, the mint dashed square is the area each decoder samples. Square and round shapes leave the entire sample area solid. Diamonds put white into the centre's corners — usually fine, but borderline. Stars and complex brand shapes leave significant whitespace inside the sample region — borderline reliable in good conditions, broken in low light.
The takeaway: the more complex the shape, the more white pixels appear in the decoder's sample region, and the lower the contrast confidence. Simple shapes win.
What works
The shapes that consistently scan in the field:
- Round dots at 105% cell size. The most popular custom shape; deservedly so.
- Rounded squares with corner radius 20-30% of the side. Visually softer than sharp squares without the boundary issues of full circles.
- Diamonds at 110% size. Distinctive, scannable, slightly slower decode.
- Vertical or horizontal capsules — pill-shaped modules running with the grid. Looks digital-product-ish, scans well.
- Leaf shapes (asymmetric ovals) at 110% size. Niche but works for organic brands.
What breaks
- Stars and other shapes with thin radial features. Centre cleanliness fails. Generators show them in the preview; field tests show 20-40% failure rates.
- Brand-mark-shaped modules where the brand mark itself is complex (text, ornate symbols). The cells become illegible.
- Heart shapes. Slightly worse than diamonds, slightly better than stars. Borderline; works for indoor use, fails outdoors more often than expected.
- Outlined shapes (only the border is dark, the interior is light). The decoder's sample region falls inside the light interior and reads as white. Almost never works.
- Mixed-shape patterns where some modules are circles and others are different shapes for "visual interest." Each shape's contrast confidence is different, the decoder's threshold thrashes, scans become inconsistent.
Most "creative QR" examples on Pinterest are demonstrably broken in the field. The screenshot scans because it was photographed at high resolution under studio light. The print at street level scans 60% of the time on a good day.
The 50/50 rule
The rule of thumb that lets you decide before generating:
A shape works if it's at least 50% cell coverage AND has a clean centre at 50% sample size.
Square: 100% coverage, clean centre → works. Round: 78% coverage, clean centre → works. Diamond: 50% coverage, almost-clean centre → marginal, oversize to compensate. Leaf: 52% coverage, clean centre → works. Star: 38% coverage, patchy centre → doesn't work reliably. Brand-symbol modules: variable; usually fails at least one of the two tests.
If you're picking a shape from a generator's library, eyeball it against the rule. If the shape looks "thin" or "complex", it's almost certainly below the 50% line. Pick one of the simple shapes that earned its scannability through being boring.
The Linked.Codes QR designer ships round modules at 105% by default — the safe creative default. You can pick rounded squares too. The shapes we don't expose are the ones that fail in the field.
Try the QR designer →A shape comparison picker
What's possible vs what looks possible
The pattern most QR generators repeat: their library shows 10-20 module shapes, all of which scan in the generator's preview. The preview is rendering on a screen at high resolution under perfect virtual conditions. Of the 10-20, maybe 4-5 actually work in production.
If you can't field-test a shape on actual print under actual scan conditions, default to round at 105% with finder patterns kept square. That's what 90% of the branded QR codes you've seen on packaging are using — and the reason they scan every time isn't accident, it's that everyone independently arrived at the same conclusion the math predicts.
The post on round QR codes covers the round-specific defaults in more depth. The post on designing custom QR codes covers the surrounding rules — contrast, logo overlay, quiet zone, error correction — that apply regardless of which shape you pick.
What we ship by default
The Linked.Codes QR designer exposes the shapes that work in the field: square, rounded square, round dot, vertical and horizontal capsules. Diamond is on the list but flagged as "test before printing." Stars, outlined modules, brand-shape modules — we deliberately don't expose them because the generators that do produce codes that scan in the marketing screenshot and fail at the till.
The constraint is real, but inside it, the design space is wider than people assume. Round modules in your brand colour with a 20% centre logo gives you a code that's distinctive, on-brand, and scans every time — which is the actual job.
Why don't more "creative QR" shapes work?
Two things: cells covering less than 50% of the area lose contrast, and complex shapes leave whitespace in the decoder's sampling region. Both undermine the dark-vs-light decision the decoder has to make for every module. Simple shapes give the decoder a clean signal; complex ones don't.
Can I use my brand logo's silhouette as the module shape?
Almost never. Brand silhouettes are typically thin, complex shapes that fail both the coverage and centre tests. Use your logo as a centre overlay (covered separately) instead — that's what scales as a brand signal without breaking the underlying scan.
What about heart shapes for Valentine's campaigns?
Marginal. Indoor at high contrast and short scan distance, hearts work. Outdoors, on aged print, in low light — they fail more than people expect. If the campaign is short-run indoor, heart is fine. For anything outdoor or long-life, switch to round.
Should I oversize my custom modules?
Yes for any shape that's not a full square. Round modules render at 105% of cell size; diamonds at 110%; capsules at 105%. The overlap closes the gap between adjacent dark cells and the decoder reads them as continuous. Generators that don't oversize produce codes that scan in the preview and fail in print.
How do I know if my generator handles shapes correctly?
Print one full-size proof, scan it from the maximum expected distance with three different phones in three lighting conditions. If any combination fails, the generator's shape implementation has issues. The screenshot preview is not a substitute for a real test.
Why do industrial scanners (warehouse barcode readers) struggle with custom-shape QRs?
Industrial scanners often use stricter contrast thresholds than phone cameras and predate the modern shape-tolerant decoders. If the code might pass through a warehouse or POS reader, stick to standard square modules. Phones are forgiving; industrial scanners are not.
Do custom shapes affect QR code size (the version)?
No. The shape is purely cosmetic — it doesn't change which version (21×21, 33×33, etc.) the encoder picks for a given payload. The encoded data, error correction level, and version are determined by the URL or text being encoded, regardless of how each module is drawn.
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.