QRSpark

How QR codes actually work

A QR code is just a grid of black and white squares — but the way it's built in lets it survive damage, dirt, and even a logo stamped on top. Here's the short version of how.

The grid is the data

Every QR code encodes information as a pattern of dark and light squares called modules. Your phone's camera reads the pattern, decodes it back into the original text, and hands it to your device — a URL opens a browser, a Wi-Fi code connects you to a network, and so on.

The three large squares in three of the four corners aren't part of the data — they're "finder patterns" that let a scanner instantly recognize the image as a QR code and figure out its orientation, even if it's photographed at an angle.

Why logos don't break the code

QR codes carry built-in error correction, meaning a portion of the code can be damaged, dirty, or covered — and it will still scan correctly. This is done with the same family of math used in CDs and satellite communication, and it's why you can safely drop a logo in the center of a code without making it unreadable.

There are four standard error correction levels:

Higher error correction means a slightly denser, more complex-looking pattern — that's the tradeoff for the extra durability.

What can actually go inside one

A QR code isn't limited to website links. Depending on how it's formatted, a scanner can be told to open a browser, join a Wi-Fi network, save a contact, pre-fill a text message or email, or dial a phone number automatically.

There's a size limit

A QR code can hold a surprising amount — thousands of characters at its largest, most error-tolerant setting — but more data means a denser, more intricate pattern, which can make it harder for cheaper cameras to scan reliably. That's why URLs (short by nature) are the most common use case, while long blocks of text produce noticeably busier-looking codes.

Static vs. dynamic codes

This matters more than most people realize. A static QR code has the actual destination baked directly into the pattern — what you see is permanent, and it will keep working indefinitely, with nothing to renew or maintain.

A dynamic QR code instead points to a short redirect link controlled by whoever generated it, which then forwards you to the real destination. That's how some services let you edit where a code points after printing it — but it also means the code stops working the moment that service goes down, expires a trial, or deletes the account behind it. Every code created with QRSpark is static, for exactly this reason.

Ready to make one?

Create a fully customizable, permanent QR code in seconds.

Open the generator