vCard or MeCard for a contact QR code?
MeCard makes a smaller, easier-to-scan code. vCard is understood by everything. Which trade-off wins depends on how small you are printing.
A contact QR code carries more text than almost any other type, which makes it the one where format choice has a visible effect on the pattern.
The two formats, side by side
Both are plain text. The phone recognises the prefix and offers to create a contact.
vCard 3.0 — the standard:
`` BEGIN:VCARD VERSION:3.0 N:Lovelace;Ada;;; FN:Ada Lovelace ORG:Analytical Co TEL;TYPE=CELL:+15551234567 EMAIL:ada@example.com END:VCARD ``
MeCard — the compact alternative:
`` MECARD:N:Lovelace,Ada;ORG:Analytical Co;TEL:+15551234567;EMAIL:ada@example.com;; ``
Same information. Roughly 40% fewer characters.
Why the character count matters
Fewer characters means fewer modules, and fewer modules at the same physical size means each module is larger. Larger modules are easier for a camera to resolve.
So MeCard genuinely produces an easier-to-scan code at small sizes. That is not marketing — it is arithmetic.
Why vCard still wins most of the time
Support. vCard is understood by iOS, Android, Outlook, macOS Contacts, Thunderbird, and essentially every CRM that imports contacts. It has been the standard since the 1990s.
MeCard came from the Japanese feature-phone era. Modern iPhones and Android phones read it, but support degrades once you leave the phone: desktop address books, older devices, and some scanner apps handle it poorly or not at all.
The failure mode is worse. A dense vCard that fails to scan is obvious — the person tries again, moves closer, and it works. A MeCard that scans but is not understood produces a confusing dead end: something happened, no contact was created, and nobody knows why.
The decision
| Situation | Use |
|---|---|
| --- | --- |
| Business card, 15 mm or larger | vCard |
| Business card below 15 mm | MeCard, or cut vCard fields |
| Conference badge | vCard — many scanners are laptops |
| Email signature | vCard |
| Anything a CRM will import | vCard |
| Sticker on equipment, very small | MeCard |
Our vCard generator uses vCard 3.0 for exactly this reason: the safe default matters more than the smaller pattern in most real situations.
The better lever: cut fields
Before reaching for MeCard, try removing data. This usually helps more than changing format:
Keep: name, one phone number, email
Consider dropping: - Street address — the single heaviest field, and rarely useful in a phone contact - Job title — nice to have, costs modules - Second phone number — pick one - Website — often already on the printed card - Fax — it is 2026
A vCard with name, phone and email is not much larger than the equivalent MeCard. Most of the density people complain about comes from the address.
Print size, specifically
Contact codes are read at arm's length from a card held in the hand:
- Absolute minimum: 15 mm
- Comfortable: 20 mm
- Quiet zone: 4 modules of empty space — do not let the card design run into it
If your layout cannot give a code 15 mm, the honest answer is that the card does not have room for a QR code. A code that fails is worse than no code.
Accents, non-Latin names and encoding
This is where contact codes break in ways nobody anticipates.
A QR code can encode UTF-8, so José, Müller and 王 all work in principle. Two things go wrong in practice:
Byte cost. An accented character takes two bytes instead of one; a Chinese character takes three. So José Antônio Gonçalves costs meaningfully more modules than the same length in plain ASCII. A name in a non-Latin script can push a code from comfortable to dense on its own.
Older scanner apps occasionally mangle non-ASCII in MeCard, because the format predates widespread UTF-8 handling. vCard 3.0 with UTF-8 is far better tested here.
If your name or company uses characters outside plain ASCII, that is another point for vCard — and another reason to drop the address field to buy back the modules.
What about several people on one code?
vCard supports multiple entries in a single payload: repeat the BEGIN:VCARD … END:VCARD block for each person.
It technically works, and phones will offer to add several contacts. But two problems make it a bad idea in print:
- The payload multiplies, so the code becomes very dense very fast
- Behaviour varies: some phones add all contacts, some add only the first, some show a confusing picker
For a team, one code per person is more reliable. For a company, point a single URL code at a page listing everyone — far less data in the code, and you can update it later.
Test the way a recipient will
- Print the card at final size, on the real stock
- Scan with an older Android, not your newest phone
- Confirm a contact is actually created, not just that something was read
- Check that accented characters and non-Latin names survived
Step 3 is the one people skip, and it is where MeCard problems surface.
In short
- vCard unless you have a specific reason not to — universal support beats a smaller pattern
- MeCard produces a ~40% shorter payload, useful below 15 mm
- Cutting the address field usually helps more than switching format
- 15 mm minimum on a business card, 20 mm comfortable
- Test that a contact is created, not just that the code scans
- Accented and non-Latin characters cost extra bytes — budget for them
- One code per person; do not stack several vCards into one code
Create a contact QR code — vCard 3.0, free, with vector export for print.