BROWSER-BASED TABLE TOOL

CSV to VCF: Convert Contact Spreadsheets to vCard

Convert CSV, TSV or XLSX contacts to vCard 4.0 locally. Map multiple phones, emails and addresses, preserve text values and download selected contacts as VCF.

File contents are processed locally in your browser. Refreshing or closing clears the session. The website still requests static resources.

Inputs → Rules → Review → Download

Original files remain read-only. Confirm parsing and fields for each input, then run a full check.

Session memory only; refresh clears data. 10 MiB per file, 2 million input cells, 30 seconds per task; limits stop processing.

Sample library · Normal / Boundary / Error

Prepare a contact table for a deliberate export

This CSV to VCF tool turns a prepared contact table into structured vCard contacts. Each source record becomes one contact. Start after you have cleaned and, where appropriate, explicitly merged duplicate records. The converter does not infer that two people with the same name are the same person, or that several rows should be combined. Use the existing cleanup and duplicate-record tools first when your source needs that decision, then bring the reviewed table into this page.

The output is a local file. No online address book is read or modified, no email is sent, no telephone number is dialed and no email deliverability check is performed. Website and contact links are treated as supplied fields rather than destinations to visit. A contact card in the preview does not request a remote photograph. The default delivery contains only the selected valid contacts, and optional reports are downloaded separately.

Confirm your input before mapping contact fields

Choose a CSV or TSV file, paste cells, select a verified XLSX data area, or use the current table from an earlier workbench operation. Each file import confirms the relevant encoding, delimiter, header and field structure. Workbook input requires a sheet and region selection and an explicit value mode. Check hidden content and cached formula results where relevant; this tool does not calculate formulas, execute macros or preserve the appearance of a workbook.

Contact identifiers, telephone numbers and postal codes remain strings. This prevents the converter itself from turning 00123 into 123 or removing a leading plus sign. However, an upstream spreadsheet may already have lost those characters before export. Inspect the imported preview against your original source. Selecting a text-preserving import cannot reconstruct a number that was previously rounded or a leading zero that is no longer present.

Confirm the display-name mapping and add only the fields you intend to deliver. The supported mapping includes family name, given name, additional names, honorific prefix and suffix, organization, department, job title, phone numbers, email addresses, structured addresses, one website and a note. Unmapped source columns appear in a separate list. They are not copied into an invisible extension or silently appended to a note.

Keep full names and organizations faithful to the source

A complete name such as María del Carmen stays exactly as the display name. The converter does not split on spaces and guess which word is the family name. If you have reliable separate name columns, map their components explicitly. This lets you preserve names from different naming traditions without asking the software to infer a cultural convention from spelling or the interface language. A supplied empty component stays empty rather than receiving a guessed value.

Every generated contact needs a nonblank display name. When the selected display-name field is empty, the default is an error for that record. You can explicitly map a fallback field, for example a company name for an organization contact. The converter does not automatically expose an email address as a name or manufacture a natural-person identity for a company. Review the fallback choice before exporting, since it defines how unnamed source records appear in the receiving address book.

Map several telephone numbers and email addresses

Add a phone mapping for each relevant source column and assign an appropriate type, such as work, home or mobile. Add email mappings separately with work or home labels. Two phone properties and two email properties remain separate values on one contact rather than four new contacts. Labels express the meaning you select; the converter does not determine whether a number is actually a mobile number or whether an address belongs to a workplace.

If a source cell contains several values, enter its exact delimiter explicitly. Leaving the delimiter blank preserves the entire cell as one value. The converter never assumes that every comma separates phone numbers, because punctuation may be part of a formatted number or a different field. Check split results carefully: a trailing separator can create an empty item, which is reported instead of silently disappearing. Do not split a complete postal address with a generic comma rule.

Phone values are emitted as declared text in the implemented vCard 4.0 subset so plus signs, leading zeros and supplied extension text can remain unchanged. The tool does not add a country code based on your language or join a separate extension field into a main number. If you need an extension represented differently, prepare the exact intended text yourself and verify how the recipient application handles it. No compatibility claim substitutes for that test.

Use address components and understand the format boundary

Add an address mapping and explicitly identify post-office box, extended address, street, locality, region, postal code and country fields as applicable. Multiple addresses can have different home or work types. A postal code of 00123 stays text, and a semicolon inside the street remains part of that street rather than becoming a new address component. The preview shows all mapped components so you can notice if a whole address was mistakenly mapped to a postal-code field.

The implemented output is vCard 4.0. Version 3.0 is visibly unsupported, because changing a version label would not implement a different format correctly. Text, structured properties and URI properties use their respective serialization paths, and long physical lines are folded without splitting a UTF-8 character. Notes containing line breaks or text resembling protocol fields remain a single note. They cannot create an extra telephone property or a second contact through raw newline injection.

This scope excludes photographs, external attachments, complex groups, inferred birthdays and product-specific custom extensions. Website fields are limited to acceptable HTTP or HTTPS URI text and are not fetched. Other supplied columns remain in the unmapped list, allowing you to decide whether another workflow is required. The converter makes no promise to preserve unsupported data simply because the source file contained it.

Review identities, selected scope and application testing

The preview presents contact cards with names, typed phones, email addresses and addresses. Valid contacts can be selected individually, all together or cleared and selected again. Paging changes what you see, not the complete export selection. Error records and duplicate source IDs are listed separately, and excluding failed records requires an explicit acknowledgment. The selected-contact count tells you the object scope before downloading; it is not a count of phone fields or address lines.

A generated project namespace keeps identifiers separate from clear-text contact data. When a stable source ID is mapped, retaining that namespace with the rules lets the same source ID receive a stable exported UID in that project. Without a stable source ID, identities are tied to the imported task records. The UID does not contain the phone number or email address in clear text. A stable UID helps association but does not guarantee that every address book updates instead of duplicating on repeated import.

Download one VCF containing the selected contacts, or choose grouped output using the explicitly mapped group field. Grouped output is a ZIP of VCF files with neutral numbered filenames. The converter does not create a separate file named after every person. The package omits raw source tables, hidden fields and old-value history. Save a separate error or unmapped-field report only when you need it and understand its content.

Before download, an independent ICAL.js vCard parser reads the generated file and compares contact counts, property values and types with the intended contacts. This is format verification, not a test of a particular address-book application. Actual Apple Contacts and Google Contacts import has not been verified for this release. Their official import instructions explain the process, but do not prove that every version or label is retained. Use a small synthetic sample in an isolated destination before relying on a real import.

Keep the session and its limits in mind

Changing inputs or mappings invalidates the previous result and disables its delivery until a fresh run. Processing and validation run locally in a cancellable worker, with file, cell, output-size, group-file and timeout limits. Exceeding a limit stops processing instead of exporting an unexplained subset. The webpage still requests static assets; contact contents are not uploaded to a conversion service. Refreshing or closing clears in-memory data, so save the reviewed file and any deliberately retained project rules before leaving.

Frequently asked questions

How do I turn a CSV or Excel contact list into a VCF file?

Import the file, confirm the data preview, and map the display name and contact fields. Run the review, select the valid contacts you want, then download the VCF. Each source row becomes one contact; the original spreadsheet is not included in that download.

Can one contact have several phone numbers and email addresses?

Yes. Add a mapping for each phone or email column and choose a label such as work, home or mobile where supported. If several values share one cell, specify its delimiter. Multiple rows for the same person are not automatically combined.

Will phone numbers and postal codes keep their leading zeros?

They stay text, so values such as 001234 and 00123 can be preserved. The tool does not add a country code or guess an extension. If Excel has already converted or rounded a value, correct the source first; the converter cannot recover missing digits.

What should I map if my file has only a full-name column?

Map it to Display name. You do not need separate first and last names, and the tool will not guess them by splitting on spaces. An empty display name needs a deliberately chosen fallback field or correction before that contact can be exported.

Is the VCF compatible with Apple Contacts or Google Contacts?

This tool generates vCard 4.0 and checks it with an independent format parser. Actual imports into Apple Contacts and Google Contacts have not been verified for this build. Test a small set of synthetic contacts in your target app first, especially labels and addresses. vCard 3.0 is not currently supported.

Will importing the VCF update existing contacts or create duplicates?

That depends on the receiving app and account. A stable source ID can preserve UIDs when you reuse the saved project rules, but it does not guarantee update behavior. This page does not access your address book or merge existing contacts for you.

Why are there fewer contacts in the download than rows in my spreadsheet?

The download includes only selected valid contacts. Review blank names, duplicate source IDs, excluded errors and your selection. Several phone numbers in one row still belong to one contact. Unmapped columns are listed separately and are not silently copied into the notes.