Skip to content

vCard QR code generator

A vCard QR code carries a complete address-book entry — name, company, phone, email, website, postal address — so scanning a business card creates the contact instead of starting a typing exercise. The one thing that decides whether it works is length.

Generate the code

Content type
Error correction
#000000
#ffffff

Logo overlay (optional)

Live preview

Encoded in your browser. Nothing you type here is uploaded, stored or logged.

How to make a vCard QR code

Create a QR code that adds you to someone’s address book: fill in the contact fields, keep the payload short enough to stay printable, and export SVG for the printer.

  1. Open the generator on this page

    The generator below already opens on the vCard content type, so the contact fields are in front of you. The chips above them switch to any other type if you need one.

  2. Fill in name and organisation

    Enter first name, last name and company. Both the structured name (N) and the display name (FN) are written for you, and FN is filled from the organisation when there is no personal name — which is what stops the contact importing blank.

  3. Add phone, email and website

    Write the phone number in international form with a country code, or it will not dial from abroad, and include https:// in the website so contact apps will open it.

  4. Leave out what you do not need

    Empty fields are omitted from the card entirely. The full example on this page is 284 characters and wants 3 cm of print; dropping the postal address takes it to 170 characters and 2.5 cm.

  5. Test and export

    Scan the preview and check the contact that actually lands in the address book, then download the SVG and print the code at least 3 cm across.

What a vCard QR code contains

vCard is the file format behind the .vcf attachments you get when someone shares a contact. It is plain text: one property per line, a property name, a colon and a value, wrapped in BEGIN:VCARD and END:VCARD. A vCard QR code is nothing more than that text encoded into a QR symbol, which is why it works offline and never expires.

Version 3.0 is what this generator writes. Version 4.0 exists and is technically better, but 3.0 is the version every phone, every mail client and every CRM imports without complaint — and on a printed card, compatibility beats elegance. A fully populated example looks like this (284 characters, lines separated by CRLF as the specification requires):

Encoded string — 284 characters
BEGIN:VCARD
VERSION:3.0
N:Lovelace;Ada;;;
FN:Ada Lovelace
ORG:Analytical Engines Ltd
TITLE:Head of Computing
TEL;TYPE=CELL:+44 20 7946 0000
EMAIL;TYPE=INTERNET:ada@example.com
URL:https://example.com
ADR;TYPE=WORK:;;12 Baker Street;London;;W1U 6TU;United Kingdom
END:VCARD

Empty fields are left out completely rather than written as empty properties, so a card with only a name, a company, a phone number and an email address is considerably shorter — 170 characters instead of 284:

The same person, trimmed — 170 characters
BEGIN:VCARD
VERSION:3.0
N:Lovelace;Ada;;;
FN:Ada Lovelace
ORG:Analytical Engines Ltd
TEL;TYPE=CELL:+44 20 7946 0000
EMAIL;TYPE=INTERNET:ada@example.com
END:VCARD

The properties, and what each one costs you

Property Holds Rule
N Structured name Last;First;;; — five semicolon-separated components, most of them usually empty. This is what a contacts app sorts by, and it is mandatory in vCard 3.0.
FN Display name The formatted name shown in the contact list. Also mandatory. A vCard with N but no FN imports as a blank-looking contact on several phones.
ORG Organisation Company name. Used as the display name when there is no personal name at all.
TITLE Job title Free text. Cheap in characters and the first thing to cut if it is not.
TEL;TYPE=CELL Phone number Write it in international form with a country code. A number stored as 020 7946 0000 will not dial from abroad.
EMAIL;TYPE=INTERNET Email address One address. Adding a second doubles nothing useful and costs about forty characters.
URL Website Include the scheme. Some contact apps refuse to open a bare example.com.
ADR;TYPE=WORK Postal address ;;street;city;;postcode;country — the two leading empty components are the post-office box and extended address, which almost nobody uses.

Escaping

Semicolons and commas are structural inside vCard values — they separate the components of a name and an address — so a literal one in a company name has to be written as \; or \,. A backslash becomes \\ and a line break inside a value becomes the two characters \n. The generator handles all four, which matters more than it sounds: an unescaped comma in Müller, Berger & Partner silently truncates the organisation at import time, and nothing warns you.

Length is the pitfall

A URL is thirty characters. A full vCard is four hundred. That difference is not cosmetic: a QR code grows in discrete steps called versions, each adding four modules per side, and more modules in the same printed area means smaller modules. Smaller modules need a better camera, better light and a steadier hand.

The 284-character card above needs a symbol fine enough that it should be printed at least 3 cm across to stay comfortably readable at arm's length. The trimmed 170-character version drops to about 2.5 cm. That is the entire argument for leaving out the postal address on a business card: it is the single most expensive block of text in a typical vCard, it is rarely what someone scans a card to get, and removing it can be the difference between a code that fits neatly in a corner and one that dominates the layout.

A practical order for cutting, when the payload is too long: postal address first, then the job title, then the website if it is long, then any second phone number. Keep the name, the organisation, one number and one email. If a full card is genuinely required — for a conference badge, say, where there is room — print it larger rather than compressing it.

Printing a vCard code

Download the SVG. On a dense pattern the difference between vector and a scaled-up PNG is visible to the scanner even when it is not visible to you: soft module edges eat into the tolerance the decoder needs, and a vCard code has less of that tolerance to spare than a short link does.

Keep error correction at M unless you are adding a logo. It is tempting to reach for level H on the grounds that more redundancy is safer, but H spends roughly a third of the symbol on recovery data, pushing an already long payload up several versions and making every module smaller at a fixed print size. On a long vCard, level H frequently makes the code harder to scan, not easier. If a logo is required, raise the level to H and then shorten the card until it fits — in that order.

Leave the four-module quiet zone clear, print dark on light, and avoid placing the code across a fold or a die-cut edge. Then scan the printed card with two different phones and actually open the contact that appears: the failure mode with vCards is rarely a code that will not scan, it is a code that scans perfectly and produces a contact with the name missing or the company truncated at a comma.

Common questions

vCard or MeCard — which should I use?

vCard. MeCard is shorter, which was a real advantage when scanners were worse, but vCard 3.0 is what every phone, mail client and CRM imports without help, and it carries fields MeCard has no room for. Use MeCard only when the payload is so long that dropping to it is what makes the code printable, and even then trimming fields is usually the better fix.

Why does my contact import with an empty name?

Almost always a missing FN property. vCard 3.0 requires both N (the structured, sortable name) and FN (the display string), and hand-written cards frequently ship only one. The generator on this page always writes both, filling FN from the organisation when there is no personal name.

How long can the vCard be?

Technically about 2,300 characters at error correction level M, but that is far past the point where the code becomes unusable. Every character adds modules, and a denser pattern needs to be printed larger and held steadier. Around 300 characters is a comfortable ceiling for a business card; past 500 the code starts to demand more space than a business card has.

Should I put a link to a contact page in the code instead?

It is a genuine trade-off. A short URL keeps the code coarse and lets you correct a typo later, but it needs an internet connection at the moment of scanning and it depends on your page staying up. A vCard works offline, forever, and cannot be edited after printing. For a printed business card, the vCard is usually the better bet — the code has to work in a noisy room with one bar of signal.