Three questions that decide it
Before looking at the list, answer these. They narrow twelve options to one or two almost every time.
- What should happen the instant someone scans it? A phone cannot guess your intent. If you want the dialler to open, the payload has to be a phone number in the phone format — a URL that happens to contain digits will open a browser instead.
- Might the destination change later? If yes, you need a dynamic code, and that decision has to be made before you print. It also means the code depends on a redirect service, which a static code never does.
- How much data are you cramming in? A Wi-Fi payload with a long password is far denser than a short link, and a vCard with an address is denser still. More data means a higher-version code with smaller modules, which means you have to print it larger to stay scannable — and some types cross that line quickly.
The twelve types
These are the types the generator offers. Five of them have a dedicated guide, linked where they do.
1. Website link
The ordinary case: the payload is a URL and the browser opens it. Almost everything on a poster, a menu or a business card is this. It is also the type most likely to be made dynamic, because a link is the thing you are most likely to want to change.
2. Plain text
The phone simply displays the text. Useful when there is nowhere to send someone — a serial number, an asset tag, a short instruction, a code for a system that reads text. There is no second step and nothing to open, which is sometimes exactly the point.
3. Email address
Opens a new message addressed to the address you chose, with no subject or body unless you add them. Good on a contact page or a conference badge.
4. Phone number
Opens the dialler with the number ready to call. Scanning does not place the call — the person still has to press the button, which matters if you are worried about accidental calls.
5. SMS message
Opens a text message with the number and, optionally, the body pre-filled. Commonly used for opt-in campaigns. It cannot send anything by itself.
6. WhatsApp
Opens a chat with a number, with your message already written, without the scanner having to save the contact first. This one is worth its own guide, because the encoding choice decides whether the code works from a desktop browser at all.
7. App store link
Opens an app's listing in a store. The honest limitation: a static code carries one address, so it cannot send iOS and Android visitors to different stores. Branching needs a redirect, and this site deliberately does not offer one for app links — a "scan to update your app" code that redirects is a textbook phishing pattern. If you need both platforms, put a landing page of your own behind the code.
8. Payment request
Carries payee details and an optional amount so a payment app opens with them filled in: UPI, a PayPal.me link, a crypto address with its chain, or bank transfer details. It is a request to pay and nothing more — no card details are involved and no money is processed, held or settled. There is a fuller guide, including what the code cannot do.
9. Location
Opens a map at a set of coordinates. By default it encodes a Google Maps URL,
which opens the native maps app on both iOS and Android and still works in a
desktop browser. A bare geo: URI is available instead, but iOS
Safari does not handle that scheme, so it is opt-in rather than the default.
See the location guide.
10. Wi-Fi network
Joins a network without anyone typing the password — the single most popular use of QR codes in cafés, hotels and offices. Supports WPA, WEP and open networks, and hidden SSIDs. Worth reading the Wi-Fi guide before you stick one on a wall, because a printed Wi-Fi code hands the password to anyone who photographs it.
11. Contact card
Encodes a vCard the phone offers to save straight into the address book: name, phone, email, organisation and title. A photo does not fit — a vCard carrying an image runs to tens of kilobytes, which produces a code too dense to scan reliably. The vCard guide covers what fits.
12. Calendar event
Encodes an ICS event the phone offers to add, with start and end time and optional location and description. Useful for one-off events; less so for anything recurring, because a static code cannot be updated when the details change.
Compare them side by side
| Type | What the scanner sees | Payload weight | Guide |
|---|---|---|---|
| Website link | The browser opens the URL | Light | Guide |
| Plain text | The text is displayed | Light | — |
| A new message opens | Light | — | |
| Phone | The dialler opens | Very light | — |
| SMS | A text message opens | Light | — |
| A chat opens, message pre-filled | Moderate | Guide | |
| App store link | The store listing opens | Light | — |
| Payment | A payment app opens with the payee filled in | Moderate | Guide |
| Location | A map opens at the coordinates | Moderate | Guide |
| Wi-Fi | The phone joins the network | Moderate | Guide |
| Contact card | The contact is offered for saving | Heavy | Guide |
| Calendar event | The event is offered for adding | Moderate to heavy | — |
"Payload weight" is a rough sense of how much data the type carries, and therefore how dense the code gets. It is the reason a long vCard needs a bigger print than a short link — and the size calculator will do that arithmetic for the content you actually have.
Types that need more care than they look
Four of these carry a risk that is not obvious from the form, and each is worth a moment before you commit to print.
- Wi-Fi hands over the password. Anyone who photographs the code has the network credentials, and that includes a guest who is no longer a guest. Print one for a network you can rotate, or use a guest network.
- Payment can send money to the wrong place. Nothing in a payment code proves the payee is who they claim. Always check the name your payment app displays against who you meant to pay, and treat an unexpected payment code the way you would treat an unexpected invoice.
- A location code can be edited by anyone with a sticker. A code printed on a sign is a physical object; an overlaid sticker pointing somewhere else is a known attack. Check the address a code resolves to before following it somewhere you care about.
- Contact cards grow fast. Every extra field makes the code denser, and a vCard with an address, a title and a website is already around the point where people print it too small. If your code must be small, cut fields rather than shrink the print.
If you are checking a code you did not make, the scanner decodes it in your browser and shows you the payload before you open anything.
Does the type change the print size?
Yes, and this is the part most people get wrong. The type does not change the rule — a code still needs roughly one unit of size per ten units of scanning distance — but it changes how much data sits inside the pattern, and more data means more, smaller modules at the same printed size.
Two consequences follow. A contact card needs a larger print than a short link to scan from the same distance. And if you raise the error correction level to survive a scuffed surface, you have made the code denser again and need to go up another size. The QR code guide covers the sizing rule, contrast and the quiet zone in full.
Frequently asked questions
How many types of QR code are there?
The QR code format itself has no notion of types — it only carries data. The "types" are conventions for what that data means, and a phone decides what to do by recognising the format of the payload. This generator offers twelve: website link, plain text, email, phone, SMS, WhatsApp, app store link, payment, location, Wi-Fi, contact card and calendar event.
Can one QR code do several things at once?
No. A static code holds one payload, and the phone acts on that payload alone. What you can do is point a code at a page of your own that offers several choices — that works, but the chooser is your web page, not the code. It also means the code now depends on a page you have to maintain.
Which type is best for a business card?
A contact card if you want the details saved to an address book, or a website link if you would rather control what they see next. A vCard is denser, so it needs to be printed larger; on a small card a link is usually the safer choice.
Which type should I use for a menu?
A website link. Menus change, so this is also the classic case for a dynamic code — a static code means reprinting every table card the next time a price moves.
Do all types work on both iPhone and Android?
The common ones do, because modern phone cameras decode them natively. Two
are less predictable: a bare geo: URI, which iOS Safari does
not handle, and custom app schemes. That is why both are encoded in their
cross-platform form by default rather than their "proper" one.
Can I change the type after printing?
No. The type is encoded in the payload. Changing it means making a new code, which is why print runs that might need to change are better served by a dynamic code from the start.
Which type carries the least data?
A phone number, by a wide margin — a short string of digits. That makes it the most forgiving type to print small. A contact card or a calendar event carries the most and needs the most room.