DEV Community

selfhosting.sh
selfhosting.sh

Posted on • Originally published at selfhosting.sh

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

Feature Google Contacts Radicale Baikal Nextcloud
Web UI for contacts Yes No Admin only Yes
CardDAV sync Yes Yes Yes Yes
Contact groups Yes Yes (categories) Yes Yes
Contact photos Yes Yes (in VCF) Yes (in VCF) Yes
Merge duplicates Yes (automatic) No No Yes (manual)
Auto-create from email Yes No No No
Shared address books Via Google Workspace Via ACL Via admin Yes
Search Full-text Client-side Client-side Full-text
Offline access Limited Full Full Full
RAM usage N/A ~20 MB ~40 MB 512 MB+
Privacy Google processes data Full control Full control Full 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

Data Transfers Notes
Names Yes First, last, middle, prefix, suffix
Phone numbers Yes With type labels (home, work, mobile)
Email addresses Yes With type labels
Physical addresses Yes Formatted addresses
Birthdays Yes Standard vCard field
Notes Yes Standard vCard field
Contact photos Partial May need re-download from Google
Custom fields Partial Non-standard Google fields may not transfer
Groups/labels Partial Imported as categories in VCF
Linked profiles No Google-specific feature

Cost Comparison

Google Contacts Self-Hosted
Personal use $0 (data monetization) $0
Google Workspace (10 users) $720/year $0-60/year (VPS share)
Privacy Google processes your data Full control
Data portability Manual VCF export Standard VCF/CardDAV
Offline access Limited Full (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.

FAQ

Will my contacts sync automatically to my iPhone after switching?

Yes. iOS natively supports CardDAV — add your server in Settings → Contacts → Accounts → Other → Add CardDAV Account. Enter your server URL, username, and password. Contacts sync automatically in the background, just like Google Contacts. New contacts created on your phone appear on the server and vice versa. The daily experience is identical to using Google Contacts.

Can I sync contacts to Android without Google Contacts?

Yes. Install DAVx5 (free on F-Droid, paid on Play Store). Add your CardDAV server URL and credentials. DAVx5 syncs your address book to Android's native contacts app. All apps that read contacts (phone dialer, messaging) see your CardDAV contacts. DAVx5 runs silently in the background and syncs on a configurable schedule.

Do contact photos transfer when migrating from Google Contacts?

Partially. Google's vCard export includes contact photos when they were manually added, but photos sourced from Google+ profiles or Gmail auto-discovery may not export. After importing, check your contacts and re-add missing photos. For large address books, this is the most tedious part of migration — but it's a one-time effort.

Can I share an address book with my partner or team?

Yes. Radicale supports shared address books through ACL (access control list) configuration. Baikal and Nextcloud have admin panels for sharing address books between users. Create a shared address book, grant access to specific users, and all changes sync to everyone. This is useful for family contacts, team directories, or shared customer lists.

How do I handle duplicate contacts after importing?

Nextcloud has a built-in duplicate detection tool in its Contacts app — it identifies potential duplicates by name and email and lets you merge them. Radicale and Baikal don't have duplicate detection; use a vCard editing tool (like the vdirsyncer utility or a desktop contact manager) to clean duplicates before importing. For large imports, run deduplication once and it's done.

Is there an equivalent to Google's auto-suggest for new contacts?

No. Self-hosted CardDAV servers store contacts you explicitly create — they don't auto-create contacts from email correspondence. If you want this behavior, configure your email client (Thunderbird, for example) to auto-add contacts from email senders. Alternatively, accept the trade-off: fewer contacts, but every contact is intentional and accurate.

Can I use both Google Contacts and self-hosted contacts simultaneously?

Yes. Most devices support multiple contact accounts. Keep your Google Contacts account active while adding your CardDAV server as an additional contact source. Contacts from both sources appear together in your phone's contact list. Use this approach during migration — run both for 30 days, verify everything syncs correctly, then remove the Google account.

Related

Top comments (0)