A contact QR code carries a vCard — the same file format your phone already uses for address book entries. Someone scans the code on your business card, taps “Add Contact,” and your details are saved correctly, spelled the way you spell them.
What the code actually contains
No link, no server, no lookup. The vCard text itself is encoded in the pattern, and this is roughly what a working one looks like:
BEGIN:VCARD
VERSION:3.0
N:Reyes;Dana;;;
FN:Dana Reyes
ORG:Northgate Design
TITLE:Studio Manager
TEL;TYPE=CELL:+15551234567
EMAIL:dana@northgatedesign.com
URL:https://northgatedesign.com
END:VCARD
N is the structured name (last, first) and FN is the display name —
phones want both. Everything between the BEGIN and END lines goes into
the contact card exactly as written, so a typo here is a typo in a hundred address books.
Two decisions worth understanding
The code uses vCard 3.0, not 4.0. 4.0 is the newer standard, but Android’s support for it is patchy — some devices import a 4.0 card with fields missing or mangled. 3.0 is read correctly essentially everywhere, and nothing on a business card needs what 4.0 adds.
No photo. A vCard can embed a portrait, and you should not. An image balloons the payload from a few hundred characters into several thousand, which forces the QR code into a much denser grid — more, smaller modules in the same printed square. The result is a code that looks impressive and fails to scan under bad lighting or a slightly unsteady hand.
Even without a photo, a full card runs about 250–350 characters, which is a visually busy code. Print it at one inch or larger, keep it dark-on-light, and leave the quiet margin around it clear. If your card design can only fit something smaller, drop the URL and title and keep name, phone, and email — a shorter vCard is a sparser, more forgiving code.
Static codes versus dynamic codes
This is a static code: the contact details are inside the image. It works forever, with no account and no service in the middle that can expire or be paywalled. It also can never be edited or counted — change jobs and every printed card is out of date, and nothing ever contacts a server, so there is no scan number to look at.
If you expect your details to change, or you want to know how many people scanned the card you handed out at a conference, use a dynamic QR code pointing at a contact page you control instead. The free generator makes both.
Where people use them
- Business cards — the back of the card, beside the printed details rather than replacing them.
- Conference badges — two people swap details in three seconds without either of them opening an app.
- Email signatures and slide decks — a code on your final slide lets a room full of people save your details at once.
- Trade show booths and van doors — print it bigger there; a passer-by scanning from six feet needs a code sized for the distance.
Frequently asked questions
Do my contact details go through your server?
No. The code is generated in your browser, and the vCard text is used only to draw the image on your screen. Nothing is uploaded, logged, or stored on our side.
Can I update my phone number later without reprinting the cards?
Not with a static vCard code — the number is encoded in the image. That is exactly the case a dynamic code solves: point it at a contact page, and you edit the page while the printed code stays the same.
Why does my code look so much busier than a website QR code?
Because it’s carrying far more data. A short URL is 20–30 characters; a full vCard is ten times that, and the grid grows to hold it. Remove optional fields or print the code larger.
Will it work on both iPhone and Android?
Yes. Both read vCard 3.0 from a QR code and offer to create a contact. iOS shows a contact preview you confirm; Android hands the card to your contacts app to import.
Make your contact code
Fill in your details, watch the code render as you type, and download it for your card.
Create a vCard QR code Free, no account, generated in your browser.Last updated September 18, 2026.