Tool — free, no account
Build a QR code that matches your brand instead of fighting it — custom colours, module and eye shapes, an optional centre logo, and vector or print-resolution export. Everything runs in your browser; nothing you type here is ever sent anywhere.
Content
Opens the address in a browser. A scheme is added automatically if you leave it off.
Colour
Module shape
Eye shape
Error correction
15% recoveryMedium by default, and High the moment a logo goes on — the level most codes need to survive a bit of wear.
The plain border a scanner uses to find the code at all. Four modules is the spec's own minimum.
Centre logo
Off by default. A logo covers real modules — the code needs headroom to lose them and still scan.
01Export
Vector SVG for a layout that will scale, or PNG at a size that holds up in print. Nothing here is uploaded — the code is built and encoded entirely in your browser.
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 33 33"><rect width="33" height="33" fill="#ffffff" /><g transform="translate(4 4)"><path d="M12 0h1v1h-1ZM13 0h1v1h-1ZM16 0h1v1h-1ZM9 1h1v1h-1ZM11 1h1v1h-1ZM13 1h1v1h-1ZM14 1h1v1h-1ZM15 1h1v1h-1ZM16 1h1v1h-1ZM8 2h1v1h-1ZM9 2h1v1h-1ZM11 2h1v1h-1ZM14 2h1v1h-1ZM8 3h1v1h-1ZM9 3h1v1h-1ZM10 3h1v1h-1ZM12 3h1v1h-1ZM13 3h1v1h-1ZM14 3h1v1h-1ZM15 3h1v1h-1ZM8 4h1v1h-1ZM10 4h1v1h-1ZM12 4h1v1h-1ZM13 4h1v1h-1ZM16 4h1v1h-1ZM8 5h1v1h-1ZM9 5h1v1h-1ZM11 5h1v1h-1ZM12 5h1v1h-1ZM14 5h1v1h-1ZM15 5h1v1h-1ZM8 6h1v1h-1ZM10 6h1v1h-1ZM12 6h1v1h-1ZM14 6h1v1h-1ZM16 6h1v1h-1ZM8 7h1v1h-1ZM10 7h1v1h-1ZM12 7h1v1h-1ZM14 7h1v1h-1ZM16 7h1v1h-1ZM0 8h1v1h-1ZM2 8h1v1h-1ZM3 8h1v1h-1ZM4 8h1v1h-1ZM5 8h1v1h-1ZM6 8h1v1h-1ZM12 8h1v1h-1ZM18 8h1v1h-1ZM19 8h1v1h-1ZM20 8h1v1h-1ZM21 8h1v1h-1ZM22 8h1v1h-1ZM0 9h1v1h-1ZM1 9h1v1h-1ZM3 9h1v1h-1ZM4 9h1v1h-1ZM7 9h1v1h-1ZM9 9h1v1h-1ZM11 9h1v1h-1ZM13 9h1v1h-1ZM17 9h1v1h-1ZM19 9h1v1h-1ZM23 9h1v1h-1ZM1 10h1v1h-1ZM4 10h1v1h-1ZM5 10h1v1h-1ZM6 10h1v1h-1ZM7 10h1v1h-1ZM13 10h1v1h-1ZM14 10h1v1h-1ZM15 10h1v1h-1ZM16 10h1v1h-1ZM17 10h1v1h-1ZM18 10h1v1h-1ZM19 10h1v1h-1ZM20 10h1v1h-1ZM21 10h1v1h-1ZM23 10h1v1h-1ZM24 10h1v1h-1ZM0 11h1v1h-1ZM2 11h1v1h-1ZM3 11h1v1h-1ZM4 11h1v1h-1ZM5 11h1v1h-1ZM9 11h1v1h-1ZM10 11h1v1h-1ZM13 11h1v1h-1ZM15 11h1v1h-1ZM17 11h1v1h-1ZM18 11h1v1h-1ZM20 11h1v1h-1ZM24 11h1v1h-1ZM0 12h1v1h-1ZM2 12h1v1h-1ZM3 12h1v1h-1ZM6 12h1v1h-1ZM8 12h1v1h-1ZM10 12h1v1h-1ZM11 12h1v1h-1ZM12 12h1v1h-1ZM14 12h1v1h-1ZM15 12h1v1h-1ZM17 12h1v1h-1ZM18 12h1v1h-1ZM20 12h1v1h-1ZM22 12h1v1h-1ZM23 12h1v1h-1ZM24 12h1v1h-1ZM0 13h1v1h-1ZM1 13h1v1h-1ZM3 13h1v1h-1ZM5 13h1v1h-1ZM10 13h1v1h-1ZM16 13h1v1h-1ZM17 13h1v1h-1ZM19 13h1v1h-1ZM21 13h1v1h-1ZM23 13h1v1h-1ZM0 14h1v1h-1ZM3 14h1v1h-1ZM5 14h1v1h-1ZM6 14h1v1h-1ZM7 14h1v1h-1ZM8 14h1v1h-1ZM9 14h1v1h-1ZM10 14h1v1h-1ZM11 14h1v1h-1ZM12 14h1v1h-1ZM15 14h1v1h-1ZM16 14h1v1h-1ZM18 14h1v1h-1ZM19 14h1v1h-1ZM20 14h1v1h-1ZM21 14h1v1h-1ZM23 14h1v1h-1ZM24 14h1v1h-1ZM0 15h1v1h-1ZM2 15h1v1h-1ZM3 15h1v1h-1ZM4 15h1v1h-1ZM8 15h1v1h-1ZM10 15h1v1h-1ZM11 15h1v1h-1ZM14 15h1v1h-1ZM15 15h1v1h-1ZM16 15h1v1h-1ZM17 15h1v1h-1ZM19 15h1v1h-1ZM20 15h1v1h-1ZM24 15h1v1h-1ZM0 16h1v1h-1ZM4 16h1v1h-1ZM6 16h1v1h-1ZM7 16h1v1h-1ZM8 16h1v1h-1ZM9 16h1v1h-1ZM11 16h1v1h-1ZM16 16h1v1h-1ZM17 16h1v1h-1ZM18 16h1v1h-1ZM19 16h1v1h-1ZM20 16h1v1h-1ZM22 16h1v1h-1ZM8 17h1v1h-1ZM12 17h1v1h-1ZM13 17h1v1h-1ZM14 17h1v1h-1ZM15 17h1v1h-1ZM16 17h1v1h-1ZM20 17h1v1h-1ZM21 17h1v1h-1ZM10 18h1v1h-1ZM13 18h1v1h-1ZM14 18h1v1h-1ZM16 18h1v1h-1ZM18 18h1v1h-1ZM20 18h1v1h-1ZM22 18h1v1h-1ZM23 18h1v1h-1ZM24 18h1v1h-1ZM8 19h1v1h-1ZM9 19h1v1h-1ZM12 19h1v1h-1ZM13 19h1v1h-1ZM16 19h1v1h-1ZM20 19h1v1h-1ZM21 19h1v1h-1ZM23 19h1v1h-1ZM8 20h1v1h-1ZM10 20h1v1h-1ZM12 20h1v1h-1ZM14 20h1v1h-1ZM15 20h1v1h-1ZM16 20h1v1h-1ZM17 20h1v1h-1ZM18 20h1v1h-1ZM19 20h1v1h-1ZM20 20h1v1h-1ZM22 20h1v1h-1ZM24 20h1v1h-1ZM8 21h1v1h-1ZM10 21h1v1h-1ZM17 21h1v1h-1ZM18 21h1v1h-1ZM20 21h1v1h-1ZM21 21h1v1h-1ZM22 21h1v1h-1ZM23 21h1v1h-1ZM24 21h1v1h-1ZM8 22h1v1h-1ZM11 22h1v1h-1ZM12 22h1v1h-1ZM15 22h1v1h-1ZM16 22h1v1h-1ZM21 22h1v1h-1ZM22 22h1v1h-1ZM24 22h1v1h-1ZM9 23h1v1h-1ZM10 23h1v1h-1ZM11 23h1v1h-1ZM14 23h1v1h-1ZM15 23h1v1h-1ZM16 23h1v1h-1ZM19 23h1v1h-1ZM20 23h1v1h-1ZM21 23h1v1h-1ZM24 23h1v1h-1ZM8 24h1v1h-1ZM10 24h1v1h-1ZM11 24h1v1h-1ZM17 24h1v1h-1ZM18 24h1v1h-1ZM19 24h1v1h-1ZM20 24h1v1h-1ZM21 24h1v1h-1ZM22 24h1v1h-1ZM23 24h1v1h-1ZM24 24h1v1h-1Z" fill="#1a1614" /><rect x="0" y="0" width="7" height="7" rx="0" fill="#1a1614" /><rect x="1" y="1" width="5" height="5" rx="0" fill="#ffffff" /><rect x="2" y="2" width="3" height="3" rx="0" fill="#1a1614" /><rect x="18" y="0" width="7" height="7" rx="0" fill="#1a1614" /><rect x="19" y="1" width="5" height="5" rx="0" fill="#ffffff" /><rect x="20" y="2" width="3" height="3" rx="0" fill="#1a1614" /><rect x="0" y="18" width="7" height="7" rx="0" fill="#1a1614" /><rect x="1" y="19" width="5" height="5" rx="0" fill="#ffffff" /><rect x="2" y="20" width="3" height="3" rx="0" fill="#1a1614" /></g></svg>A QR code that looks right on screen and a QR code that scans reliably in the wild are two different bars to clear. These are the things that actually move the second one.
Each level trades code density for how much damage it can survive and still be read — Low recovers about 7% of the code, Medium 15%, Quartile 25%, High 30%. Medium is a reasonable default for most uses; reach for Quartile or High when a logo sits on top, or the code will be printed somewhere it might get scuffed.
A logo covers real modules, and the only thing that keeps the code readable underneath it is spare error-correction capacity the content wasn't already using. Every code should start at the error-correction level its content actually needs — switching a logo on is a deliberate trade you make once you want it, not something the tool should assume.
Yes, as long as there's enough contrast between the foreground and background, and the finder squares in the three corners stay recognisable — which is why this tool restyles them as a unit rather than letting the module shape distort them. Rounded or circular corners are safe; very light-on-light or similar-tone combinations are not.
SVG for anything that will be resized, printed, or dropped into a layout tool — it's vector, so it never softens. PNG when the destination needs a flat image file, like a slide deck or a social post; pick a pixel size at least as large as the code will ever be shown, since raising it after the fact just blurs it.
No. The code is built and rendered entirely in your browser — the encoder, the styling, and the export all run locally. Nothing here is uploaded, logged, or kept after you close the tab.
Brand work, campaign or marketing assets — let’s talk.