CSV to vCard Converter

Upload a CSV or Excel file to generate a .vcf contact file ready for iPhone, Google Contacts, Outlook, or any address book. Map your columns to the right fields — everything runs in your browser, nothing is uploaded.

📋
Drop a CSV or Excel file here
or click to browse · .csv, .xlsx, .xls, .tsv accepted

How it works

A vCard (.vcf) file is the universal format that address books use to transfer contacts. It is a plain-text file where each contact is a block starting with BEGIN:VCARD and ending with END:VCARD.

1. Upload your spreadsheet Drop a CSV or Excel file. SheetJS reads it directly in your browser — row 1 is treated as the column header.
2. Map columns to fields Tell the converter which column holds the first name, phone, email, etc. Unmapped columns are skipped.
3. Download your .vcf One combined file works best for bulk import. If you need individual cards, choose "per-contact .zip" — JSZip bundles them client-side.
Reverse: vCard → CSV Drop any .vcf file to extract all contacts into a spreadsheet-ready CSV. Useful for migrating between apps.

Frequently asked questions

How do I import the .vcf file into my phone or email app?
iPhone / iOS: AirDrop the .vcf to your phone, or email it to yourself and tap the attachment — iOS will offer to add all contacts. Google Contacts: open contacts.google.com → Import → select the .vcf. Outlook: File → Open & Export → Import/Export → Import a vCard file. macOS Contacts: double-click the .vcf or drag it onto the Contacts app.
What is the difference between vCard 3.0 and vCard 4.0?
vCard 3.0 (RFC 2426) is supported by virtually every app and device, including older Outlook versions and iOS. vCard 4.0 (RFC 6350) adds UTF-8 by default, grouped properties, and richer media fields, but some older apps cannot import it. When in doubt, use 3.0 — it is the default here.
What columns does my CSV need?
There are no required column names — you map them yourself after upload. Typical useful columns are: First Name, Last Name, Email, Phone, Company, Title, Street, City, State, ZIP, Country, Website, Notes. If your file has a single "Name" column rather than split first/last, map it to Full Name (FN) and leave the N fields blank. The converter will use FN as the display name in the vCard.
Is my data sent to any server?
No. All processing happens in your browser using JavaScript. Your file is never uploaded anywhere. This is intentional — contact lists often contain sensitive personal data, so keeping everything local is the right call.
My CSV has multiple phone numbers or emails per row — can I include them all?
Yes. Map additional phone/email columns to the same vCard field type (e.g. map "Work Phone" to Phone (work) and "Mobile" to Phone (mobile)). The converter writes a separate TEL line for each non-empty value, so the resulting vCard will carry all of them.
How many contacts can I convert at once?
There is no hard limit — the converter processes contacts entirely in memory in your browser. In practice, tens of thousands of rows work fine. Very large Excel files (100 MB+) may take a few seconds to parse with SheetJS, but smaller files are near-instant.