A free digital business card is a vCard with the right Content-Type
A digital business card is three files stacked together: a web page, a QR code that points at that page, and a vCard a phone can save. Most "free" plans are generous about the first two and quiet about the third. The thi
A digital business card is three files stacked together: a web page, a QR code that points at that page, and a vCard a phone can save. Most "free" plans are generous about the first two and quiet about the third. The third is the one that actually has to parse.
I work on Nameplate, a personal site builder. We ship a vCard from a public URL, so I curled our own endpoint instead of writing this from memory.
What the response has to look like
$ curl -s -D- https://www.nameplate.cc/v/karentia
HTTP/2 200
content-disposition: attachment; filename="karentia.vcf"
content-type: text/vcard; charset=utf-8
BEGIN:VCARD
VERSION:3.0
N:Karentia;;;;
FN:Karentia
URL:https://www.nameplate.cc/karentia
END:VCARD
Two headers do the work:
-
content-type: text/vcardis what makes iOS and Android offer "Add to Contacts" instead of dumping the file as text. -
content-disposition: attachment; filename="….vcf"gives the file a name the contacts app can keep.
The body is vCard 3.0, RFC 2426. Any contacts app can read it with no account and no extra app. If you return text/plain or application/octet-stream, the same bytes sit there and nothing offers to save them.
What "free" actually withholds
I read two pricing pages on 3 October 2026, not search snippets.
- Blinq: free forever, two cards. Premium is $9.99/month ($7.33 billed yearly) for a branded card.
- HiHello: free forever, four cards, QR / email / SMS sharing, and a 5-scan-a-month cap. Professional is $6/month billed yearly.
"Free" means two cards in one case and four in the other. It also means a monthly scan cap in one of them. A freelancer with one role never hits either limit. Someone who wants a card per job hits Blinq on day one.
Worth asking any free plan:
- How many cards, and do I need a second one?
- Is there a monthly cap on scans I will do weekly?
- Can I take the contact file and leave?
A gap in our own file
The vCard above has no phone number. Our card carries a name, a headline, an email, a location, and the page URL. If your work runs on people calling you, that saved contact will not give them a number. Put the number on the page, or pick a tool whose vCard actually includes TEL.
You can skip the hosted page entirely and put the vCard bytes in the QR code itself. That needs no signup. It also freezes the details: change your email and every printed card is stale. A code that points at a URL can be updated after printing. That trade-off is the actual product, not the word "free" on the pricing page.
Before you print anything: save the contact on your own phone, then send the link to someone on the other platform (iPhone to Android or the reverse) and ask them to do the same. Missing fields show up there, not on the marketing site.
This was first published on Nameplate's blog.
Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.