A vCard QR code holds your contact details as text inside the code itself, so scanning it offers to save a new contact straight away. A link QR code holds only a web address, which opens a contact page with a save button. The vCard version works offline but can’t be changed after printing; the link version needs signal but stays editable.
What a vCard QR code actually contains
This kind of code contains a short block of plain text written in the vCard format, the standard way phones describe a contact. The vCard specification, RFC 6350, defines it as the text/vcard content type for contact information.
The smallest valid card is tiny. Here is the test payload from a real support thread, using vCard 3.0:
BEGIN:VCARD
VERSION:3.0
FN:First Last
N:Last;First;
END:VCARD
Each line has a job. Under RFC 6350 (vCard 4.0), a card must start with BEGIN:VCARD, put VERSION right after it, include FN (the formatted name) and close with END:VCARD. The older vCard 3.0 spec, RFC 2426, also requires N, a structured name split into family name, given name, additional names, prefixes and suffixes. Its own example is N:Public;John;Quinlan;Mr.;Esq.
Phone numbers, email, title, company and website are optional extra lines. When a phone camera sees BEGIN:VCARD, it treats the text as a contact instead of a note. More on the file format in what a vCard file is.
What a link QR code contains
A link QR code contains a web address and nothing else. Scanning it opens a page in the phone’s browser, and that page does the work: it shows your details and offers a button that downloads a .vcf file.
The code stores only a short address, so its size stays the same however much you add to the page. Our post on static vs dynamic QR codes for business cards covers that trade-off.
Why every vCard field makes the QR code bigger
Every character you add to a contact code adds data, and more data means a bigger, denser code. Denso Wave, the company that invented the QR code, explains on its versions page that “as the amount of data increases, more modules are required.”
Modules are the small black and white squares. QR codes come in Version 1 through Version 40. Version 1 is 21 x 21 modules, Version 40 is 177 x 177, and each step up adds 4 modules per side.
Picture two cards the same printed size. One has a name, phone and email. The other adds a street address, a long LinkedIn URL and a note. The second needs a higher version, so each module gets smaller on paper and harder for a camera to pick out.
Error correction makes it worse. Denso Wave’s error correction page lists four levels and says Level M (15%) is the most common. Higher levels help a code survive dirt or scratches, but they use more space. Level L suits clean settings with a lot of data, which is exactly why a long vCard on a business card is a squeeze.
A real case: the contact code that saved an empty contact
Most failures with these codes come down to how the text was encoded. A long Adobe Community thread, opened in 2022, is a good example.
A designer made QR codes in InDesign two ways. The built-in Business Card type scanned fine on Android. Pasting the same vCard text into a Plain Text QR code broke it on most Android phones, and one reply said the contact came out empty. The same vCard text worked when it was generated in other QR tools.
Another commenter blamed the scanner app instead. Whoever is right, the fix is the same:
- Use a generator’s dedicated contact or vCard option, not a plain text box.
- Before you order, test the printed proof on at least one iPhone and one Android phone.
- A blank contact on scan means regenerate the code first, then suspect the phone.
vCard QR code vs link QR code: which should you use?
Pick a vCard code when you need it to work with no signal and your details won’t change. Pick a link QR code for anything printed that you’ll hand out for months.
| Question | vCard in the code | Link in the code |
|---|---|---|
| Where are the details? | Inside the code | On a web page |
| Works without internet? | Yes | No, the page must load |
| Can you edit after printing? | No, reprint | Yes, edit the page |
| Code size as you add fields | Grows denser | Stays the same |
| Can you see how often it’s used? | No | Often, if the page has analytics |
| Holds links, photo, portfolio? | Barely | Yes |
My take: on a paper business card, use a link QR code. A job change or new number turns a vCard code into a misprint, and a dense code is the most common reason a small printed QR fails. Our guide to printing a QR code on a business card covers size and contrast.
The vCard code still wins on a badge or slide at an event where the hall has no signal.
How QRCard handles this
QRCard uses the link approach and then hands the phone a real vCard. Your card lives at a vanity URL like qrcard.in/c/you, and you can download its QR code on the Free plan. When someone opens it in any browser and taps Save Contact, QRCard generates a vCard 3.0 .vcf file that opens in iOS or Android Contacts.
The code points at a live profile, so you can update your card without reprinting, and the dashboard counts views and saves. The features page shows the flow.
The limitation is the one every link QR code has: no connection, no page. If your event is in a basement hall, bring a vCard code as a backup.
FAQ
Does a vCard code work without internet?
Yes. The contact details are inside the code, so the phone reads them without loading anything. A link QR code needs a connection to open the page.
Can I change a vCard code after printing it?
No. The details are fixed in the pattern. To change them you make a new code. A link QR code keeps the same pattern while the page behind it changes.
Why does my vCard code save an empty contact?
Usually the text was encoded the wrong way or the scanner app misread it. In a documented Adobe InDesign case, a vCard placed in a plain text QR came out empty on some Android phones, while the same text from another generator worked.
Which fields does a vCard need?
The vCard 4.0 spec requires VERSION and FN (the formatted name), wrapped in BEGIN:VCARD and END:VCARD. The older vCard 3.0 spec also requires N, the structured name.