How to Make a vCard QR Code That Saves Contact Info in One Tap
Anyone can read a name off a business card. Almost nobody types it in. A vCard QR code skips the typing — one scan on a phone, one tap on the prompt, and your name, number, email, and title land directly in the other person's contacts.
This guide walks through the four decisions that actually decide whether your QR scans cleanly or sits there blinking at the user: which vCard version to encode, which fields to include, how to lay out the QR image, and how to test it before you order 500 cards.
What a vCard QR code actually is
A vCard is a plain-text contact record defined by RFC 6350 — the same text/vcard format that emails attach as a .vcf file. Drop that text inside a QR code and modern scanners parse it, then surface an Add to Contacts prompt instead of dumping raw characters on screen.
That's the only real difference between a vCard QR and a plain phone-number QR (the tel: scheme). A phone-number QR shows the digits and asks the user to dial or copy. A vCard QR fills in name, organisation, title, multiple phone numbers, and an email in a single tap. iOS Camera and Google Lens both handle the format natively.
Pick a vCard version that scanners actually support
Three live revisions exist: 2.1 (1996), 3.0 (RFC 2426, 1998), and 4.0 (RFC 6350, 2011). The current spec is 4.0. The version you should actually encode is 3.0.
Why? vCard 3.0 has the widest installed-base support — iOS Camera, Google Lens, Outlook, macOS Contacts, every major Android OEM scanner. Version 4.0 added useful fields (KIND, GENDER, MEMBER), but interoperability still trails 3.0 in some scanners, especially on older Android builds you can't assume your audience has updated. Unless you specifically need a 4.0-only field, 3.0 is the safer encode.
What goes inside a vCard — and what to leave out
Four lines are required: BEGIN:VCARD, VERSION:3.0, FN (formatted name), and END:VCARD. Everything else is optional.
For a business-card QR, the fields you actually want are N (structured name in Family;Given;Additional;Prefix;Suffix order), TEL, EMAIL, ORG, TITLE, and URL. Six properties. Don't add PHOTO — embedding a base64 image multiplies the payload size and forces the QR to a much larger symbol that won't fit on a card. Skip long NOTE blocks for the same reason. Need a second phone number? Type-tag them: TEL;TYPE=cell:+1... and TEL;TYPE=work:+1....
Build the vCard text payload
Here's a complete, working vCard for "Jamie Rivera, Field Engineer at Northwind":
BEGIN:VCARD
VERSION:3.0
N:Rivera;Jamie;;;
FN:Jamie Rivera
ORG:Northwind
TITLE:Field Engineer
TEL;TYPE=cell:+15035551212
EMAIL:jamie@northwind.example
URL:https://northwind.example/jamie
END:VCARD
Each line ends with CRLF (\r\n). Inside a value, escape commas with \,, semicolons with \;, backslashes with \\, and line breaks with \n. Paste the block into any QR generator (or QRDock's creator), preview the result, and copy the payload back out once to make sure it round-trips cleanly before you generate the image.
Generate the QR image
Three settings matter.
Error correction: pick Q (25% redundancy) for anything that gets printed. It survives smudged ink, rounded corner clipping, and mild fading. Use L (7%) only when the payload pushes the symbol to a size that won't fit. H (30%) is overkill for a card, though it's handy when you want a small logo in the centre.
Module size: at typical reading distance (around 30 cm for a business card), aim for at least 3 modules per millimetre — that puts a 25×25 vCard symbol at roughly 1.5 cm wide.
Quiet zone and contrast: leave at least four modules of white border on every side, and keep contrast above 4:1 (dark on light, never light on dark). Inverted QRs scan on some Androids and fail on most iPhones.
Test on iOS and Android before you print
Generate the image, then test it at the smallest size you plan to print, under the worst lighting you expect.
On iPhone: open Camera, point at the QR, wait for the contact banner at the top of the screen. On Android: open Google Lens or the default camera app (behaviour varies by manufacturer). Both should show an Add to Contacts prompt within a second.
If the prompt doesn't appear, the usual suspects are a missing VERSION line, LF line endings instead of CRLF, an oversized payload pushed past the chosen error-correction level's capacity, or a PHOTO field you forgot to remove.
Where to put your vCard QR
Business cards: bottom-right corner, 1–1.5 cm wide, printed in the same ink as the rest of the design. Email signatures: an 80–120 px PNG with alt text "Add me to your contacts". Conference name badges: 2–3 cm wide, centred, with your printed name nearby in case the scan misses on the first try.
If you're handing the QR to event guests, it pairs naturally with a Wi-Fi QR code — they connect to the venue network and save your contact in two scans.
Frequently Asked Questions
What's the difference between a vCard QR code and a regular contact QR?
A vCard QR code carries a text/vcard payload that phones recognise as a contact record. A plain text or phone-number QR just shows the raw string and asks the user to copy it. With vCard, iOS Camera and Android Google Lens both surface an Add to Contacts prompt on the first scan.
Does the recipient need a special app to scan a vCard QR code?
No. The built-in Camera app on iPhone (iOS 11 and later) and Google Lens on Android both recognise vCard payloads natively. Any modern QR scanner that follows the QR Code standard will surface the contact card.
How big can a vCard QR code get before it stops scanning?
QR symbols cap out around 4,200 alphanumeric characters at the lowest error-correction level, but readability drops fast above about 300 characters when printed small. Skip the embedded photo (PHOTO base64) and long NOTE fields if the QR has to fit on a business card.
Should I use vCard 3.0 or vCard 4.0?
Use vCard 3.0 unless you have a specific reason for 4.0. Version 3.0 has the widest interoperability across iOS, Android, Outlook, and macOS Contacts. Version 4.0 is the current IETF standard but support still trails in some scanners.
Can I update a vCard QR code after I've printed it?
Not directly — a static vCard QR encodes the contact text into the image itself, so reprinting is the only way to change it. If you need updates, encode a short URL to a hosted .vcf file and update the file behind the URL.
Wrapping up
A vCard QR is one of the lowest-effort, highest-payoff things you can do with the format: build the text once, pick vCard 3.0, generate at error-correction Q, test on a real iPhone and a real Android at the print size, then commit to the print run.
If you're going to be handing QR codes to strangers — at a conference, on packaging, on a flyer — it helps to know how to tell whether a QR code is safe to scan before you tap the prompt. You can build your vCard QR for free at qrdock.app, which also runs a safety check on QR codes you scan with the app.