Why a logo can break a QR code — and how this avoids it
A QR code stores its data in a specific pattern of modules, plus a percentage of redundant error-correction data that lets a scanner reconstruct the message even if part of the code is unreadable. At the default error-correction level, that redundancy budget is roughly 15% — plenty for general use, not nearly enough once a logo is sitting on top of the center of the code eating into real data modules.
Bumping to Level H raises that redundancy budget to roughly 30%, which is why this generator switches automatically the moment an image is uploaded rather than leaving it as a setting someone has to remember. Combined with keeping the logo modest — well under the general 20%-of-total-area rule of thumb for center logos — and hiding the QR dots directly underneath it, the result stays inside the range Level H error correction can actually recover from.
What makes a good logo image
A simple, high-contrast logo works better than a detailed photo — a wordmark, an icon, or a simplified brand mark reads clearly even at the small size it ends up rendered at inside the code. A PNG with a transparent background avoids an awkward colored box appearing around the logo; a busy photograph with fine detail is the riskiest choice, since that detail is exactly what gets lost at QR-logo scale anyway.
Always test-scan the finished code with more than one phone before printing or publishing at scale — the automatic error-correction bump handles the theory, but a quick real-world scan test is the only way to confirm a specific logo, color combination and print size actually works together.
Using a logo via the API or MCP server
The same feature is available outside the web tool: the generate_qr_code MCP tool (and the underlying API) accepts a logoUrl parameter — a publicly reachable image URL fetched at generation time — and applies the identical automatic error-correction bump and sizing logic. See /qr-mcp for the full parameter reference and setup instructions.