👤CSV→VCF

Excel to VCF Converter — Without Uploading Your Contacts

Turn an Excel sheet of contacts into a .vcf (vCard) file right here in the browser. The .xlsx is read on your device with SheetJS — no upload, no server, no copy of your address book sitting in someone's cloud. Most Excel-to-VCF sites still upload your file to convert it; this one converts on your device. The Excel parser is fetched once, on demand, the first time you drop a workbook.

👤
Written by Casey Marlin · Last updated
This update: xlsx parsing covered by scripts/test-convert.mjs: in-memory SheetJS workbook
How Excel columns map to vCard properties: first and last name become N, company becomes ORG, phone becomes TEL, email becomes EMAIL

Drop your CSV, Excel or JSON file here

.csv, .xlsx, .xls or .json — up to 10 MB / 50,000 contacts, never uploaded.

Why "no upload" matters more for Excel files

A contact spreadsheet is about the most sensitive file a small business has: every customer's name, personal mobile number, email and often home address in one table. The typical online converter workflow — upload your file, we'll email you the result or your file is deleted after 2 hours, trust us— means that entire address book crosses the internet and lands on a stranger's server, subject to their logging, their retention policy and their breaches. Under GDPR that upload is a disclosure of personal data to a processor; for a client list it can also be a plain commercial leak.

None of that is technically necessary, because the conversion is not heavy. Reading a workbook and writing vCard text is exactly the kind of work a browser does well. This page ships the parser to you instead of shipping your data to the parser: SheetJS reads the .xlsx in a browser tab, the mapping and preview run locally, and the .vcf is assembled and saved on your machine. Open your browser's network tab while converting — you'll see zero requests carrying your data. That is the whole privacy policy, verifiable in ten seconds.

The same is true of the CSV converter and the reverse VCF→CSV tool on this site: everything is client-side, always.

Preparing the spreadsheet: 4 rules

  1. One flat table on the first sheet. A single header row, one contact per row. Delete decorative title rows and unmerge merged cells — the converter reads sheet 1 top to bottom.
  2. Format phone columns as Text.Excel's General format eats leading zeros, drops the + from international numbers and turns long numbers into scientific notation. Select the column → Format Cells → Text, then paste the numbers back in.
  3. Use recognizable headers where you can.First Name, Last Name, Mobile Phone, Email, Company, Job Title, Street, City, ZIP — headers like these map automatically. Odd names aren't a problem; you'll just assign them manually in Step 2.
  4. Split names if you have the choice. Separate First/Last columns produce a cleaner structured N property than one Name column (which the converter splits on the last space as a best effort).

Excel to VCF — FAQ

  • Do I need to save my Excel file as CSV first?

    No. Drop the .xlsx or .xls file straight into the converter — it reads the first worksheet directly in your browser using SheetJS. Skipping the Save-As-CSV step also skips the classic Excel-CSV bugs: mangled accents from the wrong encoding, dates silently reformatted, and leading zeros stripped from phone numbers.

  • Is my Excel contact list uploaded to a server?

    No — and this is the difference worth checking before you use any converter. This page parses the workbook with JavaScript on your own device; there is no upload endpoint at all. The Excel parser (SheetJS) is fetched on demand the first time you drop a .xlsx or .xls file; after that chunk has loaded once, you can disconnect and convert offline. CSV, TSV and JSON parsing does not need that extra fetch. Most 'Excel to VCF' sites instead POST your entire spreadsheet — names, numbers, emails of everyone you know — to their server for processing.

  • Which Excel formats are supported?

    Modern .xlsx workbooks and legacy .xls (BIFF) files both work. Only the first worksheet is read, so put your contact table on sheet 1 with one header row. .csv, .tsv and .json files work in the same drop zone too.

  • My phone numbers lost the + or the leading zero in Excel. Will the VCF be wrong?

    The converter exports what Excel displays, so fix it in the sheet first: select the phone column, set the cell format to Text (or prefix numbers with an apostrophe), and re-enter or paste the values. Excel's General format is what strips + signs and leading zeros and turns long numbers into 3.5E+10 scientific notation — a Text-formatted column keeps them intact, and the VCF will then carry them exactly.

  • Which vCard version should I pick for my Excel contacts?

    Same guidance as CSV: vCard 3.0 is the safe default that Android, iPhone and Google Contacts all accept. Use 2.1 only for old feature phones or car head units, and 4.0 when a modern app specifically asks for it.

  • Can each contact get its own .vcf file?

    Yes — choose 'Zip of one .vcf per contact' under Output and you get a zip archive with an individual vCard per row, named after the contact. Handy for CRMs and email-signature tools; phones prefer the single-file option.

  • How many rows can an Excel file have?

    For safety, one file can be up to 10 MB and the first worksheet can contain up to 50,000 contact rows, 200 columns and 1,000,000 populated table cells. Those limits prevent malformed or compressed workbooks from freezing the tab; split a larger address book into smaller batches.

  • Does it understand merged cells or multiple header rows?

    Keep it to one flat table: a single header row, then one contact per row. Merged cells unmerge to a value in the top-left cell and blanks elsewhere, so unmerge and fill down before converting. If your sheet has title rows above the real headers, delete them — or untick the header option and map columns manually.

xlsx parsing covered by the in-memory SheetJS workbook test in scripts/test-convert.mjs. Last checked: August 26, 2026. About this site