Two different tools, the same claim
Search “QR code with a picture in it” and two very different products answer. One is an AI art generator: feed it a prompt or a reference image and it paints a QR code as a landscape, a portrait, a logo. The other is what this page’s tool does: take a QR code and a photo you already have, and dither the photo into the code’s own redundant pixels. Both are sold as “a QR code that looks like a picture,” and both produce something a phone camera can point at. Only one of them can tell you, before you print it, whether it will actually scan.
What an AI QR code generator is doing
The common approach pairs a diffusion model — Stable Diffusion is the usual base — with a conditioning network, typically a QR-specific ControlNet, trained to nudge the image it’s painting toward matching a QR code’s light and dark pattern as it denoises. There is no encoder pinning pixels to module values anywhere in that process. The model is asked to produce something that statistically resembles a valid code closely enough that a scanner probably still reads it. Most of the time, at the right settings, it does.
“Probably” is doing real work in that sentence. Nothing in a diffusion pass guarantees every finder pattern stays intact or every module lands on the right side of the black/white threshold — it is a best effort at looking right, not an encoding.
Why that produces codes that sometimes don’t scan
This is a known, discussed failure mode, not a rare edge case: an AI-generated code can pass a quick scan on the screen it was made on and still fail on a different phone, a different camera app, a smaller print, duller lighting, or a glancing angle — exactly the conditions a real printed code has to survive. A code that only works under the conditions it was tested in is not reliable, it is lucky.
The usual advice from people who make these generators is to test the output on at least two real phones before you print anything on it, and to keep the error-correction level high and the prompt conservative if the code has to work reliably. That is sound advice. It is also an admission: the image the model produced is a guess, and the guess needs to be checked by hand every time, because the generation step itself carries no such check.
What pinning the module actually buys you
The dithering approach on this site starts from the opposite direction. Nothing is generated. A real QR code is encoded first, at whatever error-correction level you choose, from the exact link or vCard you typed. Every module is then enlarged and its centre — the point a scanner actually samples — is held hard to that module’s true value. Only the margin around the centre, the part no decoder reads directly, is handed to an error-diffusion dither of your photo. The code is never asked to resemble the encoding. It is the encoding, with a picture poured into the slack around it.
That is a mechanical difference, not a marketing one: a diffusion model has no concept of “this exact pixel is data, that one is free”— it denoises the whole canvas toward plausibility. Pinning is what makes the result checkable rather than merely likely.
Every code this tool produces is run back through a decoder in your browser before the download button unlocks. Not a plausibility score — the same check a phone camera would do. If it fails, you see it before you print, not after.
When the AI version is the right tool
It is a fair one, for the right job. If a code is destined for a poster, a screen, or a T-shirt where the art is the point and a missed scan costs nothing but a shrug, an AI-painted code can be more expressive than anything a dithered photo will give you — full colour, arbitrary scenes, no requirement that the source image look anything like a face. The trade is real in both directions: what you gain in creative range, you give up in the guarantee that it works the same way every time, on every phone, at whatever size you end up printing it.
What this tool is for is the other case: a business card, a vCard, a profile link — something that has exactly one job, scanning correctly, every time, for a stranger who will not try twice.
Checking any QR code before you print it
Whichever way a code was made, the same test decides whether it belongs on paper:
- Scan it off the screen it was made on, then off a second, older phone — camera sensors and QR libraries vary more than people expect.
- Print it at the actual size it will ship at and scan the printout, not the screen. Ink spreads; screens don’t.
- Test it under duller light than your desk, and from an angle rather than dead-on.
- Keep the quiet zone — clear space around the code — untouched. Both approaches can crowd it if you let them.
A code that survives that checklist is safe to print regardless of which tool made it. A code that only survives step one wasn’t ready.