Skip to content
Upgfrog.online

Topic

Styling a QR code without breaking it

How far you can push shape, colour and branding before a decoder stops finding your code.

QR codes are more flexible than their reputation suggests. A decoder samples the centre of each cell, so it does not care whether that cell is a square, a circle or a rounded blob — only what colour sits at the sampling point.

That single fact tells you where every limit is. Changes that keep ink at each cell's centre are safe. Changes that move it away, blur the boundary between neighbours, or distort the three corner patterns cost reliability.

We measured this rather than guessing: all 36 combinations of our corner frame and corner dot shapes, decoded at six raster resolutions each. Five combinations failed every single attempt, which is why the generator now warns you about them as you pick.

What you'll learn here

  • Which styling choices are essentially free, and which quietly spend your error-correction budget.
  • Why a round corner dot inside a square frame is unreadable, even though it looks perfectly reasonable.
  • How to use gradients without ending up with a code that looks great and scans never.
  • A build order that catches problems before the print run rather than after it.

6 guides

Common questions

Do rounded or dotted QR codes scan worse than plain squares?
Barely, provided each module stays centred in its cell and contrast is good. Rounded modules matched plain squares exactly in our testing; dotted modules were only slightly behind.
Can I put my logo in the middle of a QR code?
Yes. Keep it under roughly a quarter of the code's width and set error correction to level H. That level can recover about 30% of a damaged code, but print defects and glare draw on the same budget, so spending all of it on the logo leaves no margin.
Why did my code stop working when I restyled the corners?
Decoders locate a code by scanning for a specific ratio of dark and light runs through the three corner patterns. Some frame and dot pairings distort that ratio enough that the code is never found at all — and error correction cannot help, because it operates on data the decoder has not located.

Related topics

Build a code with these rules applied

The generator shows a live contrast reading and blocks corner shape pairings our testing found unreadable, so most of what you just read is enforced as you design.

Open the generator