You've probably scanned a QR code that put a contact straight into your phone book, and another that just opened a link to Facebook. Both are "contact QR codes," but they use very different encodings underneath. Which one you generate matters for whether the scan lands people where you want.
What's inside a contact QR
A QR code is just an image encoding of a text string. When your phone camera scans it and sees text that looks like a phone number, a URL, or a vCard, it offers actions:
- Text starting with
tel:→ "Call this number" - Text starting with
sms:→ "Send SMS" - Text starting with
https://wa.me/→ "Open in WhatsApp" - Text starting with
BEGIN:VCARD→ "Add to Contacts" - Anything else → "Open link" or "Copy text"
Why some scans open Contacts and others open WhatsApp
It comes down to what was encoded. A QR whose content is a wa.me URL opens WhatsApp. A QR whose content is a vCard opens the Contacts app. This is not the phone being smart — the creator of the QR made that choice by choosing what to encode.
The vCard format
vCard (.vcf) is a 30-year-old text format for contact records. A minimal one looks like:
BEGIN:VCARD VERSION:3.0 FN:Alice Chen TEL;TYPE=CELL:+85298765432 EMAIL:alice@example.com END:VCARD
This whole block, encoded as a QR, will offer "Add to Contacts" on both iOS and Android. Extend it with ORG (organization), TITLE, ADR (address), URL, and up to a practical limit of a few hundred bytes before the QR image starts looking dense.
iPhone vs Android: near-identical, small differences
- iOS shows a full contact preview from the Camera app with an "Add" button. Multiple TEL entries are all imported.
- Android behavior varies by launcher and Google app version. Recent Pixels match iOS closely; some Samsung builds drop non-standard fields silently.
- Both platforms handle Unicode names, but only if the vCard declares
CHARSET=UTF-8on relevant fields, or uses VERSION 4.0 which is UTF-8 by default.
Which encoding to use, and when
- Just want people to call you? Encode a
tel:+…URL. Smallest QR, most reliable scan. - Just want people to WhatsApp you? Encode a
https://wa.me/…URL. Skips the address book. - Want them to save you fully? Encode a vCard. Slightly larger QR, but the payoff is a permanent entry in their contacts.
- Want to hand out a whole name card? Encode a URL to your Ringlink shared card. The recipient opens the card in a browser, taps "Save to contacts," and gets a properly-formed vCard on their device.
How Ringlink builds contact QRs
On a published name card, we generate a QR whose payload is the card's public URL — not the vCard bytes directly. Two reasons:
- URL-encoded QRs stay compact regardless of how much profile info the card carries.
- Recipients get to see the card first (photos, logos, links) before deciding to save it. Direct vCard QRs are all-or-nothing.
The "Save to contacts" button on the card page then generates a proper vCard on demand and hands the .vcf file to the OS, which prompts to add it.
QR error correction
Every QR encodes a chosen level of Reed-Solomon error correction: L (7%), M (15%), Q (25%), H (30%). Higher levels make the QR robust against smudges and reprints at the cost of a denser image. For printed business cards, use Q or H. For screen display, M is fine.
What breaks a scan
- Glare on a glossy print — matte finishes scan better.
- QR smaller than 2 cm × 2 cm on paper — increase size or error correction.
- Inverted colors (light QR on dark background) — most cameras handle this now, but some older Android scanners still fail.
- QR embedded inside a highly detailed background image — keep the "quiet zone" (white border) around the QR.