vCard QR Code Generator

Fill in the contact details and get a vCard QR code as an SVG. Scanning it offers to save the contact — name, phone, email, company, address and all. Nothing is uploaded and the code never expires.

Try:
Contact QR code

About this tool

A vCard QR code is a QR code whose payload is a whole contact card rather than a link. Point a phone camera at it and the operating system recognises the BEGIN:VCARD payload and offers to save the person — name, job title, company, phone numbers, email, website, postal address, birthday and note — straight into the address book. No app, no account, no typing.

This generator builds the vCard itself and encodes it in one step. The card is written as a real RFC 6350 / RFC 2426 vCard: values are escaped (commas, semicolons and backslashes), long lines are folded at 75 octets with CRLF continuations, and phone numbers and emails carry the TYPE labels phones use to tell a mobile from a landline. You pick vCard 3.0 (the dialect scanners handle best) or 4.0.

The result is an SVG, so it stays sharp whether it ends up on a slide, a badge or a printed banner. The exact vCard source is embedded in the SVG's <desc> element and returned by the CLI, so you can copy it into a .vcf file if you want the contact card as a file too.

Worked example

Fill in:

The encoded vCard is:

BEGIN:VCARD
VERSION:3.0
N:Lovelace;Ada;;;
FN:Ada Lovelace
ORG:Analytical Engines
TITLE:Chief Analyst
TEL;TYPE=CELL:+44 7700 900123
EMAIL;TYPE=INTERNET:[email protected]
URL:https://example.com/ada
END:VCARD

Scanning the generated code on a phone brings up "Add contact" pre-filled with those fields. With Print contact details under the code left on, the same details are also typeset in monospace under the QR, which is what makes it usable as a conference badge or the back of a business card.

Notes on the fields

Limits and edge cases

FAQ

Will scanning this actually save the contact on an iPhone or Android phone?

Yes. Both stock camera apps recognise a BEGIN:VCARD payload and offer to create a contact from it — the same mechanism that handles a Wi-Fi or URL QR code. vCard 3.0 is the safest choice for scanning because every address book has supported it for years; 4.0 is the newer RFC and is better suited to cards consumed by software rather than a phone camera.

How do I get a .vcf file, not just the image?

The exact vCard source is embedded in the generated SVG's <desc> element, and the CLI prints it alongside the image. Copy those lines — from BEGIN:VCARD to END:VCARD — into a text file, save it with a .vcf extension, and any address book will import it. The worked example above shows what those lines look like.

My contact is "too long to encode" — what should I change?

The error names the vCard's size in bytes. The cheapest wins are shortening the note, dropping the postal address to the fields you actually need, and lowering the error-correction level from H or Q to M or L. Level L holds roughly twice as much data as H. Long URLs are also a common culprit — link to a short profile URL rather than a deep one.

Why do I need to pick between mobile and work phone?

They are stored as different vCard properties — TEL;TYPE=CELL and TEL;TYPE=WORK,VOICE — so the phone that scans the code labels them correctly in the saved contact, and knows which one to text. Fill in either or both; empty fields are simply left out of the card.

Can I add a logo, custom shapes, or track how many people scan it?

Not here. Logos and styled modules change the symbol's appearance and belong to a dedicated styling tool; scan tracking requires the code to point at a redirect service that logs every scan, which would mean the contact data leaves your device. This tool generates a plain static code that carries the contact itself, works offline, and reports nothing to anyone.

What happens to names with accents, commas or semicolons?

They are handled. Text is encoded as UTF-8, and the characters that are structural in a vCard — comma, semicolon and backslash — are escaped so a company like Smith, Jones & Co survives intact instead of splitting into two values. Long values are folded onto continuation lines exactly as the vCard spec requires, which every address book unfolds on import.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool vcard-qr 'first_name=Ada'

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/vcard-qr/?first_name=Ada&last_name=Lovelace&organization=Analytical%20Engines&job_title=Chief%20Analyst&mobile=%2B44%207700%20900123&phone=%2B44%2020%207946%200000&email=ada%40example.com&website=example.com%2Fada&street=12%20Baker%20Street&city=London&region=Greater%20London&postal_code=NW1%206XE&country=United%20Kingdom&note=Met%20at%20the%202026%20expo&birthday=1987-04-23&version=3.0&error_correction=M&size=512&foreground=%23000000&background=%23ffffff&show_details=true

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.