WoluTools

Office & Productivity

Merge VCF files and find duplicate contacts

Add vCard exports from iPhone, Google Contacts or Outlook. You see every contact in one table, merge the duplicates you pick and save one .vcf file or one file per contact.

or drop them here

Free · no account · vCard 2.1, 3.0 and 4.0 · files never leave your browser

Try it with sample contactsSee what you get

What you get · sample contacts from the tool

5 cards in, 4 contacts out

1Contacts read

NamevCard
Nadia Ostrowski3.0
Nadia Ostrowski4.0
Jürgen Gröner quoted-printable decoded2.1
J. Groener3.0
Acme Spares3.0

Listed as a problem: 1 line without a colon was skipped.

2Duplicates by shared email address

Group 1 — Nadia Ostrowski + Nadia Ostrowski Nadia@Example.com = nadia@example.com

FieldKeptDropped
ORGKessler und Voigt GmbHKessler & Voigt GmbH

3Merged card in contacts-merged.vcf

BEGIN:VCARD
VERSION:4.0
N:Ostrowski;Nadia;;;
FN:Nadia Ostrowski
ORG:Kessler und Voigt GmbH
TITLE:Head of Operations
EMAIL;TYPE=WORK:Nadia@Example.com
TEL;TYPE=CELL:+49 170 555 1234
ADR;TYPE=WORK:;;Hafenstrasse 18;Hamburg;;20359;Germany
EMAIL;TYPE=home:n.ostrowski@example.net
NOTE:Prefers email over phone.
END:VCARD

Highlighted lines came from the second card. The group holds a 4.0 card, so the merged card is written as 4.0.

What the tool gives you

How it works

  1. 1

    Add your .vcf files

    Choose or drop one or more files exported from an iPhone, Google Contacts, Outlook, Thunderbird or a CRM. You can also paste vCard text. The files open in the tool in this browser.

  2. 2

    Pick a match rule and tick groups

    Match by shared email address, shared phone number or same full name. Tick the groups you want combined and press Merge ticked groups. Undo merges puts the parsed files back.

  3. 3

    Save the result

    Download one .vcf file, split the contacts into one file each or into batches, or copy the text. Browsers ask before saving several files at once.

How the tool reads and merges vCards

Versions 2.1, 3.0 and 4.0

Folded long lines are joined before anything else is read. Cards in version 2.1 often store accented letters as quoted-printable, such as Gr=C3=B6ner for Gröner. The tool decodes them and writes those cards back as UTF-8 vCard 3.0, because newer address books often misread 2.1 text. Bare parameters such as TEL;CELL become TEL;TYPE=CELL. Cards from 3.0 and 4.0 files keep their version.

How duplicates are matched

Email addresses are compared without regard to upper and lower case. Phone numbers are reduced to digits and the last nine are compared, so +49 170 555 1234 and 0170 5551234 fall into one group. This can now and then pair two short internal extensions. Name matching compares the display name without punctuation and spaces and is the loosest rule. Contacts linked through a shared value land in one group: if A shares an address with B and B shares another with C, all three are grouped.

What a merge keeps

Email addresses, phone numbers, web addresses and postal addresses are pooled, and exact repeats are dropped. Fields that hold one value, such as name, organisation, job title, birthday and notes, come from the first card in the group. When a later card disagrees, the tool lists the difference before you merge. Two spellings of a company name are reported as a conflict, not resolved.

Limits

Photos stored inside a card are carried through unchanged but not compared, so a merge keeps the photo of the first card. Apple group prefixes such as item1.EMAIL are kept. A card whose BEGIN has no matching END is reported, not repaired. The tool cannot tell which address or number is current, so read the conflicts before you import the file into your phone or CRM.

Questions before you run it

Which vCard versions are supported?

The tool reads vCard 2.1, 3.0 and 4.0. Quoted-printable text in 2.1 cards is decoded, and those cards are written back as UTF-8 vCard 3.0. Cards from 3.0 and 4.0 files keep their version. If a merged group contains a 4.0 card, the merged card is written as 4.0.

Are photos in my contacts kept?

Yes. Photos stored as base64 inside a card are carried through unchanged. They are not compared, so when two cards with different photos are merged, the photo of the first card is kept.

How are duplicates found?

You pick one rule: shared email address, shared phone number or same full name. Email is compared without regard to case, phone numbers by their last nine digits, names without punctuation and spaces. Nothing is merged until you tick a group and press Merge ticked groups.

Is there a file size limit?

The tool sets no file size limit. Files are read in your browser, so very large exports depend on the memory of your device. When you split the output, each file holds between 1 and 5,000 contacts.

Is my contact data uploaded to a server?

No. Reading, matching and merging run in your browser. Files you drop on this page are kept in your browser only to hand them to the tool page.