How to combine multiple vCard (.vcf) files into one
Exporting your contacts is easy. Ending up with one tidy file is the hard
part. Most people finish with a little heap of .vcf exports — one per phone, one per
account, one per old backup — full of the same people over and over. Here's what these files
really are, why you always seem to have several, and how to merge them into a single address book
with each person kept exactly once.
What a .vcf / vCard file actually is
A vCard is the standard "digital business card" format, and a .vcf file is simply
one or many of those cards saved as plain text. Open one in a text editor and each contact looks
roughly like this:
BEGIN:VCARD…FN:Jane Doe…TEL:+1 555 0100…EMAIL:jane@example.com…END:VCARD
A single .vcf can hold one card or ten thousand, just stacked one after another.
Because it's an open text format, virtually every phone, mail client and address book can both
read and write it — which is exactly why it's the format you get when you export contacts from
almost anywhere.
There's one wrinkle worth knowing: vCard comes in three versions that are still in active use — 2.1 (old, from Nokia-era phones and legacy exports), 3.0 (the long-standing default most apps write), and 4.0 (the current standard). They store the same idea of a contact but encode fields differently, so a naive attempt to mash files together by hand can quietly garble the older ones.
Why you end up with several .vcf files
Nobody sets out to collect vCard files — they accumulate. A typical drawer holds:
- An
iCloud vCard.vcfexported from your iPhone or icloud.com. - A
contacts.vcfthat Google Contacts handed you. - A
Contacts.vcfpulled off an old Android phone or SIM. - One or two ancient backups named things like
phone-2016.vcfthat you exported "just in case" and never looked at again.
Between them, these files hold every person you know — but with enormous overlap. The friend who's in your iCloud, your Google account and that 2016 backup appears three times, and each copy may carry a slightly different slice of their details. Combining the files is really two jobs: joining them, and then removing the duplication that joining exposes.
The messy manual ways
You can combine .vcf files by hand, and it's worth understanding why the obvious
routes disappoint:
- Concatenating the files. Because a
.vcfis just stacked cards, you can glue several together end to end — on a Mac,cat *.vcf > all.vcfin Terminal; on Windows,copy *.vcf all.vcf. It "works," but all it does is pile every card into one file: the triplicate people are still triplicated, and if the files mix vCard versions the result can be malformed. - Importing them one after another. Load each
.vcfinto iCloud or Google in turn and you get the same thing — every card, including all the duplicates — now living in your live account, where you then have to clean it up in place. - Merging card by card. The built-in "merge duplicates" tools help, but each only sees its own account and matches conservatively, so cross-file and half-complete duplicates slip through.
Joining is easy; de-duplicating is the actual problem. Any of the routes above will get all your cards into one pile. What none of them does well is recognise that three cards are the same person and fold them into one complete entry — which is the only thing that turns a heap of exports into an address book you'd actually use.
The clean way: merge into one de-duplicated address book
This is what ContactAttic does in a single pass. You point it at all your .vcf
files at once — drop the whole folder on it — and it:
- Reads every file, in every version. vCard 2.1, 3.0 and 4.0 are all parsed correctly, so the old Nokia-era export and the brand-new one line up properly instead of fighting each other.
- Finds the cards that are the same person across all the files and merges them — combining the phone numbers, emails and details from each copy into one complete entry. The three copies of your friend become a single card that has everything the three had between them.
- Keeps every unique person exactly once. People who really are distinct stay as their own entries; nothing genuine is discarded.
- Writes one clean
contacts.vcf— a standard vCard you can import into any phone or app — alongside a structured.jsonlcopy and a report of how many cards were merged and which file each piece came from.
It all runs on your own computer: your source files are opened read-only and never changed,
nothing is uploaded, and a Cancel button stops a run before anything is written if the preview
isn't what you wanted. The output is ordinary files you own — import the single
contacts.vcf back into iCloud, Google or your phone and you're left with one address
book, each person once, instead of a folder of overlapping exports.
This is exactly what ContactAttic automates
Read all your .vcf exports across vCard 2.1, 3.0 and 4.0, merge the duplicates
into one complete card per person, and write a single clean address book plus a report — all on
your own computer, nothing uploaded. In internal testing; sign up before launch for 25% off.