There are three text formats you'll encounter when a QR code encodes contact info: MECARD, vCard, and a plain tel: URI. They look similar, they solve similar problems, and they behave slightly differently when scanned. Understanding which one you're generating (or someone else generated) saves a lot of "why did this scan open a browser instead of Contacts?" moments.
tel: URI — the simplest option
A phone number encoded as a URI:
tel:+85298765432
Scanning offers "Call this number." Nothing gets saved to contacts. Great for a poster or a menu QR whose only purpose is "call to order," terrible for a business card where you want the person to save you.
MECARD — Japan's original mobile contact format
MECARD was designed by NTT DoCoMo in 2003 for early Japanese camera phones that couldn't handle the full vCard spec. It's compact and single-line:
MECARD:N:Chen,Alice;TEL:+85298765432;EMAIL:alice@example.com;;
Pros: compact QR (roughly half the size of the equivalent vCard). Cons: no addresses, no organizations, no photos, no URLs. Modern iOS still handles MECARD scans by opening a contact preview, but the field mapping is minimal.
vCard — the industry standard
vCard is what most CRMs, email clients, and phone address books actually use for import/export (as .vcf files). Version 3.0 is the most widely supported today; version 4.0 is stricter and UTF-8 native but has patchier support.
BEGIN:VCARD VERSION:3.0 FN:Alice Chen N:Chen;Alice;;; ORG:RingLink_HK TITLE:Founder TEL;TYPE=CELL:+85298765432 EMAIL:alice@example.com URL:https://ringlink.app ADR;TYPE=WORK:;;100 Main St;Central;;;Hong Kong END:VCARD
Every field you'd expect on a business card fits. Multiple phones, multiple emails, addresses, birthdays, notes, photographs (as base64) — all supported. The tradeoff is size: a full vCard with a photo can push a QR up to Version 30 or 40 (out of 40 defined sizes), which starts to look like static.
Which one gets scanned as "Add to Contacts"?
- vCard — always opens the contact add flow on iOS and Android. Any field the phone doesn't understand is preserved but hidden.
- MECARD — opens the contact add flow on most phones, but has been dropped by some Android launchers. Fine for Japan and older phones; risky for global use.
- tel: — opens the dialer with a "call" and "add to contacts" option. Requires an extra tap for saving.
Why Ringlink shared cards use a URL instead of embedding a vCard
On a Ringlink public name card, the QR encodes the URL of the card, not the vCard content. That means:
- The QR stays small regardless of what's on the card.
- Updates to the card (new photo, new title) apply immediately — everyone who scans the QR sees the current version.
- Recipients see the card visually before saving. A vCard QR bypasses that step.
On the card page we generate a proper vCard on demand when the visitor taps "Save to contacts," so the end result is the same but with a much better preview experience.
Payment QRs are a whole other world
WeChat Pay, Alipay, Zalo Pay, KakaoPay, PayNow, PromptPay, UPI, and Interac all use their own QR formats. Some (EMV-QRCPS) are standardized; many are proprietary. Scanning a payment QR into a general-purpose reader like Ringlink or your Camera app will typically just show gibberish or an opaque URL, because the payment apps read a private handshake inside the payload.
Two-tier scanning behavior
On modern phones the Camera app scans QRs, but so does the Wallet app, the payment apps, and (on Android) any app that registered an ACTION_VIEW intent for the URL scheme. When you point your camera at a QR you're seeing a "best guess" from the OS. If the guess is wrong (e.g. WeChat opens when you wanted Contacts), open a different scanner — the underlying data hasn't changed.