Article 4 min read

Spreadsheet to contacts: convert a CSV list to a VCF file

Nov 3, 2026 14 views
Spreadsheet to contacts: convert a CSV list to a VCF file

TL;DR

Turn a CSV list of names and phone numbers into a phone-ready .vcf file: proper RFC 4180 parsing, column mapping, vCard 3.0 output, in your browser.

Table of Contents

    Spreadsheet to contacts in 30 seconds

    CSV rule RFC 4180 Quoted fields, doubled quotes inside
    Mapping You pick columns Headers differ, guessing gets it wrong
    Output vCard 3.0 Widest import support, RFC 2426
    Uploaded Nothing Building runs in your browser

    Open Cubbbix Spreadsheet to Contacts.

    You have a list of contacts in a spreadsheet and you need it on your phone. The free Cubbbix Spreadsheet to Contacts tool takes a CSV list, lets you say which column holds the name, the phone, the email and the organisation, and writes one vCard 3.0 block per row into a .vcf file you can import into Google Contacts, iCloud, Outlook or your phone. Nothing is uploaded.

    The first job is parsing the CSV properly. CSV follows RFC 4180: a field that contains a comma, a quote or a line break is wrapped in double quotes, and a double quote inside a field is written twice. A reader that splits every line at every comma breaks on a name such as Haddad, Amira or an address with a comma in it, so this tool parses character by character, tracking whether it is inside quotes, before it maps any column. Only then does it ask which column is which, because a list exported from one system rarely uses the same headers as a list from another.

    Dark green graphic showing CSV rows becoming vCard blocks

    Figure 1: Parse the CSV properly first, then map columns, then build vCards.

    Why mapping is manual

    One export calls the column Name, another calls it Full Name, a third calls it Contact, and a fourth has no header row at all. Guessing from headers gets it wrong often enough to matter, and a wrong guess puts phone numbers in the name field. Picking the columns yourself takes ten seconds and is the honest way to do it. The tool pre-selects its best guess from the header names, so most lists only need a glance, but the final say is yours. Without a header row, the dropdowns show Column 1, Column 2 and so on, and you map by position.

    The output is vCard 3.0 (RFC 2426), the version with the widest import support across Google Contacts, iCloud, Outlook and Android phones. Each contact is one block: BEGIN:VCARD, VERSION:3.0, FN for the formatted name, N split into family and given names on the first space, TEL, EMAIL, ORG, TITLE and NOTE when the mapped columns have values, then END:VCARD. A contact needs a name to be valid, so a row with no name gets its phone number as a placeholder name rather than being dropped silently, and the page says how many rows that happened to. Phone numbers are kept exactly as written, because reformatting a number you typed is how digits get lost. Long lines are folded at 75 characters with a continuation line starting with a space, as the vCard format requires.

    Dark green graphic showing column mapping dropdowns

    Figure 2: Headers differ between systems, so you pick the columns. Guessing puts numbers in the name field.

    vCard 3 or vCard 4

    Version 4.0 is RFC 6350, the current standard, and version 3.0 is RFC 2426, the older one. The contact data is the same either way, but 3.0 imports more widely: some phones and older contact apps still mishandle 4.0 details, while 3.0 imports almost everywhere. That is why this tool writes 3.0. If your target system is modern and you need a 4.0-only property, that is a different tool, and this one does not pretend to be it.

    Dark green graphic showing vCard 3 versus vCard 4

    Figure 3: vCard 3.0 imports almost everywhere. vCard 4.0 is newer but less widely handled.

    Questions people ask

    Does my CSV need a header row?

    It helps, but it is not required. With a header row, the mapping dropdowns show the header names. Without one, they show Column 1, Column 2 and so on, and you map by position.

    Why is vCard 3.0 used instead of 4.0?

    Because 3.0 (RFC 2426) imports more widely than 4.0 (RFC 6350). Some phones and older contact apps still mishandle 4.0 details, while 3.0 imports almost everywhere.

    Is my contact list uploaded anywhere?

    No. The CSV parsing and the vCard building run in your browser. The list never leaves your device.

    Was this article helpful?

    Comments

    Loading comments...