vCard QR Code Generator

Turn your contact details into a scannable vCard QR code. Recipients can save your name, phone, email, and company instantly. Free forever.

A vCard QR code is a contact file, not a link

Most QR codes point somewhere. A vCard code is different: it carries the entire contact record inside the image. Scan it with no internet connection, on a plane, in a basement conference hall with no signal, and the contact still saves. Nothing is fetched, nothing expires, and there is no service in the middle that can shut down and break your business cards.

The trade-off is that the data is frozen. Change your phone number and every card you have handed out is now wrong, with no way to update it. That single property should drive your decision between a vCard code and a code pointing at a hosted contact page.

What gets encoded

The generator above builds a standard vCard 3.0 record:

BEGIN:VCARD
VERSION:3.0
N:Okonkwo;Amara
FN:Amara Okonkwo
ORG:Fieldwork Studio
TEL:+441632960123
EMAIL:[email protected]
END:VCARD

N is the structured name (family, given), FN is the display name, and both are required by the spec — some Android contact importers reject a record that has one without the other. TEL should be in E.164 format (+ followed by country code and number, no spaces, brackets or dashes) so the number works when dialled from another country.

Why vCard codes look so much busier

This is the practical thing to understand about vCard QR codes. The payload above is around 150 characters before you add a website, address, or job title. A full record with all of those easily exceeds 300 characters.

QR code capacity is fixed in steps called versions, from version 1 (21 × 21 modules) up to version 40 (177 × 177). Each version adds four modules per side. A 40-character URL fits in a version 3 code with a comfortable grid; a 300-character vCard pushes you to version 12 or beyond, which means far more, far smaller modules in the same printed area.

Payload Approximate characters Typical version Visual result
Short URL 25 2–3 Chunky, scans from a distance
Minimal vCard (name, phone, email) 130 7–8 Moderate density
Full vCard (+ org, title, address, web) 320 12–14 Fine grid, needs size and print quality

The consequences are real: a dense code printed at 2 cm on a matte business card with slight ink spread becomes genuinely hard for older phone cameras to resolve.

Three ways to keep the code readable

1. Trim the record. Every field you drop buys you visual clarity. Job title, postal address and fax number are usually dead weight on a business card — the person scanning wants to reach you, not file you. Name, one phone number, one email and a company name is enough for 95% of cases.

2. Consider MECARD instead. MECARD is a compact contact format, originally from NTT DoCoMo, that encodes the same essentials in roughly half the characters:

MECARD:N:Okonkwo,Amara;TEL:+441632960123;EMAIL:[email protected];;

Android reads it natively and iOS handles it through most scanner apps, though iOS Camera support is less consistent than for vCard. If your audience is mixed, vCard is the safer default; if you need the smallest possible code and can test your audience's devices, MECARD wins on density.

3. Use error correction level L or M. Higher error correction adds redundancy, which adds modules. Level H (30% recovery) inflates a vCard code substantially and is only worth it when you are placing a logo over the centre. For a clean printed card, L or M keeps the grid coarse.

Lowering the error correction is not free

If you are embedding a logo in the middle of the code, you are deliberately destroying data and relying on error correction to reconstruct it. That works, within limits:

Level Recoverable data Safe logo coverage
L 7% Not recommended
M 15% Up to ~10% of the code area
Q 25% Up to ~15%
H 30% Up to ~20%

Never place a logo over the three large finder patterns in the corners or the smaller alignment patterns. Those are structural — error correction cannot rebuild them, and a code with an obscured finder pattern will not be detected at all, no matter how much redundancy you added.

Testing before you print 500 cards

A vCard code that scans on your phone in your office may fail on a colleague's three-year-old Android in a dim restaurant. Before committing to a print run:

  1. Print a single proof at final size, on the actual card stock. Do not test from a screen — screens are backlit and forgiving in a way that paper is not.
  2. Scan it with an iPhone, a recent Android, and one older device if you can find one.
  3. Check what the contact card looks like after import. Some Android skins map ORG oddly, and a missing FN field can produce a contact with a blank name.
  4. Test at arm's length, not 5 cm away. People hold business cards at reading distance.

When to use a hosted contact page instead

Point the QR code at a URL rather than encoding a vCard when:

The cost is that it stops working offline, and the page must stay online forever or the card becomes a dead link. Neither approach is universally better. Encode the vCard for a stable set of details you control; use a URL when the content behind it needs to evolve.

Frequently asked questions

Does the contact save automatically when scanned?

No, and it should not. Both iOS and Android show a preview of the contact and require the user to tap Add Contact or Save. A QR code cannot silently write to someone's address book.

Should I use vCard 3.0 or 4.0?

3.0 has the broadest support and is what the generator above produces. vCard 4.0 adds fields that most phone contact importers still ignore, so the extra compatibility risk buys you very little for a business card.

Can I include a photo in the vCard?

Technically yes, by base64-encoding it into a PHOTO field, but in practice never do this. Even a small image adds thousands of characters, pushing the code to a version so dense it becomes unscannable at printable sizes.

Why does my phone number not dial correctly abroad?

Because it was encoded in national format. Use E.164 — a plus sign, the country code, then the number with no spaces or punctuation, for example +441632960123. This works from any country.

How large should the code be on a business card?

2 cm square is the practical minimum for a trimmed vCard, and 2.5 cm is safer. If your record is long enough to need that much density, cutting fields is a better fix than shrinking the quiet zone.

Can I update the details after printing?

Not for an encoded vCard — the data lives in the image itself. If you expect changes, encode a URL to a contact page you control instead, and accept that the card then depends on that page staying online.

Are my contact details sent to your servers?

No. The vCard string is assembled and rendered entirely in your browser. Nothing you type into the form leaves your device.