# Create VCF file with open(output_vcf_path, 'w', encoding='utf-8') as vcf_file: for contact in contacts: vcard = vobject.vCard()
| VCF Field | Description | Common JSON Keys | Notes | |-----------|-------------|------------------|-------| | FN | Formatted name | full_name , name , displayName | Required field | | N | Structured name | first_name , last_name , givenName , familyName | Format: LastName;FirstName;Middle;Prefix;Suffix | | TEL | Telephone number | phone , phone_number , mobile , work_phone , home_phone | Specify type: CELL, WORK, HOME | | EMAIL | Email address | email , email_address , mail | Types: WORK, HOME, PREF | | ORG | Organization/Company | company , organization , employer | Can include department | | TITLE | Job title | title , job_title , position | | | ADR | Address | address , street , location | Complex field with multiple components | | URL | Website | website , url , webpage | | | NOTE | Notes | notes , description , comment | Free text | | BDAY | Birthday | birthday , birthdate , dob | Format: YYYY-MM-DD | | PHOTO | Photo/avatar | photo , avatar , image | Base64 encoded or URL |
If you have a technical team, use the Python script provided above. If you are a marketer, try a free online tool first with a test file. json to vcf converter
# Write fields echo "FN:$first_name $last_name" >> "$OUTPUT_VCF" echo "N:$last_name;$first_name;;;" >> "$OUTPUT_VCF"
VCF (vCard) is a file format standard for electronic business cards. It is supported by almost every operating system, including Windows, macOS, iOS, and Android. It is supported by almost every operating system,
]
# Write Phone Number if 'phone' in contact: vcf_file.write(f"TEL:contact['phone']\n") Cons: Requires Python and coding knowledge
For a quick, one-off task, online tools like the JSON to VCF Converter offer a user-friendly experience.
100% private, handles unlimited records, customizable mapping. Cons: Requires Python and coding knowledge.
# Add address if available address = contact.get('address', contact.get('street', '')) city = contact.get('city', '') state = contact.get('state', '') zipcode = contact.get('zip', contact.get('postal_code', ''))
Maya sipped cold coffee and opened a blank script. She liked parsers because they were patient: rules you taught them they followed with no attitude. She began by sketching the workflow in a note app—normalize, dedupe, map fields, export.