QRQRCrack
webdevproductivitynetworkingtools

How to Create a vCard QR Code for Your Business Card

How to Create a vCard QR Code for Your Business Card

A vCard QR code lets someone scan your business card and instantly save your contact information -- name, phone, email, company, website, even your photo -- directly to their phone's address book. No typing, no misspellings, no lost cards.

Here is how to create one properly, with the vCard format explained so you understand what you are generating.

What Is a vCard?

vCard (.vcf) is a standard file format for electronic business cards. It has been around since 1995 and is supported by every phone, email client, and contacts app. When a QR code contains vCard data, scanning it triggers the phone's "Add Contact" dialog with all fields pre-filled.

The vCard 3.0 Format

vCard 3.0 is the most widely supported version. Here is a complete example:

BEGIN:VCARD
VERSION:3.0
N:Johnson;Alice;;Ms.;
FN:Alice Johnson
ORG:Acme Corp
TITLE:Senior Software Engineer
TEL;TYPE=WORK,VOICE:+1-555-123-4567
TEL;TYPE=CELL:+1-555-987-6543
EMAIL;TYPE=WORK:alice@acmecorp.com
EMAIL;TYPE=HOME:alice.johnson@gmail.com
URL:https://alicejohnson.dev
ADR;TYPE=WORK:;;123 Main Street;San Francisco;CA;94105;USA
NOTE:Met at DevConf 2026
END:VCARD

Field Reference

FieldFormatRequired
BEGIN:VCARDLiteralYes
VERSION:3.0LiteralYes
NLast;First;Middle;Prefix;SuffixYes
FNFull display nameYes
ORGCompany nameNo
TITLEJob titleNo
TEL;TYPE=XPhone (types: WORK, CELL, HOME, FAX)No
EMAIL;TYPE=XEmail (types: WORK, HOME)No
URLWebsiteNo
ADR;TYPE=XPO Box;Suite;Street;City;State;Zip;CountryNo
NOTEFree text noteNo
PHOTO;VALUE=URIURL to photoNo
END:VCARDLiteralYes

Adding a Photo

PHOTO;VALUE=URI:https://example.com/alice-photo.jpg

Keep in mind that photos increase the QR code data significantly. A URL to a photo is better than embedding base64 image data, which would make the QR code too dense to scan reliably.

Method 1: Generate with Code

JavaScript

function generateVCard({
  firstName, lastName, org, title,
  cellPhone, workPhone, email, website, note
}) {
  const lines = [
    'BEGIN:VCARD',
    'VERSION:3.0',
    `N:${lastName};${firstName};;;`,
    `FN:${firstName} ${lastName}`,
  ];

  if (org) lines.push(`ORG:${org}`);
  if (title) lines.push(`TITLE:${title}`);
  if (cellPhone) lines.push(`TEL;TYPE=CELL:${cellPhone}`);
  if (workPhone) lines.push(`TEL;TYPE=WORK,VOICE:${workPhone}`);
  if (email) lines.push(`EMAIL;TYPE=WORK:${email}`);
  if (website) lines.push(`URL:${website}`);
  if (note) lines.push(`NOTE:${note}`);

  lines.push('END:VCARD');
  return lines.join('\r\n');
}

// Generate the vCard string
const vcard = generateVCard({
  firstName: 'Alice',
  lastName: 'Johnson',
  org: 'Acme Corp',
  title: 'Senior Software Engineer',
  cellPhone: '+1-555-987-6543',
  workPhone: '+1-555-123-4567',
  email: 'alice@acmecorp.com',
  website: 'https://alicejohnson.dev'
});

// Generate QR code (using qrcode npm package)
import QRCode from 'qrcode';

const qrDataUrl = await QRCode.toDataURL(vcard, {
  errorCorrectionLevel: 'M',
  margin: 4,
  width: 300,
  color: { dark: '#000000', light: '#ffffff' }
});

Python

import qrcode

vcard = """BEGIN:VCARD
VERSION:3.0
N:Johnson;Alice;;;
FN:Alice Johnson
ORG:Acme Corp
TITLE:Senior Software Engineer
TEL;TYPE=CELL:+1-555-987-6543
EMAIL;TYPE=WORK:alice@acmecorp.com
URL:https://alicejohnson.dev
END:VCARD"""

qr = qrcode.QRCode(
    version=None,  # auto-size
    error_correction=qrcode.constants.ERROR_CORRECT_M,
    box_size=10,
    border=4
)
qr.add_data(vcard)
qr.make(fit=True)

img = qr.make_image(fill_color="black", back_color="white")
img.save("business-card-qr.png")

Method 2: Online Generators

Several QR code generators have a vCard mode with a form interface:

  1. QRCode Monkey (qrcodemonkey.com) -- Fill in the fields, customize colors and shape, download as SVG for print. Free, no signup.

  1. GoQR.me -- Has a vCard tab. Minimal but functional. Exports PNG, SVG, PDF, EPS.

  1. freeqr.io -- vCard generator with bulk support. Useful if you are generating cards for a team.

The advantage of online tools is the form interface -- you do not need to know the vCard format. The advantage of code is automation and version control.

Best Practices for Business Cards

Keep Data Minimal

Every character you add increases QR code density, making it harder to scan. Stick to the essentials:

  • Full name
  • Job title and company
  • One phone number
  • One email
  • Website URL

A vCard with these 5 fields generates a QR code that is easy to scan even at small sizes. Adding a mailing address, multiple phone numbers, and a photo URL pushes it to the edge.

Error Correction Level

QR codes have four error correction levels:

LevelRecoveryUse Case
L (7%)LowMaximum data, screens only
M (15%)MediumStandard business cards
Q (25%)QuartileCards with logo overlay
H (30%)HighCards with heavy branding

Use Level M for standard business cards. Use Level H if you are overlaying a logo on top of the QR code.

Sizing for Print

  • Minimum QR code size: 2cm x 2cm (0.8" x 0.8")
  • Recommended size: 2.5cm x 2.5cm (1" x 1") for vCards with typical data
  • Standard business card: 8.5cm x 5.5cm (3.5" x 2") -- the QR code should take up roughly 25-30% of one side

File Format

Always export as SVG or PDF for print. PNG files pixelate when scaled. SVG is vector-based and looks crisp at any size.

If your printer requires PNG, export at least 1200x1200 pixels for a 1-inch print at 300 DPI.

Color and Contrast

  • The QR code modules (squares) must be darker than the background
  • Minimum contrast ratio: 4:1 (but aim for higher)
  • Black on white is safest
  • If using brand colors, test with multiple phones before printing a batch
  • Do not use gradients on the modules -- some scanners struggle with them

Placement on the Card

  • Back of the card: Most common. Dedicates the full back to the QR code with a "Scan to save contact" label.
  • Front, bottom-right corner: Works if the card design accommodates it. Keep it at least 2cm away from edges (printers have bleed zones).

Testing Checklist

Before you print 500 business cards, verify:

  • [ ] Scan with iPhone Camera app (no third-party app needed)
  • [ ] Scan with Android camera (varies by manufacturer)
  • [ ] Scan with Google Lens
  • [ ] Check that all fields populate correctly in the Contacts app
  • [ ] Phone numbers include country code
  • [ ] Special characters in names (accents, non-Latin scripts) display correctly
  • [ ] Scan works under indoor lighting and outdoor daylight
  • [ ] Scan works at the size it will be printed

vCard 4.0: Should You Use It?

vCard 4.0 (RFC 6350) exists and adds features like multiple languages and better structured addresses. However, support is inconsistent -- some Android phones and older iOS versions handle it poorly. Stick with vCard 3.0 for maximum compatibility.

The one exception: if your contacts app supports vCard 4.0 and you need the KIND property (to distinguish individual vs organization vs group), upgrade. For standard business card use, 3.0 is the safe choice.

Related Tools

Want API access + no ads? Pro coming soon.