Instagram’s own QR code is a black-and-white square with a small logo in the middle. It works, and it looks like everybody else’s. This makes the code out of your face instead, so it is recognisably yours from across a room — and it still scans.
How to do it
Start with your profile link
Your public profile lives at instagram.com/yourhandle. Type the handle into the builder and it assembles the URL — no need to copy anything out of the app. A shorter destination leaves more room in the code, which means fewer, larger modules and a clearer picture.
Drop in the picture you want inside it
Once the handle is in, the builder pulls your current profile picture in for you — proxied through our server so the browser can read its pixels, no saving or dropping a file required. If you'd rather use a different photo, or Instagram won't hand one over, drop your own image in instead; that one is read straight off your disk and never leaves the browser.
Crop tight to the face
One bit per pixel is a brutal reduction, and anything small gets lost. Zoom until the head fills most of the frame. A portrait that reads perfectly on a phone screen often turns to mush at this size — crop harder than feels right.
Pick Atkinson, then clamp the tone
Atkinson dithering throws away part of the diffusion error, which lifts the highlights and gives faces the crisp, high-contrast look people associate with early Macintosh graphics. If the eyes and jawline still wash out, open Advanced — every control and pull in Darkest allowed and Brightest allowed under Tone — those two tone clamps carry most of the recognition.
Check it scans, then export
Point your own phone at the screen before you commit — a real camera at a real distance is the test that counts, and nothing here runs that check for you automatically. Export the PNG at the largest size offered.
Put it somewhere people will point a camera at
A story, a pinned post, a printed card, a laptop sticker, the last slide of a talk. Because the picture is spread across the whole code rather than boxed in the middle, it still reads as you at a glance, before anyone has scanned anything.
If the picture is not reading
- Crop tighter. Almost always the problem. Faces need to be large before one-bit dithering can describe them.
- Light the photo with contrast, not just brightness. Flat, evenly lit selfies give the dither nothing to work with. Side lighting is your friend here.
- Shorten the link. More characters means a denser grid, which means smaller modules and less room per cell for the image.
- Try a different kernel. If Atkinson blows out too much, Floyd–Steinberg keeps more midtone detail.
Does this work for other platforms?
Yes — the code just encodes a URL, so anything with a public link works the same way: TikTok, LinkedIn, X, YouTube, Threads, Bluesky, a personal site, a Linktree, a WhatsApp click-to-chat link, or a vCard for your contact details. Instagram is simply the one people ask about most.