b2KIT

vCard to CSV Converter

Export vCard (.vcf) contacts to a CSV spreadsheet with all fields as columns.

Tested tool guide Tested browser tools Checked August 16, 2026

What vCard to CSV Converter does, with a checked example

A .vcf file is plain text: each contact is a block from BEGIN:VCARD to END:VCARD, one property per line. Paste a file's contents and this page reads every block, turns each property into a column, and delivers a CSV you can open in Excel, Numbers, or Google Sheets. Parsing happens entirely in the browser, so nothing is uploaded. Two things surprise people. First, vCard writes family name first, so N:Doe;Jane;;; is Jane Doe with surname Doe, and the raw semicolon string stays in one column. Second, CSV is flat: a contact with two phone numbers gets one cell, not two columns.

Worked example

A concrete input and expected output from the current implementation.

Input

BEGIN:VCARD
VERSION:3.0
FN:Jane Doe
N:Doe;Jane;;;
EMAIL:[email protected]
TEL:+1 555-0100
END:VCARD

Expected output

FN,N,EMAIL,TEL
Jane Doe,Doe;Jane;;;,[email protected],+1 555-0100

Columns are named after the vCard properties, in the order they first appear; VERSION, like BEGIN and END, is file framing rather than contact data, so it is not a column. None of the values contains a comma, quote, or newline, so none is quoted. The N cell keeps its semicolon structure (family;given;additional;prefix;suffix), which is why Doe, the family name, precedes Jane.

How the result is produced

1

Scanning the vCard blocks

The page looks for BEGIN:VCARD / END:VCARD pairs and treats everything between as one contact. Each line is property:value, and the value is what follows the first colon; parameters like TYPE=CELL that appear before it describe the property, they are not part of the data. Escaped characters (\;, \,, \\) are unescaped, and the N field keeps its semicolon-separated parts intact: family;given;additional;prefix;suffix.

2

Building the CSV

The header row collects every distinct field name across all contacts, so a contact missing EMAIL gets an empty cell rather than a shifted row. Values that contain commas, double quotes, or line breaks are quoted, and embedded quotes are doubled, so spreadsheet apps parse the file correctly. The finished CSV downloads as a .csv file.

Good uses

  • You changed phone or mail apps and want the address book in a spreadsheet to sort, deduplicate, and tidy it before re-importing elsewhere.
  • A CRM, newsletter, or mailing service accepts CSV but not vCard, and your contacts are sitting in a .vcf export you cannot feed it.
  • You want to audit an address book - sort by company, city, or last contact date - and spot stale or half-empty entries, which is far easier in columns than in a contacts app.

Limits and checks

  • Two phone numbers on one contact: flat CSV has one cell per column, so both numbers cannot appear separately. The output either joins them in one TEL cell or keeps a single value, and a downstream import may then read them as one number.
  • Addresses stay in one ADR cell with semicolon-separated parts - street;city;region;postal code;country. Plan on splitting that column after export, since no converter can know your spreadsheet's layout.
  • vCard 2.1 files from older phones are not always UTF-8. Names with accented or non-Latin characters can export garbled; if so, re-export the file from the source app with UTF-8 encoding and run it through again.

Common questions

A contact has two phone numbers - what lands in the CSV?

One cell. CSV holds a single value per cell, so a converter must either join the numbers, usually with a semicolon, or keep one of them. This is the point where converters most often differ, so run a two-number contact through first and inspect the TEL cell before converting a whole address book.

Do photos and avatars survive the conversion?

No. A vCard stores a photo in the PHOTO property as embedded binary data or a URI, and CSV is plain text, so the image itself cannot come through. If the file held a URL rather than embedded data, the link may survive as text in a PHOTO column; embedded images are dropped.

References and verification

The example and behavioral notes were checked against the browser implementation. Standards and primary references below define the relevant format, formula, or platform behavior.

Related Tools