Import

VCF to Google Sheets: 4 Methods to Import vCard Contacts

Quick Answer

Fastest no-code method: Import your VCF file to Google Contacts, then export as “Google CSV”, and open the CSV in Google Sheets. Direct method: Convert VCF to CSV using Python or a converter tool, then upload the CSV to Google Sheets via File, Import. Google Sheets cannot open VCF files directly because VCF is a contact card format, not a tabular format.

Introduction

Google Sheets does not support VCF files. If you try to upload a .vcf file, Google Sheets either shows an error or displays the raw vCard text in a single column. You need to convert the VCF to CSV first, then import the CSV into Google Sheets. The conversion step is where the method differences lie.

This guide covers four methods to get VCF data into Google Sheets, from a no-code Google Contacts pipeline to a Python script that produces a clean CSV ready for upload. If you need a general CSV file instead of Google Sheets specifically, see our VCF to CSV guide. If you need the data in Microsoft Excel, see VCF to Excel.

We have tested VCF-to-spreadsheet conversions at Univik since 2013, handling vCard 2.1, 3.0 and 4.0 files from iCloud, Outlook, Samsung, Android, and WhatsApp exports with contact counts ranging from 10 to 50,000.

Why VCF Cannot Open Directly in Google Sheets

VCF Format (Contact Cards)

Stores contacts as BEGIN:VCARD / END:VCARD blocks. Each property (FN, TEL, EMAIL) is on its own line. Not tabular. One contact can span 5 to 50 lines depending on how many fields it has.

Google Sheets Format (Rows and Columns)

Expects one row per contact and one column per field (Name, Email, Phone). Needs a header row. Reads CSV, TSV, or XLSX. Cannot parse vCard BEGIN/END blocks or property labels like TEL;TYPE=CELL.

Because of this structural mismatch, a conversion step is always required. The goal is to flatten each vCard block into a single spreadsheet row with columns for Name, Email, Phone, Organization, and other fields.

4 Methods to Convert VCF to Google Sheets

Method 1: Via Google Contacts (No Code)

This is the simplest method. Google Contacts imports VCF files natively and can export them as “Google CSV”, which is a CSV format designed for Google’s own column headers.

1

Import VCF to Google Contacts. Go to contacts.google.com, click Import in the left sidebar, select your VCF file, and click Import. For detailed steps, see our import VCF to Google Contacts guide.

2

Export as Google CSV. Select the imported contacts (or click the checkbox at the top to select all). Click the three-dot menu and choose Export. Select “Google CSV” as the export format and click Export. A file named contacts.csv downloads to your computer.

3

Open in Google Sheets. Go to sheets.google.com and create a new blank spreadsheet. Click File, Import, Upload, and select the contacts.csv file. In the import settings, choose “Replace spreadsheet” and “Detect automatically” for the separator. Click Import data.

Google’s 3,000-Contact Import Limit

Google Contacts can import up to 3,000 contacts at a time from a single VCF file. If your file has more than 3,000 contacts, split the VCF file into smaller batches before importing. The total Google Contacts limit is 25,000 contacts per account.

Method 2: Python Script (Direct to CSV)

This method skips Google Contacts entirely. It converts VCF directly to a CSV file that you upload to Google Sheets. You control which columns appear in the output.

1

Install vobject: pip install vobject

2

Save the following as vcf_to_sheets.py:

import vobject, csv, sys
vcf_file = sys.argv[1] if len(sys.argv) > 1 else "contacts.vcf"
with open(vcf_file, "r", encoding="utf-8") as f:
  data = f.read()
rows = []
for card in vobject.readComponents(data):
  name = card.fn.value if hasattr(card, "fn") else ""
  org = card.org.value[0] if hasattr(card, "org") else ""
  title = card.title.value if hasattr(card, "title") else ""
  emails = [e.value for e in card.contents.get("email", [])]
  phones = [t.value for t in card.contents.get("tel", [])]
  rows.append([name, org, title,
    emails[0] if emails else "", emails[1] if len(emails) > 1 else "",
    phones[0] if phones else "", phones[1] if len(phones) > 1 else ""])
with open("contacts_for_sheets.csv", "w", newline="", encoding="utf-8") as f:
  w = csv.writer(f)
  w.writerow(["Name","Organization","Job Title",
    "Email 1","Email 2","Phone 1","Phone 2"])
  w.writerows(sorted(rows))
print(f"Exported {len(rows)} contacts to contacts_for_sheets.csv")

3

Run it and upload. Run python vcf_to_sheets.py contacts.vcf. Then open Google Sheets, click File, Import, Upload, and select the contacts_for_sheets.csv file.

Method 3: VCF Converter Tool (GUI)

A dedicated VCF converter tool provides a graphical interface for converting VCF to CSV. Load the VCF file, select CSV as the output format, save the file, then upload to Google Sheets. This method is best for non-technical users who need batch conversion with field selection options.

Method 4: Google Apps Script (Automation)

If you receive VCF files regularly and want to automate the import, Google Apps Script can parse VCF text directly inside Google Sheets. This is an advanced method for developers.

1

Create a new Google Sheet. Go to Extensions, Apps Script. Paste a script that reads VCF text from a cell or a Google Drive file, parses the BEGIN:VCARD/END:VCARD blocks, and extracts FN, TEL, EMAIL and ORG properties into rows.

2

Run the script. The script writes parsed contacts directly into the active sheet. Because Apps Script runs inside Google Sheets, no file upload is needed after the initial setup. However, Apps Script has a 6-minute execution time limit, so very large VCF files (over 10,000 contacts) may time out.

Google Sheets Import Settings

When you import a CSV file into Google Sheets, the import dialog offers several settings. Here are the recommended options for contact data.

Setting Recommended Value Why
Import location Replace spreadsheet (or Insert new sheet) Avoids mixing with existing data
Separator type Detect automatically Works for comma-separated and tab-separated files
Convert text to numbers No Prevents phone numbers from being treated as numbers (strips leading zeros, adds scientific notation to long numbers)

The “Convert text to numbers” setting is the most important one to get right. If set to “Yes”, Google Sheets converts phone numbers like 00441234567890 into 4.41235E+11, which destroys the data. Always set this to “No” for contact data.

Google CSV Column Headers

When you export from Google Contacts (Method 1), the CSV uses Google’s own column header format. These headers are different from Outlook CSV headers. Here are the most common ones and which VCF property they correspond to.

Google CSV Header VCF Property Example Value
Name FN John Doe
Given Name N (first component) John
Family Name N (last component) Doe
E-mail 1 – Value EMAIL john@example.com
E-mail 1 – Type EMAIL;TYPE= Home / Work / Other
Phone 1 – Value TEL +1-555-0123
Phone 1 – Type TEL;TYPE= Mobile / Home / Work
Organization 1 – Name ORG Acme Corp
Organization 1 – Title TITLE Manager

Google CSV files can have over 50 columns, most of which are empty for typical contacts. After importing to Google Sheets, delete the empty columns to make the data easier to work with.

Cleaning Up the Imported Data

1

Delete empty columns. Select the entire sheet (Ctrl+A), go to Data, Remove duplicates (to see which columns have data), or manually scroll right and delete columns that are completely empty. Google CSV exports include columns like “Relation 1 – Value” and “Website 1 – Value” that are empty for most contacts.

2

Remove duplicate rows. If you imported the same VCF twice or if the VCF contained duplicate contacts, use Data, Remove duplicates and select the Name and Email columns as the criteria. For pre-import deduplication, see our remove duplicates from VCF guide.

3

Format phone numbers as plain text. If phone numbers appear as scientific notation (4.41E+11), select the phone column, go to Format, Number, Plain text. Then re-import the CSV with “Convert text to numbers” set to “No”.

Method Comparison Table

Criteria Google Contacts Python Script Converter Tool Apps Script
Technical skill None Medium None High
Custom columns No (Google’s headers) Full control Some options Full control
Contact limit 3,000 per import No limit No limit ~10,000 (timeout)
Automation Manual Scriptable Manual Automated
Privacy Google sees data Local only Local Google sees data
Best for Quick one-time import Custom formatting Non-developers Recurring imports

Common Problems and Fixes

1

Phone numbers display as scientific notation (4.41E+11). Google Sheets converted the number to a numeric value. When importing the CSV, set “Convert text to numbers, dates, and formulas” to “No”. If the data is already imported, select the phone column, click Format, Number, Plain text, then re-import the CSV.

2

All data appears in a single column. The separator was not detected correctly. Re-import the CSV and change the separator setting from “Detect automatically” to “Comma”. If the file uses semicolons as separators (common with European locale exports), select “Custom” and enter a semicolon.

3

International characters appear as question marks or garbled text. The CSV file is not UTF-8 encoded. Before uploading, open the CSV in a text editor (Notepad++, VS Code) and verify the encoding is UTF-8. If not, re-save as UTF-8. The Python script in Method 2 outputs UTF-8 by default.

4

Google Contacts import fails with “file too large”. Google Contacts has a 20 MB file size limit for imports. Split the VCF file into smaller files or use the Python script (Method 2) which has no size limit and bypasses Google Contacts entirely.

Frequently Asked Questions

Can I upload a VCF file directly to Google Sheets?

No. Google Sheets does not recognize the VCF format. If you upload a .vcf file, it either shows an error or displays the raw vCard text in a single column. You must convert to CSV first using any of the four methods in this guide.

What is the difference between “Google CSV” and regular CSV?

Google CSV uses Google’s specific column headers (like “E-mail 1 – Value”, “Phone 1 – Type”) that are optimized for re-importing into Google Contacts. Regular CSV can use any headers. Both open in Google Sheets, but if you plan to re-import the data back into Google Contacts later, use Google CSV format.

How do I get VCF contacts into Google Sheets on a phone?

On your phone, import the VCF to Google Contacts (which syncs automatically on Android). Then on a computer, go to contacts.google.com, export as Google CSV, and open in Google Sheets. There is no way to do the full conversion on a phone alone without a computer or a third-party app.

Can I convert Google Sheets back to VCF?

Yes. Download the Google Sheet as CSV (File, Download, Comma-separated values). Then import the CSV into Google Contacts and export as vCard. Or use a CSV-to-VCF converter tool for direct conversion without going through Google Contacts.

How do I handle contacts with multiple phone numbers in Google Sheets?

Google CSV creates separate columns for each phone number: “Phone 1 – Value”, “Phone 2 – Value”, “Phone 3 – Value”, etc. If the contact has three numbers, all three appear in their own columns. The Python script in Method 2 handles up to two phones and two emails by default. You can modify it to include more columns.

Conclusion

Last verified: February 2026. Tested with Google Sheets, Google Contacts, and Python 3.12 on Windows 11, macOS 15, and ChromeOS. VCF files tested from iCloud, Google Contacts, Outlook, Samsung, and Android exports across vCard 2.1, 3.0, and 4.0.

To import VCF to Google Sheets, the fastest method is the Google Contacts pipeline (Method 1): import VCF to Google Contacts, export as Google CSV, and open in Google Sheets. For custom columns and no contact limit, use the Python script (Method 2). For non-technical users, a VCF converter tool (Method 3) produces a ready-to-upload CSV. For automated recurring imports, Google Apps Script (Method 4) parses VCF data directly inside Google Sheets.

Three things to remember: set “Convert text to numbers” to No when importing to prevent phone number corruption, delete empty columns after import because Google CSV exports include 50+ mostly-empty columns, and split VCF files over 3,000 contacts if using the Google Contacts method because of Google’s per-import limit.

About the Author

This guide is written and maintained by the Univik team, developers of file conversion and digital forensics tools since 2013. We have tested VCF-to-spreadsheet workflows across Google Sheets, Microsoft Excel, and LibreOffice Calc, covering vCard files from over 15 platforms and contact counts from 10 to 50,000. Have a conversion issue we did not cover? Let us know.