Open the vCard QR Code Generator
Most business cards end up in a drawer. A vCard QR code changes the outcome of that thirty-second exchange: instead of promising to type your details in later, the other person scans, taps Add contact, and your name is searchable in their phone before the conversation ends. This guide covers what goes inside the code, the field reference, how large to print it on a card, and the import quirks that make some codes look broken.
What is a vCard QR code?
A vCard QR code contains a complete vCard record — the same plain-text format used by the
.vcf files that email clients attach and phones import. The reader recognises the
BEGIN:VCARD opening line, parses the fields, and shows a contact preview with a button to save it.
Nothing is fetched from a server; the entire contact lives in the printed pattern, so it works with the phone in
airplane mode.
The format is old and stable, which is why it works so widely. vCard 2.1 dates from 1996, version 3.0 is specified in RFC 2426, and version 4.0 in RFC 6350. This generator produces version 3.0, which is the pragmatic choice: it has the broadest support across iOS, Android and desktop address books, whereas 4.0 is cleaner but still unevenly implemented by phone importers.
There is a design decision hiding here. A vCard code is static — the details are in the ink, so a job change makes every printed copy wrong. The alternative is a URL QR code pointing at a profile page you control, which you can edit at any time. Our view: for a personal card you reprint every couple of years, the vCard is better, because it works offline, saves instantly and depends on nothing. For a sales team with turnover, or badges reused across events, encode a URL instead and keep the data server-side.
When to use a vCard QR code
- Printed business cards. Back of the card, bottom-right, 20–25 mm. The front stays clean; the code does the data entry.
- Conference badges. Scanning a badge is faster than exchanging cards while holding a coffee, and it works both ways at a stand.
- Trade show stands and pull-up banners. One code per person on the team, labelled with their role, so visitors capture the right contact rather than a generic inbox.
- Service vehicles and site hoardings. Plumbers, electricians, surveyors: a code on the van door that saves your number means the neighbour who noticed you can call next month, when they need you.
- Estate agent boards and property brochures. The listing agent's direct line, saved without typing, while the viewer is standing outside the house.
- Quotes, invoices and job sheets. A code in the footer of a PDF gives the client your details in a form they can actually call, rather than a signature block they have to copy.
- Reception desks and consulting rooms. A card with the practice's phone number and email that patients can save before they leave.
- CVs and portfolios. Useful when the document is printed or handed over as a PDF that someone reads on a phone.
Where we would not bother: in an email signature, on a website, or in a slide deck viewed on a laptop. If the
reader is already on a device, a mailto: link or a tel: link is one tap, and asking
them to scan their own screen with a second phone is worse than useless.
How to create a vCard QR code
- Decide which identity you are handing out. Direct mobile or switchboard? Personal email or a role address? For anything printed in volume, or displayed publicly, prefer numbers and addresses that can be reassigned when someone leaves.
- Write the phone number in international format —
+44 20 7123 4567,+1 555 123 4567. A local-format number saved by someone abroad will not dial. - Open the vCard generator and fill in name, phone, email, company and website. Leave anything you do not need blank — each field you add makes the code denser.
- Generate and check the preview, then download the PNG. Use 400 pixels for print.
- Scan it and actually save the contact, on an iPhone and on an Android phone. Then open the saved entry and check the name, the number and the spelling of the company. This catches the majority of problems before they cost you a print run.
- Print a proof at final size on the real card stock, and scan that. A code that reads on a monitor can still fail on uncoated 400 gsm with ink spread.
- Place it with clear space around it, away from folds, die-cut edges and the trim area, and never across a spot-UV panel.
The data format
A vCard is a list of PROPERTY:value lines wrapped in a begin and end marker. The generator here
produces exactly this, with a newline between lines:
BEGIN:VCARD
VERSION:3.0
FN:Jane Smith
ORG:Example Co.
TEL:+1 555 123 4567
EMAIL:jane@example.com
URL:https://example.com
END:VCARD
Empty fields are dropped rather than written as blank properties, which keeps the payload as small as possible. The example above is about 130 characters — enough to need a version 8 symbol (49 × 49 modules) at error correction level M, where the byte-mode limit is 152. That is roughly twice the grid density of a WiFi code, and it is the single most important fact about vCard QR codes: they are big, so print them bigger.
| Property | What it holds | Notes |
|---|---|---|
BEGIN:VCARD / END:VCARD |
Record delimiters | Both are mandatory. A missing END line makes the whole record invalid. |
VERSION:3.0 |
Format version | Must be the second line. 3.0 has the widest importer support; 4.0 is newer but less predictable on phones. |
FN: |
Formatted name | The display name, e.g. FN:Jane Smith. Required in vCard 3.0. |
N: |
Structured name | Five semicolon-separated parts: N:Smith;Jane;;Dr;PhD — family, given, middle,
prefix, suffix. Modern phones fill the name from FN, but some older importers read
N first and show a blank name without it. |
ORG: |
Organisation | Can carry a department after a semicolon: ORG:Example Co.;Sales. |
TITLE: |
Job title | Optional. Worth omitting if you are promoted more often than you reprint cards. |
TEL: |
Phone number | Repeatable, and typed: TEL;TYPE=CELL:+15551234567,
TEL;TYPE=WORK,VOICE:.... Always use the + country prefix. |
EMAIL: |
Email address | Repeatable, optionally EMAIL;TYPE=WORK:. |
URL: |
Website | Include the scheme. https://example.com, not example.com. |
ADR: |
Postal address | Seven semicolon-separated parts: PO box, extended address, street, locality, region, postal code,
country — ADR;TYPE=WORK:;;12 High St;Bristol;;BS1 4ST;UK. Adds 50–80 characters,
so only include it if people visit. |
NOTE: |
Free text | Line breaks are written as the two characters \n. Keep it short or skip it. |
PHOTO: |
Embedded image | Technically possible, practically not: see below. |
Escaping and formatting rules
Inside a value, the characters \, ; and , must be escaped with a
backslash, because semicolons and commas separate structured components. A company called
Smith, Jones & Co. should be written ORG:Smith\, Jones & Co. if you want the
comma preserved rather than treated as a separator. Colons inside values are fine and need no escaping.
The specification also folds lines longer than 75 octets by inserting a line break followed by a single
space, and continuation is signalled by that leading space. It rarely matters at business-card scale, but it
explains why a long NOTE copied out of a .vcf file sometimes looks oddly broken.
Why you cannot embed a photo
A QR code's absolute ceiling is 2,953 bytes, in byte mode at error correction level L, using a version 40
symbol of 177 × 177 modules. A base64-encoded JPEG, even a heavily compressed 100 × 100 avatar, is
typically 3–8 KB — past the limit before you add a single contact field. And a version 40
symbol printed at 25 mm would give modules of about 0.13 mm, far below what any press can hold. If you
want a photo attached to the contact, use a URL pointing at a profile page and let the phone fetch
the image.
How fields affect the symbol size
| Fields included | Approx. payload | Version at level M | Grid |
|---|---|---|---|
| Name, phone | ~55 chars | 4 | 33 × 33 |
| Name, phone, email | ~80 chars | 5 | 37 × 37 |
| Name, org, phone, email, URL | ~130 chars | 8 | 49 × 49 |
| Above plus title and address | ~210 chars | 10 | 57 × 57 |
| Above plus a two-line note | ~300 chars | 13 | 69 × 69 |
Every four modules added to each side means each module gets smaller at the same printed width. That is the trade you are making when you add "just one more field" to a code destined for a business card — and it is why the shortest useful vCard is usually the best one.
Sizing and printing
Start from the 10:1 rule — code width about one tenth of the scanning distance — then add a margin, because vCard codes carry more data than most other types and therefore have finer modules at the same width.
| Placement | Scan distance | Minimum code width | Notes |
|---|---|---|---|
| Business card | 20–25 cm | 2–2.5 cm | 2 cm only for a short vCard; 2.5 cm if you include a website and address |
| Conference badge | 30–40 cm | 3 cm | Below the name, not on the lanyard tab that flips over |
| Letterhead or invoice footer | 30 cm | 2.5 cm | Keep it out of the 10 mm bleed margin |
| A4 flyer or CV | 40 cm | 4 cm | Top-right corner survives stapling and hole punches |
| Pull-up banner / stand graphic | 1–1.5 m | 12–15 cm | At 130–150 cm from the floor |
| Shop window or door | 1–2 m | 15–20 cm | Matte vinyl only; glass reflections defeat scanners |
| Van door or site hoarding | 2–4 m | 25–40 cm | Only where people can stand still to scan |
The number that decides success is module size, not code size. Calculate it as
code width ÷ (grid modules + 8), where the 8 accounts for the four-module quiet zone on each
side. A 49-module vCard code printed 20 mm wide gives 20 ÷ 57 ≈ 0.35 mm per module —
under the 0.4 mm floor we would accept for offset or laser print. Two ways out: print it 25 mm wide
(0.44 mm modules), or drop the website field to bring the symbol down to version 6 or 7. Both work; adding
more fields and hoping does not.
| Grid | At 20 mm wide | At 25 mm wide | At 30 mm wide |
|---|---|---|---|
| 33 × 33 | 0.49 mm | 0.61 mm | 0.73 mm |
| 41 × 41 | 0.41 mm | 0.51 mm | 0.61 mm |
| 49 × 49 | 0.35 mm | 0.44 mm | 0.53 mm |
| 57 × 57 | 0.31 mm | 0.38 mm | 0.46 mm |
Keep modules at 0.4 mm or above for offset and laser, 0.6 mm for thermal or low-grade label stock, and 1 mm for screen printing on textiles. On resolution: the 400 pixel PNG holds 300 dpi up to about 3.4 cm, which covers cards, badges and letterheads. For banners and vehicle graphics, have the code redrawn as vector artwork at final size, or at minimum ask the printer to scale it with no smoothing so module edges stay hard.
Finishing choices matter more than people expect. Gloss lamination and spot UV over a code create specular glare exactly where the camera is looking; matte or soft-touch laminate is safe. Avoid textured or laid stock at small sizes, since the fibre pattern breaks up 0.4 mm modules. And keep the code at least 5 mm from the trim edge, because guillotine drift of a millimetre or two can eat a quiet zone.
Common mistakes and how to fix them
| Symptom | Cause | Fix |
|---|---|---|
| Contact saves with a blank name on some Android phones | Importer reads the structured N: property, which is absent |
Add N:Family;Given;;; alongside FN: if you need to support older
importers. Test on the oldest phone you can find. |
| Saved number will not dial from abroad | Local format without a country code | Always encode E.164 style: +44..., +1.... Regenerate and reprint. |
| Company name truncated at a comma | Unescaped , or ; treated as a field separator |
Escape as \, and \;, or simply drop the punctuation from the name. |
| Code scans on screen but fails on the printed card | Too many fields, so modules fell below the printable size | Remove the address or website, or enlarge the code to 25–30 mm. Check the module maths above. |
Reader shows raw text starting with BEGIN:VCARD |
A scanner app that only handles URLs and plain text | Use the native camera app; the payload is correct. Nothing to change in the code. |
| Nothing gets saved even though the preview appears | The user did not confirm — a contact preview still needs an explicit Add tap | Label the code ("Scan to save my contact") so the extra tap is expected. |
| Camera cannot lock on at all | No quiet zone: text, a rule or a photo edge touches the code | Leave four modules of clear space on every side. |
| Glare on the card makes scanning hit and miss | Gloss laminate, varnish or spot UV over the code | Specify matte over the code area, or leave that panel unfinished. |
| Logo dropped into the middle broke it | Overlay damage exceeds what the error correction level can recover | vCard codes are already dense; keep any overlay under about 10% of the area and use level Q or H, or skip the logo on this code type. |
| Details are out of date across a whole print run | Static payload, changed job or number | For roles that change, encode a URL to a profile page you maintain instead of a fixed vCard. |
Privacy and safety notes
A vCard code is personal data in plaintext, printed and handed out. Anyone who photographs it keeps a permanent, machine-readable copy that can be bulk-collected, and unlike a database entry there is no way to revoke it. That is fine for details you would print on a card anyway; it is a bad idea for anything else.
- Do not encode a home address or personal mobile on public signage. A code on a van door or a shop window is readable by everyone who walks past, including at 2am. Use the business address and a business line there, and save the direct mobile for cards you hand over deliberately.
- Prefer role addresses for anything printed in volume.
sales@orbookings@survives staff turnover, keeps personal inboxes out of scraped datasets, and means you do not bin 5,000 leaflets when someone resigns. - Get consent before encoding someone else's details. Putting an employee's name, direct number and email on public materials is processing their personal data; under GDPR and similar regimes that needs a lawful basis, and as a matter of courtesy it needs asking. Keep a record of who agreed to what.
- Expect harvesting. Conference badge codes are photographed en masse, and a vCard is trivially parsed into a spam list. If a personal email is likely to be scraped, encode a forwarding address you can retire.
- Reprint after changes rather than correcting by hand. A crossed-out number beside a code that still saves the old one causes exactly the confusion you were trying to avoid.
On generating the code: your browser assembles the vCard text locally, then requests the QR image from an external image endpoint, so the contact details form part of that request. For a business card this is no different from printing them. For anything you consider sensitive, use offline tooling. Our Privacy Policy sets out precisely what leaves the browser and what does not, and there is no account, no stored history and no scan tracking on our side.
FAQ
What actually happens when someone scans my vCard QR code?
The reader decodes the text, recognises the vCard structure and shows a contact preview with the name, number, email and any other fields you included. The user then taps to add it to their address book. Nothing is saved automatically, and no network connection is needed for any of it.
Which vCard version should I use?
3.0, which is what this generator writes. It is supported by essentially every phone and desktop address book in current use. Version 4.0 is a better specification — cleaner typing, UTF-8 by default — but mobile importers still handle it inconsistently, and a contact that imports with a missing field is worse than a slightly dated format.
Can I include a photo or company logo in the contact?
Not realistically. A QR code holds at most 2,953 bytes and even a small base64 JPEG exceeds that before
any contact fields are added; the resulting symbol would also be far too dense to print on a card. Encode a
URL to a profile page with the image instead.
How many fields should I include?
As few as get the job done: name, one phone number, one email, and a company name if it is not already on the card. Each extra field pushes the symbol to a higher version and shrinks the modules, and most people never look at the address or note fields anyway. If you find yourself wanting six fields, that is a signal to use a URL to a profile page.
Can I update the details after the cards are printed?
No. A static vCard code cannot be edited — the text is in the image. If your role, number or company is likely to change within the life of the print run, encode a URL that you control and put the vCard download behind it. Then you change the page, not the cards.
Should the QR code go on the front or back of the card?
Back, in a corner, with clear space around it. It keeps the front typographically clean and gives the code room to be 25 mm rather than squeezed to 15 mm. Keep at least 5 mm from the trim edge so cutting tolerance cannot clip the quiet zone.
Why does the name appear but not the phone number?
Usually a formatting problem in the TEL line — unusual separators, brackets, or an
extension appended with letters. Stick to digits and a leading +, e.g.
+15551234567, and put extensions in a NOTE if you need them. Rescan and inspect the
saved contact to confirm.
Can I have two phone numbers in one code?
The vCard format allows repeated TEL properties with different types, such as
TEL;TYPE=CELL and TEL;TYPE=WORK. This generator's form takes one number, which
keeps the symbol small. Given that a second number adds around 25 characters and often a whole QR version,
one well-chosen number is usually the right answer.
Do vCard QR codes work on iPhone and Android equally?
Both platforms read them from the native camera app and offer to create a contact. iOS tends to display a
richer preview; Android behaviour varies slightly by manufacturer skin. The main compatibility gap is old
Android importers that expect the structured N: property, which can show a blank name.
Can I see how many people saved my contact?
No. A static vCard code contacts no server, so there is nothing to count — which is also why it keeps working forever and leaks nothing about the person scanning it. If you need to measure interest, encode a URL to a landing page and read your own analytics.
Related QR code guides
- URL QR codes — the alternative when details change often
- WhatsApp QR codes — start a chat instead of saving a number
- WiFi QR codes — share a guest network without typing a password
- Google Review QR codes — turn a happy client into a review
- PDF QR codes — portfolios, capability statements and price lists
- Restaurant menu QR codes — menus on tables and packaging
- EPC / SEPA payment QR codes — get invoices paid by bank transfer