Self-Hosted Alternatives to Google Contacts

Why Replace Google Contacts?

Google Contacts stores your entire social graph — names, phone numbers, email addresses, physical addresses, birthdays, employer information, and relationship metadata. Google uses this data for advertising targeting and cross-product personalization. Your contacts’ information is being processed without their knowledge or consent.

More practically:

  • Account dependency. If Google suspends your account, you lose access to your contacts. Google’s automated enforcement systems have locked users out of their accounts for unclear policy violations.
  • Cross-service data mining. Google correlates your contacts with Gmail, Calendar, Maps, and Search usage to build comprehensive profiles of your social network.
  • Limited export options. While Google supports VCF export, the process is manual and does not include contact photos reliably.
  • No offline-first sync. Google Contacts requires internet access to manage contacts. CardDAV syncs contacts to your device for offline access.

What you give up: Google’s contact auto-completion in Gmail, automatic contact creation from email threads, and Google’s contact merge/deduplication features.

Best Alternatives

Radicale — Simplest Option

Radicale handles both CalDAV (calendars) and CardDAV (contacts) in a single service running on ~20 MB of RAM. Your contacts are stored as VCF files on disk — human-readable, easily backed up, and version-controllable with git.

There is no web UI for managing contacts. You use your device’s native contacts app (iOS Contacts, Android Contacts via DAVx5, Thunderbird, GNOME Contacts) to add, edit, and delete entries. Radicale just syncs them across devices.

Best for: Single users who want the simplest possible contact sync with minimal overhead.

[Read our full guide: How to Self-Host Radicale]

Baikal — Best Balance of Simplicity and Features

Baikal provides CalDAV and CardDAV with a web admin panel. You manage users and address books through a browser interface. The setup is a web wizard — no config files to edit.

Like Radicale, actual contact management happens through native apps on your devices. Baikal’s web panel handles the server-side administration (creating users, address books, and checking sync status).

Best for: Households and small teams where you need to manage multiple users through a web interface.

[Read our full guide: How to Self-Host Baikal]

Nextcloud — Best for a Complete Google Replacement

Nextcloud’s Contacts app provides a web-based contact manager alongside CardDAV sync. You can view, edit, create, and organize contacts directly in the browser — the closest experience to Google Contacts’ web interface.

If you are replacing multiple Google services (Drive, Calendar, Contacts, Photos), Nextcloud handles all of them in one deployment. The trade-off is significantly higher resource usage compared to Radicale or Baikal.

Best for: Users replacing Google Workspace entirely, not just Contacts.

[Read our full guide: How to Self-Host Nextcloud]

Quick Comparison

FeatureGoogle ContactsRadicaleBaikalNextcloud
Web UI for contactsYesNoAdmin onlyYes
CardDAV syncYesYesYesYes
Contact groupsYesYes (categories)YesYes
Contact photosYesYes (in VCF)Yes (in VCF)Yes
Merge duplicatesYes (automatic)NoNoYes (manual)
Auto-create from emailYesNoNoNo
Shared address booksVia Google WorkspaceVia ACLVia adminYes
SearchFull-textClient-sideClient-sideFull-text
Offline accessLimitedFullFullFull
RAM usageN/A~20 MB~40 MB512 MB+
PrivacyGoogle processes dataFull controlFull controlFull control

Migration Guide

Exporting from Google Contacts

  1. Go to Google Contacts
  2. Click Export (left sidebar or three-dot menu)
  3. Select All contacts (or a specific group)
  4. Choose vCard (for iOS Contacts) format — this produces a standard .vcf file
  5. Download the file

The Google Contacts CSV format is proprietary. Always export as vCard (VCF) for compatibility with any CardDAV server.

Importing into Your Self-Hosted Server

Radicale: Copy the .vcf file into the Radicale data directory at data/collections/collection-root/[username]/contacts/. Each contact can be a separate .vcf file, or you can import one large file through a CardDAV client like Thunderbird.

Baikal: Use a CardDAV client (Thunderbird or DAVx5) to import. Add your Baikal account, then import the VCF file into the address book.

Nextcloud: Go to Contacts → Import contacts in the web interface. Upload the VCF file directly.

What Transfers

DataTransfersNotes
NamesYesFirst, last, middle, prefix, suffix
Phone numbersYesWith type labels (home, work, mobile)
Email addressesYesWith type labels
Physical addressesYesFormatted addresses
BirthdaysYesStandard vCard field
NotesYesStandard vCard field
Contact photosPartialMay need re-download from Google
Custom fieldsPartialNon-standard Google fields may not transfer
Groups/labelsPartialImported as categories in VCF
Linked profilesNoGoogle-specific feature

Cost Comparison

Google ContactsSelf-Hosted
Personal use$0 (data monetization)$0
Google Workspace (10 users)$720/year$0-60/year (VPS share)
PrivacyGoogle processes your dataFull control
Data portabilityManual VCF exportStandard VCF/CardDAV
Offline accessLimitedFull (synced to device)

What You Give Up

  • Auto-created contacts from Gmail — Google automatically adds people you email to your contacts. Self-hosted CardDAV does not do this.
  • Automatic duplicate merging — Google detects and merges duplicate contacts. Nextcloud has manual merge; Radicale and Baikal do not.
  • Google Search integration — Searching for a contact’s name in Google Search shows their information inline. Not available with self-hosted contacts.
  • Cross-service integration — Google Contacts integrates with Gmail, Calendar, Maps, and Hangouts/Meet. Self-hosted contacts integrate with CalDAV calendars but not with proprietary services.
  • Contact enrichment — Google enhances contacts with profile photos, employer info, and social links from Google profiles. Self-hosted contacts store only what you add.

For most people, the trade-offs are minor. You export your contacts once, import them into your CardDAV server, set up DAVx5 on Android or native CardDAV on iOS, and daily usage feels identical.