A vCard QR code that actually imports, with the escaping done right
| Property | vCard 3.0 (RFC 2426) | vCard 4.0 (RFC 6350) |
|---|---|---|
| Phone | TEL;TYPE=CELL:(512) 555-0192 | TEL;VALUE=URI;TYPE="cell":tel:+15125550192 |
EMAIL;TYPE=INTERNET,WORK:โฆ | EMAIL;TYPE=internet,work:โฆ (lowercase, quoted if multi) | |
| Preferred number | First TEL wins in most apps | PREF=1 parameter ranks numbers explicitly |
| Line folding | 75 octets, CRLF + space | Same rule, same 75 octets |
| Typical payload, same data | 389 octets โ version 15 QR (77ร77) | 415 octets โ version 16 QR (81ร81) |
| Best use | QR on printed cards | Email attachments, server-side exchange |
Both versions import cleanly on iOS and Android. For printed cards 3.0 wins on physics alone: the payload is smaller, so the code has fewer modules and scans more forgivingly at small sizes.
| QR version | Modules | Holds (bytes) | Min print @ 0.33 mm/module | Reads from ~ |
|---|---|---|---|---|
| 4 | 33ร33 | 62 | 10.9 mm | 11 cm |
| 6 | 41ร41 | 106 | 13.5 mm | 14 cm |
| 8 | 49ร49 | 152 | 16.2 mm | 16 cm |
| 10 | 57ร57 | 213 | 18.8 mm | 19 cm |
| 12 | 65ร65 | 287 | 21.5 mm | 21 cm |
| 14 | 73ร73 | 362 | 24.1 mm | 24 cm |
| 16 | 81ร81 | 450 | 26.7 mm | 27 cm |
Module size is the honest floor for print: below roughly 0.33 mm per module, phone cameras start struggling at card-reading distance. The scan-distance column applies the 10:1 rule (readable from about 10ร the code's width). Cut the note and second phone and your card drops two versions, which is often the difference between a crisp code and a smudge.
Most free "vCard QR" tools glue your fields together with naive string joins and hope for the best. That works until a company name contains a comma, or an address runs past 75 octets, and then the contact silently fails to import. This generator follows the actual vCard rules: it escapes backslashes, semicolons and commas, converts newlines to literal \n, folds long lines with CRLF and a single space, and joins everything with CRLF line endings the spec requires.
A vCard is plain text: BEGIN:VCARD, a VERSION, one property per line, END:VCARD. The structured N property carries family, given, middle, prefix and suffix separated by semicolons, while FN is the display name. ORG, TITLE, TEL, EMAIL, URL, ADR and NOTE do what they say. In 4.0, phone numbers become tel: URIs with visual separators stripped.
Fill in whatever you want on the card and leave the rest empty; empty properties are omitted rather than emitted blank. Toggle 3.0 versus 4.0 and watch the payload size and QR version react in the stats panel. Then export: PNG at 1200 pixels for digital use, SVG for print shops that want vectors, the .vcf if you'd rather email the contact or open it directly, and the 10-up PDF when you're printing sheets to cut yourself. The PDF is a standard US Letter page with ten 3.5ร2 inch cards, crop ticks at each corner, and the QR at 0.95 inch (285 pixels at 300 DPI).
Take the preloaded sample: Bao Nguyen, Nguyen Dental LLC, two phone numbers, email, website, full Austin address and a one-line note. As vCard 3.0 that's 389 octets. The generator picks the smallest QR version that holds it at error correction M, which is version 15: a 77ร77 grid. At the 0.33 mm/module floor that's a 25.4 mm code, almost exactly one inch, scannable from about 25 cm. Switch to 4.0 and the same details grow to 415 octets because each phone becomes a tel: URI, pushing the code to version 16 (81ร81) and a 26.7 mm minimum print.
Now trim it the way a print shop would. Drop the note and the second phone and the card falls to 293 octets, QR version 13 (69ร69 modules), with a 22.8 mm minimum print. Drop the address too and you're at 224 octets, version 11, 61ร61 modules, comfortable at 20.1 mm. Same contact essentials, a code that scans from across a desk. That's the practical case for keeping printed-card vCards lean and putting the long bio behind the website URL instead.
Encode your contact details as a vCard, render it as a QR code, and print the code at least 2 cm (about 0.8 in) wide on the back of the card. A full vCard with address and note produces a version 15 QR code (77 by 77 modules), which needs about a 1 inch print to scan reliably from normal card-handling distance. Trim the note field to get a smaller, easier code.
Use 3.0 for QR codes. Both scan fine on iOS and Android, but a 4.0 card is larger for the same data because phone numbers become tel: URIs, so the QR version grows and the code gets denser. The same contact card that takes 389 octets in 3.0 takes 415 in 4.0, jumping from a 77x77 to an 81x81 module code.
MECARD is an older, compact format from Denso that some QR generators still emit because it is short. It only supports a name, one phone, email, address and note, with no version field, no multiple typed numbers and no structured extensions. vCard is the IETF standard (RFC 2426 for 3.0, RFC 6350 for 4.0) and is what modern contact apps exchange.
Usually escaping. In vCard, commas, semicolons and backslashes must be preceded by a backslash, newlines become the two characters backslash-n, and lines longer than 75 octets must be folded with CRLF plus a space. A company like Nguyen Dental, LLC encoded without the escaped comma becomes two separate ORG values and some parsers reject the whole card.
At least 2 cm by 2 cm, and 2.5 cm (1 inch) if the code carries a full vCard. The rule of thumb is the code should be one tenth of the expected scanning distance, and a card is usually read from 20 to 25 cm away. Keep a white quiet zone of 4 modules around it and avoid printing over a dark background.
No. A vCard QR code is static: the contact data lives inside the code itself, so it scans the same in ten years with no subscription. Dynamic QR services that redirect through a short link can expire when the plan lapses, which is a real risk for a card you print by the thousand.