VCF to Google Sheets — Convert the vCard to CSV, Then Import
Google Sheets has no Open vCard command. A .vcf is a stream of BEGIN:VCARD blocks, not a table. Flatten it to CSV here — in the browser, nothing uploaded — then File → Import in Sheets (as of 2026) with the one setting that keeps a leading + on phone numbers. Or download .xlsx and open it from Drive; phone columns in that workbook are stored as text.
Drop your VCF / vCard file here
.vcf with any number of contacts — vCard 2.1, 3.0 and 4.0 all supported, processed on your device.
Step 1 — convert the .vcf to CSV here
Drop the .vcf on the tool above. Every BEGIN:VCARD block becomes one row. The preview shows the first 8 contacts; Download CSV writes all of them as UTF-8 with a BOM. CSV is the default here; the same widget can emit .xlsx. Parsing runs in the tab — nothing is uploaded.
You get these 18 headers, in this order — the CSV_COLUMNS list:
- First Name
- Last Name
- Full Name
- Phone 1
- Phone 1 Type
- Phone 2
- Phone 2 Type
- Email 1
- Email 2
- Company
- Job Title
- Street
- City
- State
- ZIP
- Country
- Website
- Notes
Two phones and two emails per row: Phone 1 / Phone 1 Type, Phone 2 / Phone 2 Type, Email 1, Email 2. The parser collects every TEL and EMAIL line — it does not cap them at two. The spreadsheet only writes the first two of each, so a third number is omitted from the CSV. One row per contact; empty fields stay empty.
What is dropped, checked in the parser and the column list: PHOTO (and unhandled properties such as LOGO / SOUND) is never copied onto the contact, so it cannot appear in a cell. Extra ADR lines overwrite street, city, state, ZIP and country — only the last address survives. BDAY is parsed but is not one of the 18 columns. Middle name is parsed from N and also has no column. Extra URL / NOTE lines overwrite; last one wins. Keep the original .vcf if you need photos or every extra line.
Step 2 — import into Google Sheets
Sheets will not open a .vcf. As of 2026, import the CSV you just downloaded like this:
- File → Import (in a spreadsheet, or at sheets.google.com).
- Upload → pick the .csv.
- Import location — Create new spreadsheet, Insert new sheet(s), or Replace.
- Separator type: Detect automatically. The file is comma-separated with a UTF-8 BOM.
- Convert text to numbers, dates and formulas: No. That is the setting that keeps a leading
+and a leading0on phone numbers.
Leave that conversion on (the usual default) and Sheets treats a phone that looks like a number as numeric. +44 20 7946 0958 can lose the plus or become a formula; a UK mobile such as 07911 123456 loses the leading zero; a long number can flip into 4.47E+11. None of those values are still a phone number. Turning conversion off stores the column as text. Menu labels are as of 2026 and can move — after import, freeze the header row and spot-check a few + numbers before you trust the sheet.
Or open the .xlsx in Drive
The widget also writes Excel. Toggle to Excel (.xlsx), download, then in Drive (as of 2026): upload → Open with → Google Sheets. You skip File → Import and the Convert text to numbers trap. Phone numbers leave this tool as text because the xlsx writer walks every header matching /phone|mobile|tel/i and sets those cells to type s(string). Phone 1, Phone 1 Type, Phone 2 and Phone 2 Type all match, so they are stored as text, not Number. Opening that workbook in Sheets therefore starts from strings. Drive still copies the file into your Google account; the conversion here did not. This page has not re-tested Drive's Open with Sheets — the claim is about what the writer stores.
Fix-ups in Sheets
SPLIT Full Name when First / Last came through empty — Full Name is column C, so =SPLIT(C2," ") is a start; extra middle names need a more careful formula. TRIM Phone 1 and Email 1 before you match or filter. Remove duplicates with Data → Data cleanup → Remove duplicates (as of 2026), typically on Email 1 or Phone 1. For exact duplicate vCards before you flatten them, the VCF duplicate remover compares cards without turning them into a table. Because you imported with Convert text to numbers off (or opened the .xlsx), a filter on numbers starting with + or 0 still works.
Back to a vCard
In Sheets, as of 2026: File → Download → Comma Separated Values (.csv), then drop that file on the CSV to VCF converter on the homepage. The 18 headers were run through detectMapping in Node — the same function the homepage uses. Twelve map back; six do not.
| Header | detectMapping |
|---|---|
| First Name | firstName |
| Last Name | lastName |
| Full Name | fullName |
| Phone 1 | ignored |
| Phone 1 Type | ignored |
| Phone 2 | ignored |
| Phone 2 Type | ignored |
| Email 1 | ignored |
| Email 2 | ignored |
| Company | org |
| Job Title | title |
| Street | street |
| City | city |
| State | state |
| ZIP | zip |
| Country | country |
| Website | website |
| Notes | note |
HEADER_RULES matches Google exports (Phone 1 - Value, E-mail 1 - Value) and generic names (Phone, Email, Mobile). After normalization, "Phone 1" is phone1and "Email 1" is email1 — those do not match. Convert this CSV straight back and names, company, title, address, website and notes survive; phones and emails do not. Rename first: Phone 1 → Phone or Phone 1 - Value (a second phone column still maps); Email 1 → Email; Email 2 → E-mail 2 Address. Phone type columns have no rule.
Privacy
Conversion here is local: the vCard is read and written to CSV or .xlsx in your browser. There is no upload endpoint. File → Import in Sheets, and Open with Sheets from Drive, send the file to Google — that transfer is to your Google account, not to this site. If the list should never leave the machine, stop after the download and work in Excel or LibreOffice instead.
VCF to Google Sheets — FAQ
How do I convert a VCF file to Google Sheets?
Two steps. Convert the .vcf to CSV in the tool on this page (it runs in your browser — nothing is uploaded). Then in Google Sheets, as of 2026: File → Import → Upload → pick the CSV → Separator type "Detect automatically" → set Convert text to numbers, dates and formulas to No. That last control is what keeps a leading + and a leading 0 on phone numbers. Download CSV is selected by default; Excel (.xlsx) is the other path if you would rather open the file from Drive.
Why did Sheets strip the + from my phone numbers?
As of 2026, the import dialog's Convert text to numbers, dates and formulas option was left on. Sheets then treats +44 20 7946 0958 as a number or a formula: the + disappears, a UK mobile starting with 0 loses the zero, and a long international number can flip into scientific notation. Set that option to No. If you already imported, convert the vCard again and re-import, or prefix the column with an apostrophe — do not trust a sheet that already rewrote the cells.
What are the 18 columns in the CSV?
First Name, Last Name, Full Name, Phone 1, Phone 1 Type, Phone 2, Phone 2 Type, Email 1, Email 2, Company, Job Title, Street, City, State, ZIP, Country, Website and Notes — in that order. One row per contact. The first two TEL lines and the first two EMAIL lines get columns; empty fields stay empty so the sheet stays rectangular.
Are contact photos included in the spreadsheet?
No. PHOTO (and other binary properties such as LOGO or SOUND) is not copied onto the contact object by the parser, so it never reaches a cell. Birthday is parsed internally but is not one of the 18 export columns. A third phone or email is collected while parsing and then omitted from the CSV, which only writes Phone 1 / Phone 2 and Email 1 / Email 2. Keep the original .vcf if you need photos or every extra line.
Can I skip CSV and open the .xlsx in Google Drive instead?
Yes. Toggle the tool to Excel (.xlsx), download, upload the file to Drive and open it with Google Sheets. Phone columns are written as Excel text cells (type s, not Number), so + prefixes and leading zeros are stored as strings in the workbook. That path skips the CSV import dialog and the Convert text to numbers trap. Drive still copies the file into your Google account; the conversion on this page did not.
If I download the sheet as CSV and convert back to vCard, do phones and emails survive?
Not under these headers. detectMapping maps First Name, Last Name, Full Name, Company, Job Title, Street, City, State, ZIP, Country, Website and Notes. It ignores Phone 1, Phone 1 Type, Phone 2, Phone 2 Type, Email 1 and Email 2 — those names are not in HEADER_RULES (which expects Phone, Mobile, or Google's Phone 1 - Value / E-mail 1 - Value). Rename Phone 1 to Phone or Phone 1 - Value, Email 1 to Email, and Email 2 to E-mail 2 Address before you drop the file on the homepage converter, or the round-trip will come back without numbers or addresses.
Is my .vcf uploaded to this site when I convert?
No. The parser and the CSV / Excel writers run as JavaScript in your tab. There is no upload endpoint. You can disconnect after the page loads and still convert. File → Import in Sheets, and Open with Sheets from Drive, send the file to Google — that transfer is to your Google account, not to this site.
Parser follows RFC 2426, RFC 6350 and the vCard 2.1 spec. parseVcf + contactsToCsv is asserted in scripts/test-convert.mjs. Sheets File → Import labels are as documented for 2026, not re-tested in this pass. Last checked: August 26, 2026. About this site