QR Codes on Business Cards: What Actually Works
A QR code on a business card solves one problem: nobody retypes your details. Every other claimed benefit is imaginary, and the failure mode is ugly — they scan, tap Save, and either nothing lands in Contacts or half the fields come out mislabelled. Getting it right is mostly about restraint.
The decision nobody tells you about: vCard 3.0 vs 4.0
vCard 4.0 (RFC 6350) is newer and carries more structure. vCard 3.0 (RFC 2426) is old, boring, and understood by basically every contact app on every platform. For a printed card, boring wins.
| vCard 3.0 | vCard 4.0 | |
|---|---|---|
| iOS Contacts | Full support | Supported, occasional field quirks |
| Android / Google Contacts | Full support | Supported, some importers ignore newer properties |
| Outlook desktop | Reliable | Inconsistent depending on version |
| Older third-party scanner apps | Usually fine | Sometimes parse partially |
| Field richness | Covers everything a card needs | Adds properties you probably do not print |
Generate 3.0 unless a specific property forces 4.0, which is rare. If the cards go to people on unknown devices — that is everyone — you cannot afford the edge cases.
MeCard versus vCard
MeCard is the flat one-line format popularised in Japan: MECARD:N:Doe,John;TEL:13035551212;EMAIL:john@example.com;;. It is shorter, which means a sparser QR symbol, and Japanese-market scanners treat it as first-class. Outside Japan, Western phones mostly handle it, but it supports fewer fields and no structured address. Use MeCard if your card content is name-phone-email only and you want the lightest possible code. Use vCard for anything with an address, a company, a title, or more than one number.
Fields worth encoding, and fields that are ballast
Every field you add makes the symbol denser and the print size requirements stricter. Business cards are small, so this matters more here than anywhere else. Think in terms of cost per field.
| Include | Include only if relevant | Leave out |
|---|---|---|
| Name, primary mobile, email | Company name | Twitter/Instagram handles |
| Job title (one line) | Website URL | A second phone nobody answers |
| Primary work phone | Full postal address for office-based roles | "Notes" with a sales pitch |
| Calendar booking link | Embedded photo |
An embedded photo deserves a special mention. A base64-encoded headshot can add several hundred bytes — often tripling the data — for a thumbnail most people will never look at again. It is also the number one cause of business card codes that refuse to scan at business card size.
The one-page test
Ask what the receiver's phone will show in the first two seconds. If it is "John Doe, Acme Ltd, +1 303 555 1212, john@example.com," the card is doing its job. Everything beyond that is decoration competing for module space.
Density is the real constraint
A minimal vCard runs 120–180 characters, which lands around QR versions 7 to 10 at error correction level M — roughly 45 × 45 to 57 × 57 modules. Printed at 18 mm on a standard 85 × 55 mm card, each module comes out well under half a millimetre, where consumer phone cameras start to struggle under warm conference lighting.
Two things buy margin. Trim fields first — that is free. Then give the code more space: 22–25 mm on a 55 mm-wide card still looks fine if the rest of the layout is quiet, and those extra millimetres matter more than any other tweak.
Placement, and where codes go to die
- Keep it out of the corners. Cards get bent in pockets and wallets; corners take the damage and a creased finder pattern is an unscannable code.
- Give it a quiet margin — the four-module white border is not decoration, it is how the scanner finds the symbol. Do not let your logo or a background photo crowd it.
- Avoid glossy or spot-UV finishes directly over the code. Reflection is the most common cause of "it scans on your desk but not at the event." Matte laminate or uncoated stock behaves much better.
- Dark code on light background, always. Inverted codes scan on many modern readers and fail on plenty of older ones.
- Put it on the back if your front is heavy with design. A clean back panel with the code and nothing else scans better than a crowded front.
- Label it. One short line — "Scan to save my contact" — roughly doubles comprehension for people who have never scanned anything in their life.
A logo in the centre works if you keep it modest and pair it with a higher error correction level. The cost of that safety is density, which you already fought to reduce, so it is a poor trade on a small card.
Why contacts fail to save
Worth knowing before you blame your printer:
- Character encoding problems — accented names written as raw Latin-1 in a UTF-8 vCard come out as garbage, and some importers reject the record outright.
- Line breaks folded incorrectly in hand-edited vCards. Use a generator; hand-writing a vCard is how you end up with entries missing everything after the third line.
- Scanner apps that open the vCard as text instead of handing it to Contacts — common with older QR utilities.
- No
FN(formatted name) property. Some importers use it exclusively and silently discard the record without it. - A URL-encoded payload — a few generators double-encode, so the phone receives a percent-soup string it cannot parse.
Test the generated code on one iPhone and one Android device before ordering 500 cards. Thirty seconds each.
One honest counterpoint
In Europe and North America plenty of people still prefer typing a URL or handing over a paper card. If your contacts are mostly enterprise procurement staff who file cards in a drawer, the code adds little. There is also the small issue of permanence: a static vCard encodes your details at print time. Change your mobile number and every remaining card is quietly wrong. If your team goes through cards slowly, fine. If you order a thousand at a time, consider a URL-based approach pointing at a hosted contact page or a dynamic code instead.
FAQ
vCard 3.0 or 4.0 for business cards?
3.0, unless you need something 4.0-only. Compatibility with importers and older scanner apps matters more than the extra properties, and 3.0 covers everything that belongs on a printed card.
Should I include my photo?
Almost never. It multiplies the payload size, pushes you into a denser symbol, and gains you a thumbnail nobody asked for.
How big should the code be on a standard 85 × 55 mm card?
At least 20 mm square, ideally 22–25 mm, with a clean quiet zone. Below about 18 mm a full vCard becomes unreliable on average phone cameras.
Does my card need both front and back printed?
No. A quiet back panel with just the code and a one-line label is the most reliable layout you can pick.
Will scanning add me to their contacts automatically?
No. iOS and Android both show a preview and wait for a Save tap. That confirmation step is standard and cannot be skipped from the code side.
What happens when I change my phone number?
Every static card becomes outdated. Either plan shorter print runs or use a URL that lands on a page — or a dynamic contact — you can update.
Is a MeCard better because it is shorter?
Only if you need just name, phone and email, and only if the symbols would otherwise be too dense. It does not handle structured addresses or multiple numbers well.
Can I put my logo in the middle of the code?
You can, with a higher error correction level, but on a small card the extra density costs more than the branding gains. Put the logo next to the code instead.
Related guides
Build one with the vCard QR code generator. Further reading: vCard QR format reference, creating a website QR code, how error correction affects density, and why codes fail to scan.