Radicale
Simple, lightweight CalDAV and CardDAV server
Radicale is a small, easy-to-run CalDAV and CardDAV server that stores calendars and contacts as plain files. It is ideal for individuals and small groups wanting to sync schedules and address books.
Key features
- Plain-file calendar and contact storage
- Very low resource usage
- CalDAV and CardDAV support
- Simple authentication options
Pros & cons
Strengths
- Extremely easy to deploy
- No database needed
Trade-offs
- No web calendar UI
- Minimal feature set
Radicale replaces
Last reviewed Sep 13, 2026 · 764 words
Radicale is a 64 MB Python process that stores every calendar event as an .ics file and every contact as a .vcf file in a plain directory, speaks CalDAV and CardDAV to any standards-compliant client, and does nothing else. No database, no web calendar, no mail, no sharing UI. If you want to stop syncing your calendar and address book through Google or iCloud and you already have a client you like (Thunderbird, Apple Calendar, DAVx5 on Android), it is the smallest possible server that solves the problem, and the one I run for my own household. If you want a browser calendar, invitations, or shared team calendars with a UI, it is the wrong tool; go straight to Nextcloud.
The whole configuration is 6 lines
[server]
hosts = 0.0.0.0:5232
[auth]
type = htpasswd
htpasswd_filename = /etc/radicale/users
htpasswd_encryption = bcrypt
[storage]
filesystem_folder = /var/lib/radicale/collections
Install with pip install radicale, create the users file with htpasswd -B -c /etc/radicale/users alice, start it under systemd or Docker, and put a reverse proxy with TLS in front on port 5232. By default Radicale listens on localhost only, which is why the hosts line exists. The bcrypt option is the one to use; the older md5 and plain modes still work for compatibility and should not be chosen for anything reachable from the internet.
Access rules default to "owner only": each user sees only collections under their own name. A short rights file grants a shared family calendar to two accounts, which is the most common reason anyone touches it.
There is no calendar UI, but there is a tiny web page
Radicale serves a minimal HTML page at the root that logs in, lists your collections, and lets you create or delete a calendar or address book and upload an existing .ics file. That is the extent of it. All actual use happens in clients. This is the point that determines whether Radicale suits you: if you view your calendar in a browser today, you will need a client app after switching, and Thunderbird on the desktop is the honest recommendation. If you already live in Apple Calendar or an Android calendar app, nothing about your daily routine changes except the account settings.
Clients that work, and the one trap on Android
macOS and iOS support CalDAV and CardDAV natively; add the account under Internet Accounts and point it at your URL. Thunderbird handles both with the built-in calendar. Android has no native CalDAV; install DAVx5, which registers your Radicale account as a system account so the stock calendar and contacts apps use it. The trap: DAVx5 needs the base URL with your username, https://dav.example.com/alice/, and will discover collections from there. Give it the bare host and it finds nothing, which produces most of the "Radicale does not work" forum posts. Windows has no good native client; Thunderbird or the web-free route through Outlook add-ons is where people end up, and that is a reason some Windows-heavy households choose Nextcloud instead.
Files on disk are the backup story and the migration story
Because storage is a directory of small text files, a backup is tar or restic on that folder, and a migration to another server is a copy. Exporting from Google Calendar (.ics) and Google Contacts (.vcf) and uploading through the web page or the client moves years of data in a minute. Radicale can also keep a Git history of the collections directory with a one-line hook setting, which gives you an undo for the day a client decides to delete 400 contacts during a bad sync. I turn that on everywhere.
Multi-user works, but Radicale is written for individuals and small groups. Twenty users are fine; a company with delegation, room booking and free/busy lookups across departments wants a real groupware suite.
What I'd do
For one person or one family: Radicale in a container with the config above, bcrypt htpasswd, the Git hook enabled, behind Caddy on a subdomain, reachable over Tailscale or the public internet with strong passwords. Thunderbird on desktops, DAVx5 on Android, native accounts on Apple devices. Total resource cost is smaller than the reverse proxy in front of it. If anyone in the group needs a browser calendar or sends meeting invitations, do not fight Radicale into it; Nextcloud's calendar and contacts apps do those things and cost 1 GB of RAM instead of 64 MB, which is still cheap.
Compare Radicale
3 head-to-head comparisons.
Similar groupware apps
Rallly
GroupwareSelf-hosted meeting and event scheduling polls
Replaces Doodle, When2meet
Colanode
GroupwareCollaboration suite with real-time messaging, rich text pages, file
Easy!Appointments
GroupwareOpen-source web appointment scheduler
Replaces Calendly, Acuity Scheduling
Baïkal
GroupwareLightweight CalDAV and CardDAV server with web admin
Replaces Google Calendar, iCloud
SOGo
GroupwareScalable groupware server with webmail, calendar and contacts
Replaces Microsoft Exchange, Microsoft 365
ZenTao
GroupwareOpen-source project and team collaboration platform
Replaces Jira, Confluence