vCard QR Code Generator Online
Put your whole contact card on a business card — one scan saves it to the phone address book.
A full contact card — scanning offers to save it straight into the phone address book.
The three corner squares always stay square — scanners lock onto them first.
Fine at 1 for screens. Raise it to 4 before printing — that is the specification minimum, and too little margin is the most common print failure.
Drop one image here or click to select
PNG, JPG, WebP, SVG — screenshots, logos, or icons
- First name
SVG is vector — use it for anything printed. PNG is the right choice for screens.
How to create a vCard QR code
- Fill in at least a first name — everything else is optional, and empty fields are left out of the card entirely.
- Add the phone numbers you want reachable. Mobile and work are stored separately so the phone labels them correctly.
- Fill in the address only if it belongs on the card. It is the single biggest contributor to code density.
- Style the code and optionally add your company logo — error correction moves to level H automatically.
- Export as SVG for business cards and print, or PNG for an email signature or website.
vCard, MECARD and the version question
There are three competing contact formats that fit into a QR code, and picking the wrong one is a common source of "it saved on my phone but not my colleague's".
| Format | Support | Size | Verdict |
|---|---|---|---|
| vCard 3.0 | Universal — iOS, Android, Outlook, macOS | Moderate | The safe default, used here |
| vCard 4.0 | Patchy on older Android and Outlook | Similar to 3.0 | Newer spec, worse real-world support |
| MECARD | Good on Android, weak on iOS | Smallest | Only worth it when size is critical |
This tool emits vCard 3.0. It is not the newest revision, but it is the one every phone, every mail client and every CRM importer handles without complaint. vCard 4.0 offers better structure for edge cases nobody encodes into a QR code anyway, and pays for it with importer quirks.
BEGIN:VCARD VERSION:3.0 N:Lovelace;Ada;;; FN:Ada Lovelace ORG:Analytical Engines Ltd TITLE:Lead Engineer TEL;TYPE=CELL:+44 20 7946 0958 EMAIL:ada@example.com URL:https://example.com ADR;TYPE=WORK:;;12 Baker St;London;;NW1 6XE;UK END:VCARD
Two details in that snippet matter more than they look. N: stores the name in structured form as `last;first;middle;prefix;suffix`, while FN: is the display name — importers need both. And every line ends with a carriage return plus line feed, not a bare newline. Some iOS importers reject a card that uses LF alone, which is a bug that is almost impossible to diagnose from the phone side.
Keeping the code scannable — capacity is the real constraint
A vCard is far larger than a URL, and every field you add pushes the code to a higher version with smaller modules. On a business card printed at 2 cm, that difference decides whether the code scans on the first try or the third.
| What you include | Roughly | Version at level M | Scans well at 2 cm? |
|---|---|---|---|
| Name, mobile, email | ~120 bytes | ~7 | Yes, comfortably |
| + company and job title | ~170 bytes | ~9 | Yes |
| + website | ~200 bytes | ~10 | Usually |
| + full postal address | ~290 bytes | ~13 | Marginal — print larger |
| + a long note | ~400 bytes | ~16 | No — enlarge or trim |
What to cut first
- The note field — almost always the worst value per byte
- The postal address — unless people genuinely post you letters, this is dead weight
- The second phone number — one reachable number beats two unscannable ones
- Long URLs — link to a short domain rather than a deep path
A useful rule for print: if the code needs a version above 12 to hold your data, either enlarge the printed code or trim fields. The live preview here shows the byte count and warns before you cross into territory that will not survive a business card.
Escaping — why a comma in a job title can break the import
vCard uses semicolons and commas as structural delimiters, so both must be escaped inside values. A job title like "Head of Sales, EMEA" contains a comma that an unescaped encoder passes straight through — the importer then reads it as a field separator and mangles the record.
# Wrong — the comma reads as a delimiter TITLE:Head of Sales, EMEA # Correct TITLE:Head of Sales\, EMEA # Semicolons too ORG:Acme\; Inc # And line breaks become a literal \n sequence NOTE:First line\nSecond line
This tool escapes backslash, semicolon and comma in every value, and converts line breaks in the note field to the literal `\n` sequence the specification requires. You can type punctuation naturally and it will import correctly.
Where a vCard code belongs — and where it does not
Good fits
- Business cards — the classic use, and the reason SVG export matters. Print it on the back at 2 cm or larger
- Conference badges — attendees swap contacts with a scan instead of typing
- Email signatures — a small PNG that recipients can scan from their screen
- Shop windows and vehicle livery — for trades where people want to save your number on the spot
- Trade show stands — far better conversion than a bowl of paper cards nobody reads later
- Real estate and property signage — a buyer saves the agent's number from the yard sign without pulling over to type it in
Poor fits
- Details that change often — the code is static, so a new phone number means reprinting everything
- Personal contact details in public — the code is machine-readable by anyone who photographs it
- Anything needing analytics — a static vCard cannot tell you how many people scanned it
- Shared team or department numbers — these rotate more often than one person's card, and a reprint cycle nobody owns is how outdated codes end up in circulation
That last point is worth stating plainly, because it is the main argument for the paid dynamic-QR services. If you genuinely need scan counts, you need a redirect service and the dependency that comes with it. If you just want people to save your number, a static vCard is simpler, free, private and permanent — and most people printing a business card fall squarely into that second group.