How-to
How to share your contact with a QR code, and make it save with your photo
A QR code can’t hold a photo, but it can open a vCard that does. How to make a contact QR code that saves your name, number and face on iPhone and Android.

On this page
A QR code can’t hold your photo. What it can do is open a contact file that does, and that difference decides whether the people you meet save a name and a number, or a face they will recognise in six months. This guide shows how contact QR codes work, why the photo can’t travel inside the code, and how to make one that delivers it anyway.
How do I make a QR code that saves my contact?
#Put your details into a vCard (the standard contact format), then either encode the vCard itself into the QR code or encode a link to a page that serves the vCard. When someone scans either kind on a modern iPhone or Android phone, their phone offers to add you as a contact.
Both kinds work, and both start from the same format. A vCard is a short text file, standardised in RFC 2426 for version 3.0 and RFC 6350 for version 4.0, that every contacts app can read. The choice is whether the QR code carries that text itself, or carries a link to it. The rest of this guide is about why that choice matters so much once a photo is involved.
- ravencard.app
01 · Scan
They point their camera at your code
The camera app already on their phone reads it. There is nothing to install.

Kenji Watanabe
Principal Architect · Watanabe Office
Save contact02 · Tap once
Your card opens, and they save it
It opens in their browser. One tap on Save contact hands the phone a vCard.

Kenji Watanabe
Principal Architect · Watanabe Office
mobile+81 3 6427 5520
03 · Saved
You are in their contacts, with your face
Name, title, company, numbers and photograph are written into the address book.
Why a QR code can’t carry your face
#Can a QR code hold my photo?
#No. The largest QR code holds 2,953 bytes, and even a small contact photo is many times bigger than that. So the code has to carry a link, and the link delivers the photo.
The capacity limit comes from DENSO WAVE, which invented the QR code: its largest version holds at most 2,953 characters of 8-bit data. Here is what that looks like against a real contact file.
Even without a photo, a full contact makes a dense code, which is why static contact codes look so busy. The photo is in a different league: the file with it embedded is more than ten times what any QR code can hold.
So how does the photo get into their contacts?
#The vCard file carries the photo inside it, encoded as text in its PHOTO field. When the phone imports the file, the picture comes in with your name and number.
vCard 3.0 lets the PHOTO field hold the image itself, written as base64 text, and marks it with ENCODING=b. Below is the file Ravencard actually generates for the example card, line by line. The photo line is shortened here; in the real file it runs to tens of thousands of characters.
BEGIN:VCARDWhere one contact starts.VERSION:3.0The format: vCard 3.0, which the contacts apps on iPhone and Android both import.N:Watanabe;Kenji;;;The name in parts — family name, then given name — so the address book can sort it.FN:Kenji WatanabeThe name as it is shown.ORG:Watanabe OfficeCompany.TITLE:Principal ArchitectJob title.TEL;TYPE=CELL:+81 3 6427 5520The mobile number, typed as a mobile.EMAIL;TYPE=INTERNET:kenji@watanabe.officeEmail address.URL:watanabe.officeWebsite.ADR;TYPE=WORK:;;Nakameguro\, Tokyo;;;;URL;TYPE=Ravencard:https://ravencard.app/u/kenji-watanabeA link back to the live card, which stays current after the contact is saved.X-SOCIALPROFILE;TYPE=instagram:https://instagram.com/watanabe.officeA social profile. One line per link on the card.NOTE:Small houses\, careful joinery\, and the occasional pavilion. Office of four in Nakameguro.The short bio, kept in the contact’s notes.PHOTO;ENCODING=b;TYPE=JPEG:/9j/4AAQSkZJRgABAQAAAQABAAD…The photograph itself: a 600×600 JPEG, base64-encoded inside the file. Embedded, not linked — it is there offline and for good.END:VCARDWhere the contact ends.
What the phone shows

Kenji Watanabe
Principal Architect · Watanabe Office
- mobile
- +81 3 6427 5520
- kenji@watanabe.office
- website
- watanabe.office
Why doesn’t a photo link work on iPhone?
#The vCard standard allows the PHOTO field to be a web address, but developers report that Apple Contacts ignores photo links and imports only an image embedded in the file. A card that wants to arrive with your face on iPhone has to embed it.
The standard also allows PHOTO;VALUE=uri: followed by a web address, and on paper that looks like the neat solution: a small file that points at the image. In practice, developers have reported for years that Apple Contacts doesn’t fetch it. See the Apple Developer Forums thread on vCard photo URIs and univik’s guide to vCard photos, which both describe linked photos coming through blank on iPhone.
That is why Ravencard embeds the photo, and folds the long PHOTO line every 75 bytes, as the vCard format specifies. If a generator promises a photo in a contact QR code and gives you a URL field for it, test the result on an iPhone before you print.
Ravencard embeds your photo for you. Try it at /build.
Static or dynamic QR code: which should I use for a contact card?
#A static code has your details baked in: it’s free, works offline and never changes, but it can’t include a photo and it’s wrong the day your number changes. A dynamic code holds a link, so it can serve a photo and always shows your current details.
Static · details baked in
- Version 15: 490 bytes of contact text
- No photo — it would not fit
- Wrong the day a detail changes
- Works with no internet connection
Dynamic · points to a card
- Version 3: a 38-character link
- The card behind it can hand over your photo
- Always shows your current details
- Needs a connection to open
| Aspect | Static (details in the code) | Dynamic (a link in the code) |
|---|---|---|
| Carries your photo | No | Yes, through the vCard it serves |
| Correct after you change a detail | No | Yes |
| Works with no connection | Yes | No |
| Size of the code | Dense; grows with every field | Small; a short link |
| Depends on a service staying online | No | Yes |
| Can show more than a contact | No | Yes: links, projects, design |
A static code is a reasonable choice for something printed once and short-lived, like an event badge. For a card you will hand out for years, the dynamic code wins on both photo and accuracy. The same logic decides what to print on a paper card: a code that points, not one that holds.
On their phone
#What happens on the other person’s phone when they scan a contact QR code?
#Their camera shows a link; tapping it opens your card in the browser; tapping “Save contact” hands the phone a vCard, and the phone shows a new contact to confirm.
The camera reads the code
On iPhone, the Camera app or the Code Scanner reads it and shows a link to tap, as Apple describes.
The card opens in their browser
Your photo, your details and a Save contact button. Nothing to install.They tap Save contact
The phone receives the vCard, photo included.They confirm
The phone shows the new contact, and they add it to their contacts.

Does a contact QR code work on Android?
#Yes. Android phones read QR codes with the camera or Google Lens, and import vCard files into Contacts. How the photo is shown depends on the phone’s contacts app.
Google documents both routes: the camera’s QR mode (for example on Pixel phones) and Google Lens in Chrome. Google Contacts can import a .vcf file. Android phones come with different contacts apps depending on the maker, so how the photo appears can vary.
Why didn’t my photo show up in their contacts?
#The usual cause is that the file was opened inside a messaging app’s preview, which can drop the photo. On iPhone, open the .vcf from Safari or the Files app. The other cause is a vCard that links to the photo instead of embedding it.
The messaging-app preview is the case we know about and document on our support page. When the file itself is fine, opening it from a browser or the Files app imports it whole. If you made the code with another tool and the photo never arrives on any phone, look at the file: a PHOTO line with a web address instead of a long block of text is the likely culprit.
If I change my number, do I need a new QR code?
#Not with a link-based code: it keeps working and shows your new details to anyone who opens it. People who already saved you still have the old number, though, because a saved contact is a copy. Send them your card again when something important changes.
This is the part most guides skip. A link-based code keeps pointing at the same address, so your card stays current for anyone who opens it. But the contact in someone’s phone was copied on the day they saved it. A Ravencard contact includes a link back to your card, so the current version is a tap away, but the saved number won’t change on its own.
How is a contact QR code different from NameDrop or AirDrop?
#NameDrop shares your contact card between an iPhone and a nearby iPhone or Apple Watch held close together. AirDrop sends files, including contacts, to nearby Apple devices. A QR code works with any phone camera, from a screen or from paper, including phones that aren’t made by Apple.
Apple documents NameDrop as a way to share new contact information with a nearby iPhone or Apple Watch, choosing the fields you send. AirDrop sends items to a nearby iPhone, iPad or Mac. Both are excellent when both people carry Apple devices and stand next to each other.
| Aspect | NameDrop | AirDrop | QR code to a card |
|---|---|---|---|
| Works with Android phones | No | No | Yes |
| Works from paper | No | No | Yes |
| Needs the phones close together | A few centimetres apart | Within about 10 metres | No |
| What it sends | The contact fields you choose | Files, including a contact | A link; the card’s Save button sends a vCard with your photo |
| Shows your work and links | No | No | Yes, on the card page |
The photo, and the printed code
#How do I set my own contact photo on iPhone?
#Open Contacts, tap My Card at the top, tap Edit, then tap your contact photo and choose one. Turning on Name & Photo Sharing lets iPhone share it when you call or message people.
These steps follow Apple’s guide to My Card for the current iOS. Your iPhone’s own contact photo is separate from the one on your digital card; it is worth making them the same picture, so people see one face everywhere.
What makes a good contact photo?
#A good contact photo is a square, well-lit head-and-shoulders shot with your face centred, because phones crop it into a circle. Ravencard resizes the photo for the contact file for you.
Ravencard turns your photo into a 600×600 JPEG for the contact file, which is enough for a sharp circle on any phone. The rest of what belongs on the card, and what to leave off, is in what to put on a digital business card.
How big should a contact QR code be on paper?
#Big enough that two different phones read it at arm’s length. Always leave the blank margin around it that the QR standard requires (four modules wide), and test before you print a batch.
DENSO WAVE asks for a quiet zone four modules wide on every side: a clear border with nothing printed in it. It is the part designers crop to make a code fit, and the most common reason a printed code won’t scan. A link-based code is also smaller than a contact-holding one, which gives you room to print it at a comfortable size.
How do I make a contact QR code with my photo using Ravencard?
#Build your card at ravencard.app/build and add your photo. Ravencard gives you one QR code that opens the card, and its “Save contact” button hands over a vCard with your photo embedded. It’s included on the free plan.
The code on your Ravencard never changes, the card behind it can, and the vCard its Save button hands over always carries your photo. Save-to-contacts with your photo embedded is part of the free plan. When you’re ready, build your card, or see the whole handover on the home page first.
Questions, answered briefly
#- What is a .vcf file?
- A .vcf file is a vCard: a small text file that holds one or more contacts in a standard format every contacts app can import. It can include a photo, encoded as text inside the file.


