For educational purposes, here is a manual method. This is only feasible for 1-5 contacts.
import json def json_to_vcf ( json_file , vcf_file ): with open(json_file, ' r ' ) as f : contacts = json.load(f) with open(vcf_file, ' w ' ) as f : for contact in contacts: f.write( " BEGIN:VCARD\n " ) f.write( " VERSION:3.0\n " ) f.write( f " FN: contact.get( ' name ' , ' ' ) \n " ) f.write( f " TEL;TYPE=CELL: contact.get( ' phone ' , ' ' ) \n " ) f.write( f " EMAIL: contact.get( ' email ' , ' ' ) \n " ) f.write( " END:VCARD\n " ) # Usage json_to_vcf( ' contacts.json ' , ' contacts.vcf ' ) Use code with caution. Copied to clipboard
You upload your JSON file, map the fields (e.g., tell the tool that phone_number in JSON equals TEL in VCF), and download the .vcf file.
In bioinformatics, tools like variantconvert map genetic variant data from JSON or TSV formats into VCF files for research.
The Ultimate Guide to JSON to VCF Conversion: Streamline Your Contact Data
This method (JSON -> CSV -> Google Contacts -> VCF) is the most secure way to convert data without coding knowledge, as it leverages Google's trusted infrastructure.
[1] DePristo, M. A., Banks, E., Poplin, R., Gabriel, S., Abecasis, G. R., Gabriel, S., ... & Gabriel, S. (2011). The variant call format (VCF) version 4.0. Nature Precedings, 1-10. doi: 10.1038/npre.2011.6406.1
You can also expose this as a REST endpoint that accepts JSON and returns a downloadable .vcf file.
const contacts = [ name: 'Emma Watson', tel: '+123456', email: 'emma@example.com' ];
Before converting, run your source text through a JSON validator to confirm it contains no syntax errors like missing commas or unclosed brackets.
: Older systems like Outlook prefer vCard 2.1 or 3.0. Modern iOS and Android devices fully support vCard 4.0. Choose the version that matches your destination platform.
Moving contacts from a custom web application database (JSON) to your phone's address book (VCF/vCard).
For batch processing thousands of contacts securely (offline), use a script.