ConvertCSV

Browser-based CSV converter

CSV to vCard Converter

Convert CSV contact rows into a vCard 3.0 (.vcf) file ready to import. Paste CSV, upload a file, preview the output, then copy or download the converted result.

Input

Paste CSV or upload a CSV file

Output Preview

vCard 3.0

Convert your input to preview the output here.

CSV to vCard Converter

A contact list kept in a spreadsheet is only useful once it reaches the address book on a phone or the mail client on a desktop. This CSV to vCard converter turns each row into one VCARD block in the vCard 3.0 format, so a single .vcf file can be imported as a batch of contacts.

Each header decides where its values land in the card. Columns named for common contact fields, such as first_name, email, phone, or company, map to standard vCard properties, and anything else is kept as an X- property so no data is dropped. Conversion runs in your browser, which matters when the list holds personal details.

This page explains the column-to-property mapping, how commas and semicolons are escaped, why long notes are folded across lines, and what to check after importing a generated file into a phone or mail app.

Key features

  • Writes one vCard 3.0 block per CSV row with VERSION:3.0 and matching BEGIN and END lines.
  • Maps common contact column names to N, FN, ORG, TITLE, EMAIL, TEL, ADR, and NOTE properties, matched without regard to case.
  • Keeps unrecognised columns as X- properties so no data is lost.
  • Escapes backslashes, commas, semicolons, and line breaks inside values as RFC 2426 requires.
  • Folds long lines at 75 octets, using UTF-8 byte counts so accented characters are not split.
  • Downloads the file with CRLF line endings, while the on-screen preview uses plain line breaks for readability.

About the CSV to vCard 3.0 (.vcf) format

Each data row becomes one card that begins with BEGIN:VCARD and VERSION:3.0 and ends with END:VCARD. Every card includes an N property, which holds the family and given name, and an FN property, which holds the display name. Empty optional fields are skipped rather than written as blank properties.

Column headers are matched without regard to case, and hyphens are read as underscores, so a column titled First Name or first-name is treated the same as first_name. A recognised column maps to one of these properties: name, full_name, or display_name to FN; first_name or given_name to the given part of N; last_name, surname, or family_name to the family part of N; email to EMAIL; phone, telephone, tel, mobile, or cell to TEL; organization, org, or company to ORG; title or job_title to TITLE; note or notes to NOTE.

Address columns are gathered into one ADR property. address or street fills the street part, city the locality, state, region, or province the region, zip, zip_code, or postcode the postal code, and country the country. Columns that match no name in this list are written as X- properties using their header in upper case, for example a column called Badge ID becomes X-BADGE-ID.

How it works

The converter reads the header row and assigns each column a role based on its normalised name. Single-value roles keep only their first column; email and phone columns can each produce a line.

For each row it builds the N and FN lines first. FN uses the name column if one exists, otherwise the given and family names joined by a space, then the email address, and finally the placeholder Unnamed contact.

It then adds ORG, TITLE, EMAIL, TEL, ADR, and NOTE lines when those values are present, adds X- lines for leftover columns, and closes the card. Each physical line is folded to 75 octets before the file is assembled.

Common use cases

  • Importing an event attendee list exported from a registration spreadsheet into a phone's contacts.
  • Moving a club membership roster into a mail client that accepts vCard files.
  • Creating one import file for a team's external vendor contacts, including their company and job title.
  • Converting a small customer list for a sales rep who works from a mobile address book.
  • Preserving custom fields such as a loyalty number as X- properties so nothing is lost during the move.

How to use this tool

  1. Paste your contacts CSV or upload a file. Use one row per person and put the column names on the first line.
  2. Check the header names. Rename any column that should map to a standard field, such as renaming Work Phone to phone.
  3. Click Convert and read the preview. Confirm that each card has the right name, email, and phone.
  4. Download the .vcf file. Save it to your device and open it with the address book or mail app you use.
  5. Import the file, then spot-check two or three contacts, including one with an accent or a long note, before importing the full list.

Example

Input CSV

first_name,last_name,email,phone,company,address,city,zip,note
Ada,Lovelace,ada@example.com,+44 20 7946 0000,Analytical Engine Ltd,"12 St James's Sq",London,SW1Y 4JH,"Prefers email, not calls"
Grace,Hopper,grace@example.com,+1 703 555 0100,US Navy,,Arlington,22202,

Output vCard (.vcf preview)

BEGIN:VCARD
VERSION:3.0
N:Lovelace;Ada;;;
FN:Ada Lovelace
ORG:Analytical Engine Ltd
EMAIL:ada@example.com
TEL:+44 20 7946 0000
ADR:;;12 St James's Sq;London;;SW1Y 4JH;
NOTE:Prefers email\, not calls
END:VCARD
BEGIN:VCARD
VERSION:3.0
N:Hopper;Grace;;;
FN:Grace Hopper
ORG:US Navy
EMAIL:grace@example.com
TEL:+1 703 555 0100
ADR:;;;Arlington;;22202;
END:VCARD

Tips for best results

  • Keep first and last names in separate columns. A single name column produces an empty N property, which some address books then fail to sort correctly.
  • Remove duplicate rows in the sheet before converting. Every row becomes a contact, so duplicates appear as repeated cards.
  • Use a full international format for phone numbers, such as +44 20 7946 0000, so they dial correctly from other countries.
  • Put a short note in the note column for things you want to remember about a contact. Commas and semicolons in notes are escaped automatically.
  • Import a small test file of three rows first, to confirm the fields land where you expect.

Common errors and how to fix them

Contacts appear under their email address or as Unnamed contact.
No name column was recognised or its cells were empty. Name columns are read from name, full_name, display_name, first_name, and last_name, so rename the headers if needed. Without any name, the card falls back to the email address, then to Unnamed contact.
The file shows a backslash before commas or semicolons.
That is the escaping RFC 2426 requires. Each comma or semicolon inside a value is stored as a backslash followed by the character, so it is not read as a field separator. A compliant address book removes the backslash when it displays the note.
A long note appears broken onto a second line in the .vcf file.
That is line folding, not a data error. RFC 2425 requires lines over 75 octets to continue on the next line that begins with a space, and address books reassemble them when they read the file.
A column such as Badge ID shows up as X-BADGE-ID in the contact.
That column was not a recognised contact field, so it was kept as an extra property. This is expected. Rename the column to a standard name if you want it shown in a standard field.
The converter stops with a message that the CSV has no data rows.
A vCard file needs at least one contact. Add the rows below the header, or check that the file is not empty.

Best practices

  • Keep one contact per row and never merge two people into one cell.
  • Use a single consistent country format for phone numbers in the whole sheet.
  • Store the generated .vcf file securely, because it contains personal details and should not be shared in public channels.
  • Keep the source spreadsheet as the master copy and regenerate the .vcf when the list changes, rather than editing contacts one at a time in the address book.

Why names are split into N and FN

The N property stores the parts of a person's name in a fixed order: family name, given name, additional names, prefix, and suffix, separated by semicolons. FN stores the same name as one display string, which is what most apps show in lists.

The converter fills the family and given parts from your last_name and first_name columns and uses the name column, or those two joined, for FN. Two separate name columns therefore produce the most useful result.

Escaping commas, semicolons, backslashes, and line breaks

RFC 2426 treats commas and semicolons as separators in some properties, so a value that contains them must escape them with a backslash. A backslash in the value is escaped first, so the escapes themselves are not doubled. A line break inside a cell is written as the two characters \n.

The on-screen preview shows the escaped text, so a note containing a comma is easy to spot-check before you download the file.

Line endings and folding in the downloaded file

The download uses CRLF line endings, which RFC 2426 specifies for vCard. The preview and copied text use plain line feeds so they display cleanly in a browser.

Lines longer than 75 octets are folded. The converter counts UTF-8 bytes, so an accented letter is never split across two lines, and a continuation line begins with a single space.

Frequently asked questions

Is the output compatible with vCard 4.0 readers?

The output is vCard 3.0 only. The converter writes no 4.0-specific properties, so if the app you import into requires 4.0, check its documentation before importing.

Does the file include contact photos?

No. The converter has no PHOTO column and does not read image data, so contacts are imported without pictures.

How many contacts can one file hold?

The file can hold as many cards as your CSV has rows. Very large files take longer to convert in the browser, so split the sheet into batches if the page becomes slow.

For more background on data formats and conversion workflows, read our format guides.