Skip to content

Convert ABCDDB to CSV

Export Apple Contacts data to CSV through vCards for spreadsheets, CRMs, and contact imports.

Make CSV files online

We can't read ABCDDB files yet, so this conversion isn't available. If you can export your work to one of these formats - or others - we'll turn it into CSV:

Want to convert ABCDDB to CSV?

Let us know. We pick the conversions to add next by how many people ask for them.

How to convert abcddb to csv file

Spreadsheet, CRM, and mailing-list software generally cannot open Apple’s internal ABCDDB database directly, so contacts must be exported to a portable format first. Converting the exported vCards to CSV makes the records usable in applications that require rows and columns.

What the ABCDDB format is

ABCDDB is the internal database format used by macOS Address Book and Contacts. A common filename is AddressBook-v22.abcddb, usually under ~/Library/Application Support/AddressBook/; the exact filename, schema, and location vary by macOS version.

It is an SQLite-based application database, not a contact-exchange format. The surrounding AddressBook folder can contain contact photos, indexes, account data, metadata, and other files. Do not rename the file to .csv or edit its SQLite tables unless you are performing specialized data recovery; direct database extraction can expose private schema details and produce incomplete, duplicated, or incorrectly linked contacts.

What the CSV format is

CSV represents a table as records separated by lines and fields separated by a delimiter, normally a comma. Spreadsheet applications, CRMs, databases, mailing-list systems, and many contact-import tools accept it.

CSV can carry common values such as names, organizations, job titles, phone numbers, email addresses, postal addresses, and notes. It has no universal field, label, encoding, or escaping standard and cannot natively preserve contact photos, groups, linked cards, account metadata, or every custom Apple field.

How to convert the contacts

Export vCards from Contacts

  1. Quit Contacts and make a backup of the complete ~/Library/Application Support/AddressBook/ folder, rather than relying on a copy of one database file.
  2. Open Contacts on the Mac containing the records. If the contacts belong to iCloud, Exchange, Google, or another account, wait for synchronization to finish.
  3. Select the required cards, or press Command-A to select all cards.
  4. Choose File → Export → Export vCard and save the resulting .vcf file.
  5. Convert the .vcf file to CSV with a local utility or script. Desktop vCard-to-CSV applications can provide field mapping; a local script gives more control and avoids uploading personal contact data.

For a small, non-sensitive export, online services such as CloudConvert or Convertio may provide VCF-to-CSV conversion. Confirm that the service currently supports .vcf input and CSV output, and check its retention and deletion terms before uploading an address book.

Convert vCards locally with Python

Install the parser:

python3 -m pip install vobject

Save the following as vcf_to_csv.py. It reads standard vCard name, organization, address, email, telephone, and note properties and writes a UTF-8 CSV file:

import csv
import sys
import vobject

source, destination = sys.argv[1], sys.argv[2]
fields = [
    "first_name", "last_name", "organization", "title",
    "email", "phone", "street", "city", "region", "postal_code",
    "country", "note"
]

def items(card, name):
    return card.contents.get(name, [])

def text(value):
    if isinstance(value, (list, tuple)):
        return ", ".join(str(x) for x in value)
    return str(value) if value is not None else ""

def first(card, name):
    values = items(card, name)
    return text(values[0].value) if values else ""

def name_parts(card):
    values = items(card, "n")
    if not values:
        return "", ""
    name = values[0].value
    return text(name.given), text(name.family)

with open(source, encoding="utf-8") as handle:
    cards = list(vobject.readComponents(handle.read()))

with open(destination, "w", newline="", encoding="utf-8-sig") as output:
    writer = csv.DictWriter(output, fieldnames=fields)
    writer.writeheader()
    for card in cards:
        given, family = name_parts(card)
        addresses = items(card, "adr")
        address = addresses[0].value if addresses else None
        writer.writerow({
            "first_name": given,
            "last_name": family,
            "organization": first(card, "org"),
            "title": first(card, "title"),
            "email": "; ".join(text(x.value) for x in items(card, "email")),
            "phone": "; ".join(text(x.value) for x in items(card, "tel")),
            "street": text(address.street) if address else "",
            "city": text(address.city) if address else "",
            "region": text(address.region) if address else "",
            "postal_code": text(address.code) if address else "",
            "country": text(address.country) if address else "",
            "note": first(card, "note"),
        })

Run it with:

python3 vcf_to_csv.py contacts.vcf contacts.csv

When importing contacts.csv, select UTF-8 encoding and comma as the delimiter if the destination application asks. The UTF-8 BOM used by the script helps some versions of Microsoft Excel detect non-ASCII characters correctly.

Quality and compatibility limits

The script combines multiple email addresses and telephone numbers in one field separated by semicolons. If the destination requires separate columns, change the script to write fields such as email_1, email_2, phone_1, and phone_2.

Only the first postal address is written. Address labels, additional addresses, contact groups, photos, birthdays, URLs, relationships, custom fields, and some account-specific metadata are omitted unless the script or destination schema is extended.

Check names, international phone numbers, multiline addresses, labels, duplicate cards, non-ASCII characters, and empty fields after import. CSV has no fixed contact schema, so the target application’s field-mapping rules determine how each column is interpreted.

Information about file extensions and file types is provided by File-Extensions.org

Additional formats for
abcddb file conversion

Convert to csv from
other formats

Share on social media:

Already downloaded

This file has already been downloaded. For your privacy it was deleted from our server right after the download, so it cannot be downloaded again. To get it once more, convert the file again.