Custom QR Code Generator with Logo
This page opens on One code at error correction H, ready for a logo. Press Choose logo below the code, pick a code colour, and turn on a label for text under the code. Each change is drawn and read back by a separate decoder with the logo in place, and the downloads stay off until it reads.
https://cafe.example/menu
Reading the code back.
Choose your logo. Error correction is set to H, so the code can spare the modules the logo covers, and every code is read back with the logo in place. The background stays white, and a code colour needs a contrast of at least 4.5 to 1 against it.
Worked examples
- decoded by an independent reader, identical
- 500 uniquely named files, a repeat gets -2, -3 in row order
- kept only if it reads back, otherwise marked failed
Common questions
- Can I use a photo or picture instead of a logo?
- Yes. Any PNG, JPEG, WebP, GIF or SVG image can sit in the middle: a logo, a photo or an icon. It goes on a white plate about 15, 20, 25 or 30% of the code's width, and a picture that is not square is scaled down to fit inside the plate. The code does not hold the picture: scanning it opens the link, and the picture is printed on top. To share a photo itself through a QR code, put it online first and use its link.
- Which colours can the code be?
- Black, navy, teal, green, maroon and purple are one press away, and Any colour opens your browser's colour picker. The background stays white and the modules stay square. A colour needs a contrast of at least 4.5 to 1 against white, the ratio WCAG asks of body text; a lighter one, such as a mid blue or a yellow, is refused with its contrast instead of drawn. The label under the code takes the same colour, and the logo keeps its own.
- Does a logo make the code harder to scan?
- It can, because the plate covers modules that error correction has to make up for. That is why this page opens at H, the level that can spare the most, and why every code is read back with the logo in place and kept only if it matches. A smaller logo width leaves more of the code clear. Print one and scan it with a phone before printing hundreds.
- Can every code in a list get the same logo and colour?
- Yes. Switch to Many from a list: the logo, the colour and the label setting apply to every row, every code is read back with them, and the ZIP holds only the codes that passed.
Each code holds your text or link itself, with no redirect in between, so it never expires and no scan is counted. Every code is read back by a separate decoder before it can be downloaded, with a quiet zone of at least 4 modules; a logo covers modules and lowers readability, so a code that fails the read back is marked failed, and one that passes here can still fail on some cameras. Payment codes (UPI, bank transfer, crypto and merchant payment formats) are refused.