gizmobench

CSV to vCard Converter

Paste a contacts CSV or open one of up to 10 MB, then map each column to a vCard field: the name parts, organization, job title, four kinds of phone, three kinds of email, one address, website, birthday and note. The cards appear as vCard text, 50 at a time, before you save anything; phone numbers stay text so leading zeros survive, and a row that cannot become a card is listed with its reason and kept in a downloadable report instead of vanishing. Save one combined .vcf, or a ZIP with one .vcf per contact. Nothing is uploaded.

contacts.csv

example, comma, header row, 3 rows

for opened files; pasted text is already text

vCard
cleanup

Map columns

map First to given name, Last to family name, Phone to other phone, Email to other email, Note to note

Name
Work
Phone
Email
Address
Other

not exported

  • row 4: 6 fields, the header has 5

contacts.vcf

vCard 3.0, 2 cards, CRLF
BEGIN:VCARD
VERSION:3.0
N:Quill;Ada;;;
FN:Ada Quill
TEL:020 7946 0018
EMAIL:ada.quill@example.com
NOTE:Prefers email\, not calls\; after 5pm
END:VCARD
BEGIN:VCARD
VERSION:3.0
N:Ibáñez;Tomás;;;
FN:Tomás Ibáñez
TEL:0161 496 0123
EMAIL:tomas@example.org
NOTE:Met at the Riverside craft fair\, stand 12\nAsked about the café tabl
 es\; call back in May
END:VCARD

Rows read
3
Contacts
2
Row errors
1, row 4
Format
vCard 3.0

The file is read in this tab and never uploaded. Only the settings above the column map are remembered in this browser: never the file, its rows, its header names or the column map, because contacts are personal data.

One CSV of up to 10 MB and 100,000 rows at a time. The ZIP holds one .vcf per contact, named from the full name and stored without compression; the report is a plain text file listing every row that was not exported or was exported with a change.

Try an example

Invented contacts with UK drama-range phone numbers, marked as examples. Trying one replaces the rows in the stage.

  • Phone 020 7946 0018a number with a leading zero
    TEL:020 7946 0018, kept as text
  • Prefers email, not calls; after 5pma comma and a semicolon in a note
    NOTE:Prefers email\, not calls\; after 5pm
  • Two contacts, one NOTE line of 96 octetsvCard 3.0 or 4.0
    two BEGIN:VCARD to END:VCARD blocks; the long NOTE line folds at 75 octets onto a line starting with a space
Accuracy. Formats the contacts you supply from a CSV of up to 10 MB: phone numbers stay text, so leading zeros survive, and commas, semicolons, backslashes and line breaks are escaped as vCard 3.0 and 4.0 require, with lines over 75 octets folded without splitting a character. It does not look anyone up, check that a number or address is real, or change any address book: you review the preview and import the file yourself. Rows it cannot turn into a card are listed with the reason, not dropped silently.

Common questions

How do I convert a CSV file to vCard?
Open the CSV or paste its rows, then check under Map columns that each vCard field points at the right column. Common header names such as First Name, Mobile Phone and E-mail Address are mapped for you. Choose Combined .vcf for one file holding every contact, or One .vcf per contact for a ZIP of separate files. The preview shows the vCard text that will be saved, 50 cards at a time.
Why do the leading zeros in my phone numbers disappear?
Spreadsheet apps such as Excel read 02079460018 in a CSV as a number and drop the leading zero, and saving the file keeps it dropped. This page reads every value as text and writes phone numbers as text in both vCard versions, so a zero in the CSV stays a zero in the card. A number the spreadsheet already rewrote, such as 4.47700900123E+11, is kept as written and flagged so you can retype it, and a ="0123" text formula is unwrapped to 0123 while that cleanup is on.
Should I choose vCard 3.0 or 4.0?
Both follow their standards, RFC 2426 for 3.0 and RFC 6350 for 4.0. The cards differ in the VERSION line, the TYPE labels, the birthday format and whether an empty N line is written. 3.0 is selected first because it is the older and more widely supported version. A birthday without a year can only be written in 4.0, as --MMDD; in 3.0 it is left out and the report says so.
What happens to commas, semicolons and line breaks inside a note?
They are escaped as both standards require: each comma, semicolon and backslash gets a backslash in front of it, and each line break becomes \n, so Prefers email, not calls; after 5pm is written NOTE:Prefers email\, not calls\; after 5pm. A line longer than 75 octets continues on the next line after a single space, and the break always falls between two characters, never inside the bytes of one such as é or 😀.
Why was a row not exported?
Rows that did not become a card are listed under Not exported with their row number and the reason, the first 100 on the page and every one in the report: a different number of fields from the header, often from an unquoted comma; a quoted value that never closes; or no name, organization, email or phone to name the card. Rows with nothing in them are skipped and counted. The Report button saves the full list, with each row's line number, as a text file.
Is my contact list uploaded or saved anywhere?
No. The CSV is read and converted in this browser tab and is not sent anywhere. The page remembers only its settings in this browser: delimiter, encoding, header row, vCard version, address type and the cleanup choices. The file, its rows, its header names and the column map are gone when you clear or close the page.

Formats the contacts you supply from a CSV of up to 10 MB: phone numbers stay text, so leading zeros survive, and commas, semicolons, backslashes and line breaks are escaped as vCard 3.0 and 4.0 require, with lines over 75 octets folded without splitting a character. It does not look anyone up, check that a number or address is real, or change any address book: you review the preview and import the file yourself. Rows it cannot turn into a card are listed with the reason, not dropped silently.