What Is a vCard? The Contact File Behind QR Cards

Guides
11 min read
Valerii Didur
10 Aug 2026

A vCard is the standard file format for an electronic contact card. It is saved with a .vcf extension, travels as plain text under the MIME type text/vcard, and holds one person’s name, phone numbers, email addresses, employer, job title, postal address, website, and optionally a photo — every line wrapped between BEGIN:VCARD and END:VCARD. Because every phone, mail client, and CRM on the market can read one, a .vcf is what almost every “save to contacts” button actually hands over, including the one behind a QR-code business card.

This guide is about that file — not the trading card game that shares the name. What is inside a .vcf, how the three living versions of the format differ, why a contact sometimes arrives without the photo or the job title, and what a QR code can and cannot carry.

Annotated .vcf listing wired to the contact it becomes on a phone: PHOTO fills the picture, FN the display name, ORG and TITLE the line beneath it, and TEL, EMAIL, ADR and URL the phone, email, address and website rows — only VERSION and FN are required, and VERSION decides how every line below it is parsed

Two things this guide deliberately does not cover, because they have their own homes: generating a QR code for a printed card is a step-by-step job we wrote up separately in how to create a QR code for a business card, and how large that code must be printed lives in the QR code size guide. Here the file is the subject and the QR square is only the envelope.

What Is a vCard?

A vCard is a text file with a strict grammar. Open one in any editor and you can read every character of it — there is no proprietary blob, no binary header, no vendor lock. That is precisely why it travels: a format that is just labeled lines of text can be parsed by a 2009 feature phone, a modern CRM, and everything in between.

The grammar is simple. The file opens with BEGIN:VCARD, closes with END:VCARD, and between them each line is a property name, an optional set of parameters, a colon, and a value. Only two properties are actually required by the current specification, published as RFC 6350: VERSION, which must come immediately after BEGIN:VCARD, and FN, the formatted name — the one line the phone shows you before anything else. Everything else in a contact card is optional, which is why a nine-line vCard and a sixty-line vCard are both perfectly valid.

The same specification settles a question that used to cause real damage: “The charset […] for vCard is UTF-8 as defined in [RFC3629]. There is no way to override this.” One encoding, no negotiation. Files written under the older versions did negotiate it, and that is where a lot of mangled names come from — more on that below.

What’s Inside a .vcf File

RFC 6350 defines 38 properties across nine categories — general, identification, delivery addressing, communications, geographical, organizational, explanatory, security, and calendar. Thirty-six of those go into the IANA registry the same document creates; the two left out are BEGIN and END, which wrap the file rather than describe the person. In practice, a contact card handed to another human uses about ten of them. Here is the working set, and what each one becomes on the receiving phone.

Property

What it holds

Where it shows up

VERSION

2.1, 3.0, or 4.0

Nowhere visible — but it decides how everything below is parsed

FN

The full name as one string

The contact’s display name. The only mandatory content property

N

The name split into five parts: family, given, middle, prefix, suffix

Sorting and the separate first/last name fields

ORG

Employer, optionally with department

The company line

TITLE

Job title

The role under the name — and the first thing to vanish in a sloppy export

TEL

A phone number, tagged by type (cell, work, home, fax)

Each number as its own labeled row

EMAIL

An address, also type-tagged

The email rows

ADR

A structured postal address in seven components

The address block, and the map pin behind it

URL

A web address — site, portfolio, or card link

The tappable link row

PHOTO

An image, either embedded as data or referenced by URL

The contact’s picture — the field least likely to survive the trip

NOTE

Free text

The notes field. Useful for “met at the Berlin conference”

Repeated properties are normal and expected: three TEL lines and two EMAIL lines in one file is ordinary, and each one carries its own TYPE parameter so the phone knows which is the mobile and which is the desk number.

vCard Versions: 2.1, 3.0, and 4.0

There is no single vCard format. There are three, all still in circulation, and the VERSION line is the most consequential thing in the file.

Version

Published

Encoding

Practical status

2.1

1996, by the Versit Consortium

Quoted-printable with a declared charset per property

Legacy. Still emitted by old export tools; the usual source of garbled accented names

3.0

September 1998, RFC 2426

Charset assumed, TYPE= parameter syntax

The safe default. Read and written everywhere — iOS, Android, Google Contacts, Outlook, iCloud

4.0

August 2011, RFC 6350

UTF-8, mandatory, no override

The current standard. Cleanest spec, still unevenly supported by consumer address books

The format is not frozen, either. RFC 9554, published in May 2024 as “vCard Format Extensions for JSContact”, added five properties the last decade made necessary — PRONOUNS, SOCIALPROFILE, CREATED, LANGUAGE, and GRAMGENDER — aligning it with the JSContact data model.

Practical verdict: if you get to choose, export 3.0. It is the version with the widest guaranteed support, and nothing in a normal business contact needs a 4.0-only property. Export menus rarely tell you which version they write — Google Contacts produces 3.0, and Outlook wrote 2.1 for years before moving to 3.0 in its current builds.

Timeline of the vCard format: 2.1 in 1996 from the Versit Consortium (quoted-printable, a charset per property, legacy), 3.0 in September 1998 as RFC 2426 (the safe default), 4.0 in August 2011 as RFC 6350 (UTF-8 mandatory, no override), and RFC 9554 in May 2024. Version 4.0 deleted NAME, PROFILE, MAILER, AGENT, LABEL and CLASS; RFC 9554 added PRONOUNS, SOCIALPROFILE, CREATED, LANGUAGE and GRAMGENDER

Why a Saved Contact Loses the Photo or the Job Title

Everyone has done this: scanned a code, tapped save, and ended up with a name and a phone number where a full card was promised. Nothing is broken. There are four mechanical reasons, and each one is worth knowing before you blame the app.

1. The QR code ran out of room. A QR symbol has a hard ceiling. At its largest — version 40, a 177×177 grid of modules under ISO/IEC 18004 — it holds 2,953 bytes of binary data, 4,296 alphanumeric characters, or 7,089 digits, and only at error-correction level L, the lowest of the four. A vCard of text fields fits comfortably inside that. An embedded photo does not: images are carried as base64, which turns every 3 bytes into 4 characters and inflates the file by roughly a third, so even a modest 20 KB portrait needs about nine times the entire capacity of the largest QR code ever printed. Photos in QR-carried vCards are not dropped by accident — they were never encodable.

2. The property no longer exists. Set RFC 2426’s property list against RFC 6350’s and seven names are simply gone from 4.0: NAME, PROFILE, LABEL, MAILER, AGENT, SORT-STRING, and CLASS. Version 4.0 also retired the old base64 mechanism in favor of data URIs. A 3.0 file whose formatted mailing address lives in a LABEL block has nowhere to put it in a 4.0 world, so a strict parser discards it silently.

3. The character encoding disagreed. A 2.1 file declares its charset per property and encodes with quoted-printable; 4.0 mandates UTF-8 and forbids anything else. When a 2.1 export meets a UTF-8-only importer, “Zoë” arrives as “Zoë” — the name survived, its bytes did not.

4. It was never standard to begin with. Anything a vendor invents rides in an X- property (X-SOCIALPROFILE, X-ABLabel, and so on). Apps that recognize the prefix keep it; every other app drops it without a warning. Custom fields are the least portable thing in a contact card.

Scale chart against a QR symbol’s hard ceiling of 2,953 bytes (version 40, a 177 × 177 grid of modules, or 4,296 alphanumeric characters or 7,089 digits): a link to a card is about 30 bytes and a text-only vCard several hundred bytes, both fitting easily, while one 20 KB photo carried as base64 becomes about 27 KB — 20 KB × 4/3 ≈ 26.7 KB, and 27,307 bytes ÷ 2,953 bytes ≈ 9.2 times the entire ceiling

How a QR Code Carries a vCard

A QR code is a container, not a format. It stores a string of characters, and what those characters mean is entirely up to whatever wrote them. For contact sharing there are exactly two things worth putting inside, and they behave in opposite ways.

The whole vCard, encoded directly. The scanner reads BEGIN:VCARD, recognizes the payload as a contact, and offers to save it — with no internet connection involved, because the data is physically in the pattern. The costs: several hundred bytes force the symbol up to a high version number, which crowds far more — and therefore far smaller — modules into the same square, and small modules are the first thing a mediocre camera or a scuffed print run fails on. No photo can come along either, and the file is frozen the instant it goes to press.

A link to a live card, encoded instead. Around thirty bytes, so the symbol stays on a low version number with large, forgiving modules. The scan opens a hosted card, and the save button there writes the .vcf on the spot — photo included, because a download has no 2,953-byte ceiling. Be precise about what that buys you: the file landing in the address book is still a snapshot. What stays live is the link, so the next person to scan gets a file built from whatever is true that day. The cost is a dependency — the receiver’s phone needs a connection at the moment of the scan.

Both routes end at the same place — a .vcf landing in someone’s address book. They differ only in when the file is written: at the print shop, or at the moment of the handshake. NFC tags and wallet passes carry the same payload under the same choice; a pass in Apple Wallet simply keeps the code on your lock screen instead of on cardstock.

Let the contact file be written at the handshake, not at the print shop

Build your card in minutes and share it by QR, link, NFC, or wallet pass. Each save writes a vCard 3.0 file from your details as they stand that day, photo included — and the person receiving it installs nothing.

Do People Still Use vCards?

Constantly, and almost never knowingly. The format has not needed a rewrite since 2011, so it stopped being news; meanwhile the number of places it gets used quietly multiplied. Every contact attached to an email, every “share contact” in a phone’s address book, every conference badge scan, every save from a digital card ends in a .vcf.

The carriers are the part that is growing. Bitly’s scan data, published in March 2026, reports a metric worth naming precisely — scan rate, meaning how many scans each existing code collects — and it rose in every region between 2024 and 2025: Europe +42%, Latin America +40%, Asia-Pacific +21%, MENA +18%, Sub-Saharan Africa +10%, North America +8%. Where the same report puts creation and total scans side by side, the gap is the real story: in Europe the number of codes created grew 7% while total scans grew 53%. People are not printing more codes; they are scanning the ones already out there far more often. The regional split is in Bitly’s State of QR Code Scans. Every one of those contact scans terminates in the same text format a phone from 1996 could have read.

How Do You Create a vCard?

Three honest routes, in ascending order of effort and descending order of how long the result stays accurate.

Export one from an address book. In iPhone or Mac Contacts, select the contact and share or export as vCard. In Google Contacts, use Export and choose vCard. In Outlook, save the contact as a .vcf. This is the fastest route and the one most people need; check which version your tool writes if the file is going somewhere fussy.

Write one by hand. A valid vCard is genuinely nine lines of text: BEGIN:VCARD, VERSION:3.0, then FN, N, ORG, TITLE, TEL, EMAIL, and END:VCARD. Save it with a .vcf extension and any phone will open it. This is worth doing once — nothing demystifies the format faster than watching a file you typed in a text editor turn into a contact.

Let a digital card issue one. A hosted card holds your details in one place and builds the .vcf on demand, at the moment someone saves you. The advantage is not convenience; it is that the file is written from your details as they stand that day rather than from whatever was true on export day. Ours works this way — tapping Save Contact on a DBC card assembles a vCard 3.0 file in the browser, with the photo embedded as base64, and hands it to the phone. The receiver needs no app for any of it: the card is a web page and the save button is a download. The concept in full sits in what a digital business card is.

The vCard format has one real weakness, and it is not technical: a .vcf is a snapshot. It records what was true when it was written, and no copy of it has ever updated itself. The question is how fast that matters, and there are numbers for that. ZoomInfo’s decay research puts B2B contact data at 22.5% to 70% loss of accuracy per year, with HubSpot’s 22.5% as the commonly used benchmark and job titles going stale at roughly 2–3% per month. Handing out a static contact file is handing out something with a measurable half-life.

Aspect

Static .vcf

Link to a live card

When it is written

Once, at export or print

Fresh on every save

New job or number

Every copy already sent is wrong, permanently

Edit once; the next save carries the change

Photo

Only if delivered as a file, never through a QR code

Yes — the download has no size ceiling

Works offline

Yes, completely

The receiver needs a connection at scan time

Tells you anything

No. A sent file reports nothing back

Views, shares, and saves

Cost

Free

A card plan — our Individual plan is $6.99 per user/month, billed annually

Comparison of the same contact one year later: the static alex-morgan.vcf still shows the old employer, job title and phone number, all struck through, because it was written once at export; the live card link writes a fresh file on every save from current data. B2B contact data loses 22.5% to 70% of its accuracy a year, with job titles going stale at roughly 2–3% a month

This is not an argument against the format — we ship .vcf files ourselves, on every single save. It is an argument about who writes the file and when. We built DBC so the writing happens at the last possible moment: your details live on a card you can edit, the card publishes to a permanent link with its own QR code, and each tap of Save Contact assembles a vCard 3.0 file right then, photo included. They install nothing, sign up for nothing, and end up with a normal contact in a normal address book. Be clear about what that does and does not fix: their copy is a snapshot from the day they saved you, exactly like any other .vcf. What changed is that the link on their card, in their inbox, and in your QR code keeps resolving to the current version — so the correction is always one scan away instead of impossible.

Your contact file, rewritten every time someone saves it

Design a card in minutes, share it by QR, link, NFC, or wallet pass, and see which conversations actually turned into saved contacts.

The Short Version

A vCard is a plain-text contact file with a .vcf extension and a fixed vocabulary of properties, first published in 1996 and last rewritten as RFC 6350 in 2011. Version 3.0 is the safest thing to export; 4.0 is the cleanest specification. Fields disappear for four knowable reasons — a QR code that ran out of bytes, a property that 4.0 deleted, an encoding mismatch, or a non-standard X- field. The format is not the limitation. Deciding whether the file gets written once, in advance, or freshly at the moment someone saves you is the only choice that has consequences a year from now.

FAQ

What is a .vcf file?

How do I open a vCard file?

Which vCard version should I export?

Can a QR code contain a vCard with a photo?

Do vCard files expire?

Valeriy Didur photo
Valerii Didur

A content writer with over 8 years of experience creating analytical content for digital products and B2B SaaS companies. His work focuses on practical guides, pricing breakdowns, and comparisons that help teams evaluate costs, features, and differences between tools.

Your first impression decides everything

  • Look professional and build trust instantly
  • Forget about reprints and lost contacts
  • Update your details anytime
DBC digital business cards on two iPhones — trusted by teams worldwide, 100K+ active users, 4.9 app ratingGet Started Today