Blog · How it works ·

What's inside our QR code engine, and what it checks before you print

Every code on QR Code Spot and QR Never Expires comes out of the same engine. This is how it works: where a code points, how it chooses its error correction, and what it checks before it lets you download a design. Where we can, we show you how to check it yourself.

A QR code looks like a solved problem. The standard is decades old and free to use, and any library can turn a link into black and white squares. The hard part is everything around the squares: what the code actually holds, whether it still scans once you've added colours and a logo, and whether it keeps working after it has been printed on a thousand menus. Those are the decisions this post is about.

1. Where the code points

The most important decision isn't visual at all. A QR code can hold your content directly, or it can hold a short link on someone's server that forwards people to your content. Many generators give you the second kind by default, because it lets them count scans and change the destination. It also means the code only works for as long as that server agrees to forward it. When a trial ends or a subscription lapses, the printed code still scans, but it lands on an upgrade page instead of your menu.

Our engine makes two kinds of code, and is explicit about which one you're getting:

Check it yourself: point your phone's camera at any code and read the address it previews before you tap. Or give the code, a photo of it or a screenshot to the QR Never Expires checker, which tells you whether it holds the content directly or depends on a short link service.

2. Fewer, bigger squares

A QR code grows with what it holds. Both codes below open a web page; the left one stores a long address with tracking parameters, the right one a short link. The engine reports the size of every code as you make it, because it decides how small you can print it and how far away it will scan.

A dense QR code of 41 by 41 squares holding a long web address
A long address: 41 × 41 squares.
A simpler QR code of 25 by 25 squares holding a short link
A short link: 25 × 25 squares, each one much bigger at the same print size.

That's also a tip for static codes: drop the tracking parameters you don't need, and the code gets simpler, scans faster and can be printed smaller.

Capital letters help too. QR codes have a compact mode for capitals, digits and a few symbols, so HTTPS://QRSX.NET/K7M2XQ takes less room in the code than the same link in lower case, and opens the same page. Photo QR and Thun'du Kunaa QR store their short links this way, which leaves more of the code free for the picture.

3. Error correction, chosen per design

QR codes carry spare data so they can be read even when part of the code is damaged or covered. The standard offers four levels, from about 7% to about 30% of the code being recoverable. More isn't always better: a higher level makes the code denser, with smaller squares.

4. The scan check: nothing downloads untested

Most broken QR codes aren't broken by the standard. They're broken by design choices: pale colours, a light code on a dark background, a logo that's too big. So before you download, the engine tests the design the way a phone would.

A pale grey QR code on white that the engine refuses to download
Blocked: “The code and background are too similar to scan.”
A dark green rounded QR code with a menu icon that passes the scan check
Passes: strong contrast, and an icon the code can afford at level H.

An honest limit: our decoders are deliberately stricter than most phone cameras, but no software check covers every phone, lens and lighting. For anything you print in quantity, print one copy first and scan it from the distance people will.

5. Design freedom, without breaking the scan

Because every design goes through the same check, the engine can afford to be generous with styles: dot shapes, corner shapes, gradients, frames with a call to action, round codes, logos and icons. Every code below was made by the engine for the same address, and every one passed its scan check.

A classic black and white QR code
Classic
A rounded green QR code with a menu icon
Rounded, with an icon
A teal QR code with leaf corners and the words Scan for the menu
Gradient and frame text
A round QR code made of navy dots
Round
A diamond-dotted QR code in a red to orange gradient with a coffee cup icon
Diamond dots, gradient
A QR code painted in swirling brushstrokes of blue and yellow
Art: Swirling Night
A QR code in deep blue woodblock print style
Art: Great Wave
A QR code in a golden mosaic style
Art: Golden Mosaic

QR Studio's template library and the styles you save in your account start from the same engine, so a template is just a starting point: change any of it and the scan check runs again.

The art styles in QR Studio work differently from AI-generated “art QR codes”. No image model and no real paintings are involved: every brushstroke is drawn by code from a seed. Phones read each square from roughly its centre, so the engine paints a solid mark in the style over the centre of every square, keeps the corner squares whole, always uses error correction H, and then decodes the result with the same phone-like tests.

Photo QR, in QR Labs, goes further and builds a real photograph into the code. It stands on published work: the halftone QR method of Chu et al. (2013), and Russ Cox's “QArt” technique (2012), which chooses the filler data that scanners never read so it matches the picture, without spending any error correction. On top of that it keeps faces clear of the fixed squares, lets you draw the picture as dots, lines or pop colours, and keeps download off until the code passes all 8 of its scan tests. We wrote about it in detail in why most art QR codes fail in print.

Thun'du Kunaa QR, the newest tool in QR Labs, uses the same bit solving for a different picture: the code is woven like a Thun'du Kunaa, the mats woven by hand from grass in the Maldives. The mat's pattern is laid out on the code's own squares, each square is woven as a diamond, and the frame takes its bands from real mats. Before download, every picture is read in the same 8 phone-like tests and once more as a whole.

A portrait of Abraham Lincoln drawn as a halftone QR code
Photo QR: a public-domain portrait, as halftone dots.
A QR code woven in gold and dark brown like a Maldivian grass mat, with patterned bands around it
Thun'du Kunaa QR: the code woven as a mat.

6. Content that apps actually understand

A code can scan perfectly and still fail if the text inside it isn't in the format the app expects. One file builds the content of every kind of code, and both sites use that same file, so a code is identical wherever you make it.

7. Files that survive the print shop

8. Private by design

The engine runs in your browser. When you make a static code, its content, such as a Wi-Fi password or a contact card, never leaves the page. Bulk codes from a spreadsheet are made in the browser too, and the list is never uploaded. For editable codes, we count scans, not people: we don't record who scanned or their IP address.

9. One engine, everywhere

The same engine draws the codes on QR Never Expires and QR Code Spot, so a design moves between them unchanged. It draws QR Studio's badges, templates and art codes, Photo QR and Thun'du Kunaa QR, the cards for Verified Photo Pass and the tickets in SealTicket. A fix or a new check in one place reaches every product at once.

What the engine doesn't do

If you're weighing up generators, our comparison pages set out the differences feature by feature. Or try the engine yourself: make a code, change its colours until the check complains, and see what it suggests. Questions or something you'd like explained next? Write to support@qrcodespot.com.

Why a photo on an ID pass doesn't stop a fake, and what doesAnyone with a printer can copy a staff ID or an event pass. How Verified Photo Pass makes the QR code the holder's face, checks every scan on our server, and refuses screenshots, copies and copycat accounts.Two QR sites, one promise: a tour of QR Code Spot and QR Never ExpiresWhat each site does, which one to open for which job, and the features most people miss: the expiry checker, payment codes, scan-tested designs, editable codes and the beta tools in QR Labs.Why most “art” QR codes fail in print, and how to make one that actually scansFace-aware framing, short links and an 8 test scan gate: how Photo QR weaves a real photograph into a code that survives the printer.

All posts →

Make a code you can trust in print

Free static codes with no account, scan-checked before every download.