I build software and various websites, and almost every project I touch ends up needing a QR code somewhere — a link to a landing page, a sign-up, a menu, a download. They do the job. They're also, let's be honest, a bit ugly.
So I started pulling at a thread: could a QR code actually look good? Could the art be the code, instead of sitting politely behind it? That small question turned into a proper side project — building my own animated QR codes. I started my search and found ways to make the code a lot more appealing.
The part I expected to be easy wasn't
Here's the thing about QR codes — they're more forgiving than they look. There's error correction built in, which means you can cover or restyle a surprising amount of the code and a scanner will still read it. That's the loophole most "pretty QR code" tools lean on: they drop a logo in the dead centre, where the redundancy is highest, and call it done.
I wanted more than a logo in a box. I wanted the image and the code to be the same thing — the pattern flowing through the artwork, the artwork shaping the pattern.
That's where it got genuinely tricky.
Dark images are the real enemy
Scanners read QR codes through contrast — dark modules against a light background. The moment you push artwork into the code, especially anything dark or busy, you start eating into that contrast. The code still looks fine to you. Then you point a phone at it and… nothing.
I'll be honest, I burned a fair bit of time here. The first few versions looked great and scanned terribly. Getting a dark, dramatic image to stay readable meant treating the contrast almost pixel by pixel — protecting the parts of the code a scanner depends on, while letting the art take over everywhere it safely could.
That's the quiet craft of this whole thing: knowing exactly how much you can get away with.
Where it's at now
I've got them scanning reliably — animation, brand art, colour and all. That part works.
What I'm still chasing is the harder version: integrating full photos as part of the code, not just stylised art, without losing the scan. Photos bring the same dark-and-busy problem as before, only worse, so it's the next puzzle I'm sitting with.
I find this kind of problem oddly satisfying — a tight, well-defined constraint (it must scan) with a wide-open creative space on top of it. Most of building is exactly this: a hard line you can't cross, and a lot of room to play right up against it.
Want one of your own?
In my experience these pull a lot more attention than a plain black-and-white code — people actually stop and scan them. If you'd like a custom animated QR code with your logo or brand art, not just a static image with a picture slapped behind it — I'm taking these on as a gig on Contra:
Custom animated QR code with your logo or brand art →
This is what the last stage of AI adoption actually looks like
This started as me being mildly annoyed at how every QR code looks the same. No brief, no client, no roadmap — just a small irritation I decided to do something about.
That instinct has a name. In our 5 stages of AI adoption, the final stage is the Innovator — and it's not defined by how many tools you've mastered or how clever your prompts are. It's a shift in posture. Innovators stop asking "how do I use this?" and start asking "what could I build with it that doesn't exist yet?" The QR code project is exactly that: noticing a gap nobody handed me, and building toward it until it scanned.
Here's the part I want you to take from this — that shift isn't about talent, and it isn't reserved for engineers. The gap between using AI and building with it is ambition, not skill. Most people stall one stage earlier not because they can't, but because it never occurs to them that the irritation in front of them is a thing they're allowed to fix.
So if something in your own work bugs you like those bland QR codes bugged me — that's not a small thing to shrug off. That's the thread. Pull it. You might end up building something that reaches a lot further than your own desk.