vCard QR codes for business cards

A contact QR code on a business card lets the person you just met save your details in two taps instead of retyping them at their desk a week later. The code carries a vCard — a small text file that phones have understood for twenty-five years. The trouble is that a vCard is verbose, a business card is small, and cameras are picky about which version and fields they accept. Here is how to build one that imports cleanly on both iPhone and Android and still prints at a size a phone can read.
vCard 3.0 versus 4.0: why the older one wins
vCard 3.0 was standardised in 1998 (RFC 2426) and vCard 4.0 in 2011 (RFC 6350). Version 4.0 is cleaner on paper — it is UTF-8 only and writes phone numbers as tel: URIs — but the parsers built into camera apps were written for 3.0 and have stayed there. Google Lens and the iOS Camera import 3.0 cards field by field; hand them a 4.0 card and some fields silently vanish, particularly typed phone numbers and addresses.
For a QR code, therefore, generate 3.0 and nothing else. QR Nook does. The one 3.0 rule that trips people up: both N (the structured name — Last;First;Middle;Prefix;Suffix) and FN (the display name) are mandatory, and Android's importer in particular may refuse a card that has one without the other.
The fields phones actually import
Reliable everywhere: N and FN, ORG (company), TITLE (job title), TEL with a TYPE such as CELL or WORK, EMAIL, URL, ADR and NOTE. The address is seven semicolon-separated parts — post-office box, extended address, street, city, region, postal code, country — and you leave the ones you do not use empty rather than dropping them, so a minimal work address looks like ADR;TYPE=WORK:;;Sepapaja 6;Tallinn;;15551;Estonia.
Unreliable or wasteful: PHOTO (a base64 image explodes the code into hundreds of modules), custom X- fields (ignored), BDAY (imported by some, not all) and multiple addresses (the second one is often dropped). Write phone numbers in international format with a plus sign and country code; spaces and hyphens are tolerated but add bytes for nothing.
What a card costs in modules
A vCard's overhead — BEGIN:VCARD, VERSION:3.0, END:VCARD, the N and FN lines — is about 60 bytes before any real information. A minimal card with a name, one mobile number and an email is around 130 bytes: version 6 (41×41 modules) at level L, version 8 (49×49) at level M. Add company, title, a second phone, a website and a work address and you are at 280 bytes: version 12 (65×65) at M, version 17 (85×85) at H.
That last number is the problem. An 85-module code on a business card means modules a quarter of a millimetre wide, which office printers smear and phone cameras misread. So trim: one phone number, no NOTE, no fax, no second address, and consider dropping the postal address entirely — people who need to visit you will look the company up. Choose level M rather than H unless you add a logo, and QR Nook shows the version and module count live so you can watch the code shrink as you cut fields.
MeCard: the compact alternative
MeCard is a contact format designed by NTT DoCoMo for Japanese feature phones, and it is still read by the iOS Camera, Google Lens and every ZXing-based scanner. It drops the envelope: MECARD:N:Tamm,Mari;TEL:+37255551234;EMAIL:mari@nookcoffee.example;; is about 70 bytes for the same name, phone and email that cost 130 bytes as a vCard — version 5 instead of version 8 at level M.
The price is expressiveness. MeCard has no ORG or TITLE field, one untyped address, and its escaping rules differ (a comma splits the name into last and first). If your card must carry a job title and a company name, stay with vCard 3.0; if it only needs to get a phone number and an email into someone's contacts, MeCard makes a visibly smaller code.
Print size and scan distance
A European business card is 85×55 mm, an American one 89×51 mm, and designers usually give the code 20 to 25 mm. Aim for at least 0.4 mm per module — 0.5 mm if the printer is an ordinary office laser. At 25 mm that allows a code of about 53 modules (version 9); at 20 mm, about 41 modules (version 6). Compare those with the numbers above and it is clear why the payload has to stay lean.
People scan cards from 10 to 20 cm, which comfortably satisfies the rule that the code should be at least a tenth of the scanning distance. Keep four modules of quiet zone, avoid printing the code over a photo or a spot varnish, and use dark ink on a light stock — an inverted code on a black card looks sharp and fails on a surprising number of phones.
A pitfalls checklist
Encoding: names with accents or Cyrillic letters must be UTF-8; a card exported from an old Windows tool in a legacy code page shows up as garbage on iOS. Line endings: the standard says CRLF, and every phone also accepts plain LF, which QR Nook uses to save bytes. Commas, semicolons and backslashes inside values must be escaped with a backslash, and a NOTE with line breaks needs them written as \n.
The alternative worth knowing about is a link to a hosted .vcf file or a contact page: the code stays tiny and you can update the details after printing, at the cost of needing a network connection when the card is scanned and of trusting that the page will still be there. For a card that has to work in a basement with no signal, the embedded vCard wins. Whichever you choose, test the printed card with an iPhone and an Android phone before ordering five hundred of them.
The takeaway
Encode vCard 3.0 with N, FN, one phone, an email and, if you must, company and title; skip photos and second addresses. A lean card is 130 to 200 bytes and prints as a version 6 to 9 code that fits in 20–25 mm at 0.4 mm per module. Use MeCard when only a phone and an email matter, and scan a real print on both platforms before you order.
Build a styled code, check that it scans, export PNG or SVG
More guides

How much of a QR code can a logo cover?
Levels L, M, Q and H promise 7–30 % recoverable damage. What that means, which parts you must never cover, and how to size a logo safely.

Wi-Fi QR codes: how they work
The WIFI: string phones understand, the characters you must escape, which phones join from the camera, and why a printed code is a password.