CSV to vCard Converter

Convert CSV / Excel contacts to .vcf — or reverse a vCard back to CSV — entirely in your browser.

🔒 100% Local — nothing uploaded 🆓 Free forever ⚡ vCard 3.0 & 4.0
Step 1 — Choose file
📄
Click to browse or drag & drop here
.csv  ·  .xlsx  ·  .xls

How it works

Everything runs inside your browser. Files are never sent to any server — once you close the tab, nothing persists.

CSV / Excel → vCard PapaParse reads CSV; SheetJS reads .xlsx / .xls. You map each column to a vCard field (auto-detected from common header names). The tool generates a standards-compliant .vcf with proper RFC 6350 escaping, phone type labels (cell/work/home/fax), and address types.
vCard → CSV Parses each BEGIN:VCARD … END:VCARD block, handles line folding (RFC 6350 §3.2), extracts all standard fields (N, FN, TEL, EMAIL, ADR, ORG, TITLE, URL, NOTE, BDAY), and exports a UTF-8 CSV (BOM-prefixed for Excel) — one row per contact.
vCard 3.0 vs 4.0 Use 3.0 for Outlook, older Android, and any app that warns about unsupported versions. Use 4.0 for Apple Contacts, Google Contacts, Thunderbird, and modern apps — it handles Unicode natively and allows richer field parameters. When in doubt, 3.0 is the safer pick.
Phone & email types For each phone/email column you map, you can choose the type label: CELL, WORK, HOME, or FAX for phones; HOME or WORK for emails. The correct TEL;TYPE= / EMAIL;TYPE= parameter is written into every vCard entry.
One file vs one per contact "Single .vcf" outputs a multi-contact VCF file — one BEGIN:VCARD…END:VCARD block per row — accepted by all major address books. "One file each" downloads a .zip containing a separate .vcf file per contact, which some enterprise import tools require.
Import into your app Apple Contacts: File → Import or drag the .vcf onto the app.
Google Contacts: contacts.google.com → Import.
Outlook: File → Open & Export → Import a vCard file.
Android: Contacts → Import / export → from storage.

Tip: For Excel files, make sure contacts start on row 1 with column headers. For CSV, UTF-8 encoding works best — save from Excel as "CSV UTF-8 (comma delimited)".

Frequently asked questions

Is my contact data private? Does anything get uploaded?
Nothing is ever uploaded. The entire conversion happens inside your browser using the JavaScript File API. Once you close the tab, nothing persists anywhere. This makes the tool safe for contact lists with personal or business-sensitive data.
What CSV format does this tool expect?
Any CSV with a header row works — column names do not need to match exactly, because you map them in step 2. Common exports from Google Contacts, Outlook, HubSpot, Salesforce, and iPhone (via iCloud) all work. Use the Quick Presets to auto-map columns from those sources instantly. Tab-separated files saved as .csv also work. For Excel, drop the .xlsx file directly.
Which vCard version should I choose — 3.0 or 4.0?
Choose vCard 3.0 if you are importing into Microsoft Outlook, older Android contact apps, or any system that warns about unsupported vCard versions. Choose vCard 4.0 for Apple Contacts, Google Contacts, Thunderbird, and modern mobile apps — it has better Unicode support. When in doubt, 3.0 is the safer choice (it works everywhere).
Can I convert multiple contacts at once?
Yes. A CSV file with many rows produces a single .vcf file containing all contacts as separate VCARD entries — standard multi-contact format accepted by all major address books. Use "One file each" output mode to get a separate .vcf per contact (downloaded as a .zip).
What if my CSV has multiple phone numbers or emails per contact?
You can map up to three phone columns and three email columns. For each, choose the type label (cell/work/home/fax for phones; home/work for email). Each becomes a properly typed TEL or EMAIL entry in the vCard.
My CSV has a single "Address" column, not separate street/city/zip. Will that work?
Yes — just map that column to "Street Address". The full address string will appear in the street field of the vCard ADR property. For more precise results, split your address into separate columns before converting and map each to the corresponding field (city, state, ZIP, country).