Blog Business cards

vCard QR code with photo: what really works

A printed vCard QR code cannot hold a usable photo, and most phones ignore a photo given as a link. What works instead, and what each way shows.

No: a QR code that saves a contact cannot carry a usable photo. A picture is too big to fit in the code, and a photo given as a web link is ignored by most phones. To get your face in front of the person who scans, send a contact file that holds the photo, or make the code open a card page that shows it.

Can a vCard include a photo at all?

Yes. A vCard is the text format phones use for contacts, and it has a field for a picture, called PHOTO. The standard allows two ways to fill it: the picture itself, written out as text, or a web address where the picture is stored (RFC 6350, section 6.2.4).

So the format is not the problem. The problem is the QR code, and the phone that reads it.

Why can't the photo go inside the QR code?

A QR code holds very little. The largest one, version 40, holds at most 2,953 bytes, and only at the lowest level of error correction (capacity table). A picture written into a vCard is stored as base64 text, which takes four characters for every three bytes of the image, and your name, number and email need their share too.

That leaves room for a picture of about 2 KB: a tiny, heavily compressed thumbnail. One developer managed it and saw the picture in the contact preview of the iPhone camera; on Android, he notes, the result varies by brand and camera app. But a code filled to the brim is a grid of 177 by 177 squares. Printed 3 cm wide on a business card, each square is less than 0.2 mm across, which makes the code far harder to scan than a short one. In an Adobe community thread, a photo written into the code made it too long for the design program to accept.

What about a link to the photo?

The vCard standard allows it: a PHOTO line with the web address of your picture. The code stays small. But the phone has to fetch the picture when it saves the contact, and most phones do not.

  • In the same Adobe thread, a photo link failed on four phones, two iPhones and two Android phones, and another person's Android phone ignored the photo line whatever he tried.
  • On Apple's developer forums, people have reported since 2020 that the iPhone's Contacts app takes a photo only when it is written into the contact, not as a link.
  • QR Planet, a QR code company, says on its help page that it tried this on several devices and that most smartphones, iPhones included, do not support it.

So when a generator offers a "vCard QR code with photo", check where the photo really goes. Before you print, scan the code with an iPhone and an Android phone and look at the saved contact.

So how do I share my contact with a photo?

There are three ways, and they do different things.

WayWhere the photo isWhat the other person gets
A contact file (.vcf)Inside the fileA contact to save, with the photo in it
A code that opens a card pageOn the pageYour photo, buttons to call or write, and a button to save you
A photo or logo on the face of the codeOn the printed codeA nicer-looking code; the saved contact has no photo

Send a contact file

A .vcf file has no size limit like a QR code, so the photo can be written into it in full. You send the file by email or in a chat, and the person opens it to save you. This suits a contact you send, not one you print.

The vCard generator on vCardGen does both at once, with no account: you type your details, add a photo if you want, and download the file with the photo in it, plus a QR code of the same contact without the photo. The photo is cut square from the centre and made smaller, so the file stays light. Phones do not all keep the photo when they import a file, so open it on your own phone once before you send it around.

Make the code open a card page

Here the QR code holds only a short web address, so it stays small and easy to scan. The page it opens shows your photo, your details and a button to save your contact. Everyone who scans sees the photo at once, whatever their phone does when they save you.

On vCardGen this is the digital business card. You sign in with a code sent to your email, and the card goes online at its own address. You can change the photo, the number or anything else later, and the printed code stays the same. The other side of it: the code works only while the page is online. The guide Do QR codes expire? explains that difference between a code that holds your details and a code that opens a page.

Put a picture on the code itself

Some generators place a logo or a small photo in the middle of the code. The code still scans because QR codes have error correction: part of the squares can be covered and the code is still read. But this is decoration: the picture is on the paper, not in the contact. Scan it and save the contact, and there is no photo.

Which one should I choose?

  • You print a card or a poster and want your face seen: a code that opens a card page.
  • You send your contact by message: a contact file with your photo.
  • You only need people to save your number and email: a plain contact code, without a photo. It is the smallest code and the easiest to scan, and it never expires.

A quick example

Sara is a hairdresser. On her shop window she puts a code that opens her card page: her photo, her number, a WhatsApp button and the shop on a map. When a client asks for her contact in a chat, she sends the .vcf file with her photo instead. Both lead to the same contact. Only the page is sure to show her face.

Keep reading