QRAnalytica

How Do I Make a QR Code That Saves My Contact Details (vCard)?

A vCard QR code holds your contact card as text. Enter your name, phone and email in a generator, keep it short, and test on iPhone and Android.

Nookesh Karri · 8 min read
Dark cover card with the title 'How Do I Make a QR Code That Saves My Contact Details (vCard)?' in white and a lime accent bar

To make a QR code that saves your contact details, put your name, phone number and email into a vCard QR code generator, keep the card to the fields people actually need, and download the code. The phone that scans it reads a small contact file, a vCard, and offers to add you to its contacts. Test it on both an iPhone and an Android phone before you print.

What a vCard QR code actually contains

A vCard QR code stores a plain-text contact card inside the pattern itself. QuickChart’s documentation describes a vCard as “a specially formatted text that is used to transfer contacts between phones.” Your phone’s camera decodes that text and recognises it as a contact.

Here is roughly what a generator writes behind the scenes, using the fields from CalConnect’s vCard 4.0 guide:

BEGIN:VCARD
VERSION:4.0
FN:Alice Smith
N:Smith;Alice;Marie;Dr.;PhD
TEL;TYPE=work,voice;VALUE=uri;PREF=1:tel:+1-555-0100
EMAIL:[email protected]
END:VCARD

FN is the name shown on the contact. N splits the name into parts (family, given, middle, prefix, suffix) separated by semicolons. Every extra line adds characters, and more characters means a denser pattern of squares.

The two lines every vCard needs

Every valid vCard needs a VERSION line and an FN (formatted name) line between BEGIN:VCARD and END:VCARD. RFC 6350, the vCard Format Specification, says “A vCard object MUST include the VERSION and FN properties,” and that VERSION must come immediately after BEGIN:VCARD.

CalConnect explains why the name matters: every vCard “must have a displayable name,” so apps always have a label for the contact. If a generator lets you skip the full name, don’t. A card without one may save as a nameless contact.

Version numbers vary. RFC 6350 defines vCard 4.0, which CalConnect calls the current standard. Many generators and forum examples still write version 3.0, and some older tools write 2.1.

How to make a vCard QR code, step by step

Making one takes a few minutes in any generator that has a contact or vCard type.

  1. Pick the vCard or contact type in your generator, not the URL type.
  2. Fill in only what people will use: full name, mobile number, work email, company and job title. A website link is fine. A long bio is not.
  3. Use the phone number format with the country code, such as +1-555-0100, so it dials correctly from abroad.
  4. Check for commas in your company name or address. The next section explains why.
  5. Download an SVG for print or a PNG for screens.
  6. Scan it on an iPhone and an Android phone, tap the contact prompt, and read every saved field before you print.

QRAnalytica’s free vCard QR generator works this way. If you’re putting the code on a card, how to put a QR code on a business card covers size and placement.

Characters that break a vCard

Commas, semicolons and backslashes have special meanings inside a vCard, so they must be escaped with a backslash. RFC 6350 says a comma in a value “MUST be escaped with a BACKSLASH character,” and the same applies to semicolons inside structured fields like the address.

A real example: a company called Smith, Jones & Co written as ORG:Smith, Jones & Co can be split at the comma by a strict reader. Written correctly it’s ORG:Smith\, Jones & Co. Good generators do this for you, which is one reason to use one rather than typing the vCard by hand.

Two more rules worth knowing:

  • Text is UTF-8. RFC 6350 says the vCard charset is UTF-8 and “There is no way to override this.” Some older guides, including QuickChart’s, add a CHARSET=UTF-8 parameter for accented names, which older readers may need.
  • Dates use the compact form. A birthday is BDAY:19850315. The spec says YYYY-MM-DD “is disallowed” in vCard 4.0.

Known iPhone quirks with contact QR codes

The iPhone camera reads contact QR codes, but users have documented a few cases where it handles them differently from other scanners. None of these has an Apple fix in the threads, so plan around them.

Notes go missing. In an Apple Community thread from Feb 2021, a user on iOS 14.4 found the built-in camera recognised the contact but dropped the NOTE field. A third-party scanner kept it.

Names with spaces in the surname. On the Apple Developer Forums in Mar 2024, a developer reported that a version 2.1 vCard with the name “Collin A. Al Miller” came through with an empty name on iPhone. Replacing the space with a hyphen or comma worked, and Android read both versions.

The preview shows the wrong field. In a second forum thread, the preview showed an email where the company should be. An Apple engineer replied: “This is as designed. The priority of the fields shown in the preview is independent of the order in the vCard.”

My take: treat the note field as decoration. Anything that matters goes in name, title, company, phone or email, and skip version 2.1 for 3.0 or 4.0.

Static vs dynamic vCard QR codes

A static contact code stores the card itself, while a dynamic one stores a short link that loads your details from a server. That choice decides whether you can update the card later and whether it works offline.

Static vCardDynamic vCard
What’s in the codeThe full contact textA short link
Works with no signalYesNo, it needs to load the link
Edit after printingNo, reprintYes
Scan countsNoYes, through the redirect
Pattern densityGrows with every fieldStays small

The static version is the simplest and most private: nothing is hosted, and codes that carry their content work offline. The cost is that a new phone number means new cards.

A dynamic code fixes that, and it’s how QRAnalytica’s dynamic codes work: scans run through QRAnalytica’s redirect servers, which is what makes editing and scan counts possible. The catch is a hard dependency: every scan has to reach the redirect service before your card loads, and without it the code does nothing. Dynamic vs static QR codes goes deeper on the trade-off.

How to check it worked

The only real test is scanning the printed proof with more than one phone and reading the saved contact, field by field. Look for a missing name, a phone number without its country code, a company name cut at a comma, and a missing note on iPhone.

If a phone won’t read the code at all, the pattern is probably too dense for its print size. Cut fields, or switch to a dynamic code, and see why a QR code is not scanning for the other usual causes.

FAQ

Does a vCard QR code need the internet to work?

A static contact code doesn’t. The whole card is stored inside the code as text, so the phone can read it and offer to save it with no signal.

Why does my iPhone not show the note on my contact QR code?

Users have reported the iPhone’s built-in camera dropping the NOTE field while third-party scanners kept it. Put anything important in a standard field such as title or organization instead.

Which vCard version should I use for a QR code?

vCard 4.0 is the current standard, defined in RFC 6350. Many generators still write version 3.0. Whichever you use, test the printed code on both an iPhone and an Android phone.

Can I change the details in a vCard QR code after printing?

Not with a static contact code, because the details are printed into the pattern. To change them later, the code has to point to a link you can edit, which is a dynamic code.

What is the minimum a vCard needs?

RFC 6350 requires BEGIN:VCARD, a VERSION line straight after it, an FN line with the formatted name, and END:VCARD. Everything else is optional.

Sources

Track your dynamic campaigns. 7-day trial, no credit card.
Generate Dynamic QR