no login · no cookies · works offline

contact codes

How to make a contact (vCard) QR code

Build a business-card QR that saves your details with one scan — the vCard format, a copy-paste example, and how to keep it scannable.

A contact QR code is just a QR that holds a small block of text in the vCard format. Scan it and the phone offers to save the details straight to contacts — no app needed on most modern phones (iOS 11+ reads it from the camera, and most Android phones on 9+ do too via the camera or Google Lens).

What goes in a vCard

A vCard is plain text with a fixed wrapper: BEGIN:VCARD on the first line, END:VCARD on the last, and VERSION right after the start. Stick to version 3.0 — it has the widest device support. Here’s a clean, scannable one:

BEGIN:VCARD
VERSION:3.0
N:Doe;Jane;;;
FN:Jane Doe
TEL;TYPE=CELL:+15555550123
EMAIL:[email protected]
ORG:Example Co
URL:https://example.com
END:VCARD

A few things that trip people up:

The shorter option: MECARD

MECARD is a more compact alternative that lives on a single line:

MECARD:N:Doe,John;TEL:13035551212;EMAIL:[email protected];;

Note the differences: the name uses a comma (N:Doe,John), fields are separated by semicolons, and the whole thing ends in a double semicolon ;;. Because it’s smaller, it draws a less dense, easier-to-scan code. The trade-off: MECARD is a de-facto format (originally from NTT DoCoMo) rather than a published standard, so vCard is the safer pick for maximum compatibility. Don’t mix the two formats’ separators — that just produces a broken payload.

On an iPhone

You don’t need an app. Open the normal Camera and point it at a contact code: iOS reads the vCard, shows a little contacts banner, and tapping it opens an Add to Contacts card pre-filled with the name, number, email and so on. Tap Create New Contact (or Add to Existing) and it’s saved — the person never types a thing. It works the same from a code in Photos: press and hold it, or use the Live Text button.

A couple of iPhone-specific things worth knowing:

Android is much the same via the camera or Google Lens, which likewise offers to add the details to Contacts.

Trim it so it scans

More fields means more characters, which means a denser grid with smaller squares — harder to scan, especially printed small on a card. Keep to the essentials: name, phone, email, maybe company and a URL. As a rough guide, under ~150 characters scans very easily, and 500+ gets risky on small prints — treat those as ballpark figures, not hard limits.

Two things to never do:

A raw vCard is baked into the squares — it can never be edited once printed. For a personal card that rarely changes, that’s fine. But for marketing, where details shift, the honest move is to point the code at a short link to a contact page you control, so you can update it without reprinting. That’s the whole static vs dynamic idea — and it keeps the code shorter too.

Making one in dottr

Paste your vCard (or MECARD) text into dottr, download the PNG or SVG, done. It’s a static, in-browser generator: the code holds exactly what you typed and nothing leaves your browser. Keep the contrast high and the quiet zone clear and it’ll scan first time.

Prefer to show it, not print it? Keep your contact code in your dottr wallet — it stays on your phone, ready to pull up so someone can scan and save you on the spot, then swipe to your next code.

Make yours at dottr — it’s free and runs in your browser.

Someone ask where you got this?

dottr this page

Drag to your bookmarks bar — then on any site, get its QR and add it to your wallet in a tap.