You've scanned them at restaurants, on product packaging, in magazines, and on business cards. But what exactly is a QR code, and how does a black-and-white square contain so much information? This guide explains everything in plain English.
The short answer
A QR code — short for Quick Response code — is a type of two-dimensional barcode that stores information as a pattern of black squares arranged on a white grid. Unlike a traditional barcode that only encodes data horizontally, a QR code encodes data in both directions, which is why it can hold significantly more information.
When you point your phone camera at one, the camera reads the pattern of squares, decodes the data hidden in the arrangement, and responds — typically by opening a URL, displaying text, or launching an app.
A brief history
QR codes were invented in 1994 by Denso Wave, a Japanese automotive company, to track vehicles during manufacturing. The goal was to create a code that could be scanned quickly from any direction — hence "Quick Response." Denso Wave made the standard publicly available, and the rest is history.
For years, QR codes were common in Asia but slow to catch on in the West — mainly because scanning them required a separate app. That changed in 2017 when Apple added native QR scanning to the iPhone camera, and Android followed shortly after. Then COVID-19 accelerated adoption dramatically, as restaurants replaced physical menus with QR code links overnight.
How a QR code stores data
A QR code is divided into several distinct regions, each serving a specific purpose:
- Finder patterns — The three square shapes in the corners. These tell your phone camera where the code starts and which way it's oriented.
- Alignment patterns — Smaller squares that help the scanner correct for distortion (like if the code is printed on a curved surface).
- Timing patterns — Alternating black-and-white lines that help determine the size of the data grid.
- Data modules — The remaining squares encode the actual content as binary data.
- Error correction — A portion of the code is dedicated to error correction, which is why QR codes still work even when partially obscured or damaged. Higher error correction means the code can survive more damage, but also makes it larger.
What can a QR code contain?
Most people think QR codes only store URLs, but they can contain many types of data:
- URLs — The most common use. Points to a website, landing page, or app store listing.
- Plain text — Any message up to several thousand characters.
- Email addresses — Opens a pre-addressed email compose window.
- Phone numbers — Opens the phone's dialer with the number pre-filled.
- Wi-Fi credentials — Lets guests join your network by scanning, without typing a password.
- Contact cards (vCard) — Automatically adds a person's full contact info to the phone's address book.
- Calendar events — Adds an event to the calendar.
- Bitcoin/crypto wallet addresses — Used for payments.
Static vs dynamic QR codes
There are two types of QR codes:
Static QR codes encode the destination directly in the pattern. Once generated, the data cannot be changed — if you want a different URL, you have to generate a new code. This is what our free tool generates.
Dynamic QR codes encode a short redirect URL that points to a server, which then redirects to the real destination. This lets you change the destination without reprinting the code, and also enables scan analytics. Dynamic codes require a paid service.
For most personal and small business uses, static QR codes are perfectly sufficient.
How to create a QR code for free
You don't need an account, subscription, or any software. Our free QR code generator works entirely in your browser — nothing is sent to any server.
URLs, text, email, phone, Wi-Fi. Download as PNG. No signup.
Tips for printing QR codes
- Always test the printed code before mass production — print quality affects scannability.
- Make the code at least 2 cm × 2 cm in print size. Smaller than that and some phones struggle.
- Maintain a quiet zone (white border) around the code of at least 4 modules wide.
- High contrast is essential — black on white works best. Avoid low-contrast color combinations.
- Don't stretch or distort the code — it must remain square.