vCard and .VCF Files Explained

vCard and .VCF Files Explained — Virtual Business Cards blog

| Updated | Technology | Virtual Business Cards

The standards-accurate guide to vCard versions, properties, QR limits and why a .vcf file cannot update itself.

A vCard is the standard file format for an electronic business card, saved with a .vcf extension. The current version, vCard 4.0, is defined by RFC 6350. Opening a .vcf file adds the person's name, phone, email and other details straight into your phone's contacts app, with no typing.

Key takeaways

  • RFC 6350 published vCard 4.0 in August 2011, obsoleting RFCs 2425, 2426 and 4770. The media type is text/vcard; encoding is UTF-8 only, with no way to override it.
  • Only four lines are mandatory: BEGIN:VCARD, VERSION, FN and END:VCARD.
  • Version matters because 4.0 dropped properties 2.1 and 3.0 relied on — AGENT, LABEL, NAME, MAILER, CLASS — and moved PHOTO from inline Base64 to a URI.
  • A QR code caps out at 2,953 bytes in byte mode at version 40 with the lowest error correction, so a vCard with an embedded photo cannot fit.
  • A .vcf file is a snapshot taken when it was shared. It cannot be updated remotely — the biggest functional difference from a hosted digital business card.
  • Wikipedia's "Digital business card" article does not mention vCard or .vcf at all, a notable gap given vCard is the underlying contact format for the category.

What a .vcf file actually is

A vCard is a plain text file. Open one in any text editor and you will see readable PROPERTY:value lines wrapped between BEGIN:VCARD and END:VCARD. There is no binary container and no database — it is closer to a structured note than a document format.

That simplicity is why it has survived since 1996. Every mainstream contacts application can read one, and the format degrades gracefully: a parser that does not understand a property is expected to ignore it rather than reject the file.

Three RFC 6350 rules trip up people writing vCards by hand. Lines longer than 75 octets should be folded with a CRLF followed by a space or tab, which the parser strips back out. Commas, semicolons, colons and backslashes inside values must be escaped. And VERSION must come immediately after BEGIN:VCARD.

Why the version matters

Three versions remain in circulation, and mixing them is the usual cause of "invalid contact data" import errors.

vCard 2.1vCard 3.0vCard 4.0
Published1996, Internet Mail Consortium (not an RFC)RFC 2426, September 1998RFC 6350, August 2011
EncodingVaries; QUOTED-PRINTABLE and BASE64 commonENCODING=b for binaryUTF-8 only, data URIs for binary
PhotoInline Base64Inline Base64URI or data URI, MEDIATYPE parameter
Notable propertiesAGENT, LABEL, CLASSAGENT, LABEL, CLASS, IMPPKIND, GENDER, ANNIVERSARY, RELATED, MEMBER
RemovedSome 2.1 features deprecatedAGENT, LABEL, NAME, MAILER, CLASS
Practical supportWidest, most forgivingThe safe default in 2026Best specified, patchiest support

The counterintuitive result: vCard 3.0 is usually the safest thing to emit, despite being older. It is the version most contacts applications were written against, and it handles inline photos in a way 4.0 deliberately moved away from.

The standard has not stood still. RFC 9554, published in May 2024, added CREATED, GRAMGENDER, LANGUAGE, PRONOUNS and SOCIALPROFILE to vCard 4.0 — so social links finally have a standard home rather than a vendor extension. Support in shipping contacts apps remains thin as of August 2026.

The properties you will actually use

Out of dozens defined, a business card needs about ten.

  • FN — the formatted display name; the only mandatory content property.
  • N — structured name in five components: family, given, additional, prefixes, suffixes.
  • ORG — organisation, with optional organisational units.
  • TITLE — job title. ROLE also exists, meaning the function performed.
  • TEL — telephone, typed voice, cell, work, home, fax or text.
  • EMAIL — email address, also typed.
  • URL — a link; repeat for several.
  • ADR — address in seven components: PO box, extended address, street, locality, region, postal code, country.
  • PHOTO — headshot, a URI in 4.0 or inline Base64 earlier.
  • NOTE — free text.

Two parameters do a lot of work. TYPE classifies an instance (TEL;TYPE=cell), and PREF ranks instances of the same property from 1 to 100, lower being more preferred. Anything beginning X- is a private extension: X-SOCIALPROFILE, X-ABLabel, X-SKYPE. Parsers are meant to ignore what they do not recognise, so extensions are safe to include but unsafe to depend on.

An annotated example

Here is a complete, valid vCard 4.0 for an estate agent in London.

BEGIN:VCARD
VERSION:4.0
FN:Priya Raman
N:Raman;Priya;;;
ORG:Northgate Property Ltd
TITLE:Senior Estate Agent
TEL;TYPE=work,voice;VALUE=uri:tel:+44-20-7946-0958
TEL;TYPE=cell,voice;PREF=1;VALUE=uri:tel:+44-7700-900123
EMAIL;TYPE=work:priya.raman@northgate.example
URL:https://example.com/c/priya-raman
ADR;TYPE=work:;;14 Fitzroy Square;London;;W1T 6EN;United Kingdom
PHOTO;MEDIATYPE=image/jpeg:https://example.com/priya.jpg
NOTE:Lettings and sales across W1 and NW1.
REV:20260818T104500Z
UID:urn:uuid:9c8b1e3a-5f2d-4a71-9d0e-2b7c4f8a1e66
END:VCARD

Reading it line by line: VERSION sits immediately after BEGIN, as required. N carries four semicolons because all five components must be present even when empty. ADR has six semicolons for its seven components, the empty first two standing for an absent PO box and extended address. PREF=1 marks the mobile as the preferred number. REV is a revision timestamp, letting a contacts app decide which of two copies is newer, and UID gives the card a stable identity across updates — the property that makes merging possible rather than guesswork.

The format has no comment syntax, so annotations like these can only live outside the file.

Why a vCard inside a QR code hits a hard wall

QR codes are defined by ISO/IEC 18004, currently the 2024 edition. Capacity depends on symbol version (1 to 40, each adding four modules per side, so version 1 is 21×21 and version 40 is 177×177) and on error correction level.

Error correctionData recoverableEffect on capacity
L7%Maximum data, least damage tolerance
M15%Common default
Q25%Reduced capacity
H30%Lowest capacity, survives logos and wear

At the absolute ceiling — version 40, level L — a QR code holds 7,089 numeric characters, 4,296 alphanumeric, 2,953 bytes in byte mode, or 1,852 Kanji characters. A vCard is byte mode, so 2,953 bytes is the number that matters.

That sounds generous until you do the arithmetic. The example vCard above is roughly 500 bytes, which is fine. Add a modest 15 KB JPEG headshot as inline Base64 and you need about 20 KB — nearly seven times the maximum. Photos in static contact QR codes are not possible.

Capacity and legibility also pull in opposite directions. A version 40 symbol is 177 modules across; printed at the 20 mm typically available on a card, each module is roughly 0.11 mm, below what most phone cameras resolve reliably at arm's length. In practice a contact QR meant to be scanned off print should stay well under 300 bytes — which means dropping the address, the note and the photo.

That is the compromise static QR forces: shrink the data until it scans, and accept that whatever you cut is gone for good, because the code is printed. A dynamic QR code sidesteps it by encoding a short URL of perhaps 25 bytes and keeping the full record on the server — 25 bytes will scan reliably from a matchbox-sized print, which is the whole argument. The scanning and read-range consequences are worked through in NFC vs QR code business cards.

MECARD and hCard: the compact and the embedded alternatives

MECARD was created by NTT DoCoMo for Japanese feature phones, precisely because vCards were too large for early QR codes. The syntax is terse: fields separated by semicolons, the whole terminated by two.
MECARD:N:Raman,Priya;TEL:+447700900123;EMAIL:priya@example.com;;

Its advantage is size. Its problem is governance: as Wikipedia's article on the format notes, there is no ISO standard and no RFC for MECARD, and NTT DoCoMo's original specification page now returns a 404. It is a de facto format kept alive by scanner implementations — a fragile basis for anything you print.

hCard solves a different problem. It is a microformat embedding vCard data inside HTML using CSS class names, so a web page is machine-readable as a contact record without a separate download; its modern form is h-card in microformats2. It is the right tool for marking up a contact block on a page, not a file you hand to someone.

NFC-vCard and digitale Visitenkarte: when the file format becomes the product name

One regional term is directly relevant to this article. German buyers search the product noun NFC-vCard, folding the chip and the contact format into a single word alongside digitale Visitenkarte — and it is a more accurate name than the English ones, because it describes what actually reaches the recipient's address book rather than what you hand over.

It is also a reminder that "vCard" has escaped its specification and become a shopping term. If you are buying an "NFC-vCard", ask what the chip holds: most such products write a URL, not a vCard, and generate the .vcf on the profile page. Every other regional name for this product, and the reason bank virtual card products compete for the same head term, is set out in our explainer on what a virtual business card is. The wallet pass guide covers a third delivery route.

The update problem

This is the practical difference that decides which you should use.

A .vcf file is a copy. When you AirDrop or email a vCard, the recipient's phone writes those values into its own database and the connection ends there. Change jobs six months later and every copy you handed out is quietly wrong. REV and UID let a well-behaved application recognise a newer version if you send one — but you have to send it, to everyone.

A hosted digital business card inverts this. The QR code or NFC tag holds a URL; the data lives on a server you control. Update your title once and every future scan shows the new details, including from codes printed months earlier.

The two are not exclusive, and the best implementations use both: the hosted profile as the source of truth, plus a "Save contact" button generating a fresh .vcf on demand so the recipient still gets a real address book entry. That is how our digital business card profiles work, and it is worth checking any provider does the same — a card that only shows a web page leaves the recipient re-typing your number.

How each platform handles an import

Behaviour differs more than you would expect of a format this old.

PlatformReads .vcfMulti-contact fileNotes
iOS ContactsYes, from Mail, Files, Safari, AirDropYes, prompts to add allApple does not document which version it emits when sharing a contact; 3.0 is what implementers commonly report
Android / Google ContactsYes, via importYesGoogle's help documentation confirms contacts export as "a CSV or vCard file" but does not state the vCard version
Microsoft Outlook (classic desktop)YesNo — reads only the first contactSperry Software, a long-standing Outlook add-in vendor, reports Outlook reads one contact per file and writes one per file. Third-party observation, and behaviour may differ in new Outlook and Outlook on the web
Contacts web apps generallyYesUsuallyCustom X- properties are commonly discarded on import

Two rules follow. Emit vCard 3.0 unless you have reason not to, and split multi-contact exports into one file per contact if Outlook users are in scope.

Frequently Asked Questions

What is a VCF file?

A VCF file is a vCard: a plain text file holding one or more contact records, using the format defined by RFC 6350 for version 4.0. Opening one on a phone or computer offers to add the contact to your address book. The extension is .vcf and the media type is text/vcard.

Which vCard version should I use?

Version 3.0 for maximum compatibility, despite 4.0 being current. Version 3.0 is what most contacts applications were built against and it supports inline photos, which 4.0 moved away from. Use 4.0 when you control both ends of the exchange and want its newer properties, such as KIND, RELATED or the additions in RFC 9554.

Can I put a photo in a vCard QR code?

Not realistically. A QR code holds at most 2,953 bytes in byte mode, at version 40 with the lowest error correction. A small JPEG encoded as Base64 typically needs 20 KB or more. Even without a photo, a symbol that dense is hard to scan when printed at business card size. Link to a hosted profile instead.

How is a vCard different from a digital business card?

A vCard is a file — a fixed snapshot of your details at the moment it was shared. A digital business card is a hosted profile at a stable URL, so editing it updates what every future visitor sees. Good digital cards generate a vCard on demand, giving you the live profile and a real contacts entry.

Is a vCard the same as a virtual payment card?

No, and the terms are unrelated. A vCard is a contact file format from the Internet Mail Consortium and IETF lineage. A virtual card in banking is a temporary payment card number. They share search results because "virtual card" is ambiguous, but nothing else.

Does Wikipedia's digital business card article cover vCard?

No. Its article names QR codes, links and NFC tags as the sharing mechanisms and does not mention vCard or .vcf anywhere — a real omission, since vCard is the format that actually lands the contact in an address book at the end of every one of those routes.

Putting it to work

The specification-accurate approach is straightforward: host a profile at a permanent URL, point a dynamic QR code and an NFC tag at it, and serve a vCard 3.0 file from a "Save contact" button on that page. You get the live-update behaviour of hosting and the address book integration of vCard, without the size limits of a static code.

That is what our NFC business cards do. To test the arrangement, start with a free digital business card and scan it with a second phone.