Radicale and iCloud Calendar do not sync with each other natively: an iPhone or Mac can add Radicale as a separate CalDAV account, but its events never enter iCloud. Keeper.sh, a calendar sync service, copies Radicale events into an iCloud calendar as busy blocks and keeps the copies current, so they appear on every device and app signed in to that Apple Account.
Add Radicale to an iPhone as a CalDAV account
The native route is to add Radicale to the iPhone as its own calendar account, next to iCloud. On iOS 27, open Settings, go to Apps, then Calendar, then Calendar Accounts, tap Add Account and choose the CalDAV option, then enter your Radicale address, username and password (Apple iPhone User Guide, checked 29 October 2026). The Mac Calendar app offers the same kind of account in its own settings.
Serve Radicale over HTTPS before you add it. The Radicale v3 documentation warns that some clients, notably the Mac Calendar app, may silently refuse to send account credentials over plain HTTP (Radicale v3 documentation).
The Radicale calendar lives in a separate account on that one device. Its events never reach iCloud.com, other Apple devices you have not set up the same way, or any app or service that reads your iCloud calendar, such as a scheduling tool connected to iCloud. Each device needs its own Radicale account, and every one of them needs to reach your server. Keeper.sh gets Radicale events into iCloud itself by writing copies into an iCloud calendar. What is calendar sync explains how a separate account differs from a copy.
Prepare Radicale before connecting it
A Radicale server needs working sign-in, a known collection path and a public HTTPS address before Keeper.sh can read it.
- Address. Radicale listens on
localhost:5232by default, which only the machine running it can reach. - Sign-in. Since Radicale 3.5.0 the default authentication type is
denyall, which rejects every sign-in. Configure thehtpasswdbackend, or another backend, and create a user before connecting anything. - Collections. Clients that discover calendars automatically only show collections that sit directly under
/USERNAME/, so each calendar should live at a path such as/USERNAME/personal/.
All three are documented in the Radicale v3 configuration reference (checked 29 October 2026), which also gives reverse proxy examples for nginx, Caddy and Apache.
Keeper.sh connects to your server from the internet, not from inside your network. Radicale must therefore be reachable at a public HTTPS address, normally a domain name pointing at a reverse proxy in front of port 5232. Addresses such as localhost, 192.168.1.20 or radicale.local cannot be reached and will not connect.
These server requirements are shared with other CalDAV servers, as covered in CalDAV servers and calendar sync tools compared.
Connect Radicale and iCloud in Keeper.sh
Keeper.sh is a calendar sync service that copies events between Radicale and iCloud, and between Google Calendar, Outlook, Fastmail and any other CalDAV server as well. Each copy is a busy block named after the source calendar. The title, description and location are hidden by default, Pro can turn them back on per calendar, and guest lists are never copied. Each connection runs one way, so two-way sync is two connections; the calendar sync features page lists what else each connection can do. The Free plan covers 2 calendar accounts and 3 connections, with changes landing every 30 minutes. Pro is $5 a month or $45 a year, with Google and Outlook changes landing within seconds and iCloud, Fastmail and CalDAV changes landing every minute (pricing).
Radicale connects as a generic CalDAV server and iCloud connects with an Apple app-specific password. Both start from Add a calendar in the Keeper.sh dashboard.
For Radicale, choose Connect a CalDAV server. The form has three fields:
- CalDAV Server URL: your public Radicale address, such as
https://radicale.example.com. - CalDAV Server Username: the user you created in Radicale's
htpasswdfile. - CalDAV Server Password: that user's password.
Keeper.sh discovers the calendars at that address and imports every one it finds. Radicale counts as one account however many collections it holds. If the plain address finds nothing, enter your user collection instead, such as https://radicale.example.com/USERNAME/, with the trailing slash. The setup matches the steps for connecting Nextcloud as a CalDAV server, apart from the address. Keeper.sh also completes digest sign-in for calendar servers that ask for it, so servers that once rejected correct credentials now connect.
For iCloud, create an app-specific password first. Sign in at account.apple.com, open Sign-In and Security, choose App-Specific Passwords and generate one. Two-factor authentication must be on for that option to appear (Apple Support, checked 29 October 2026). Then choose Connect iCloud, and enter your Apple ID and the App-Specific Password. No server address is needed.
Choose the sync direction and event details
After both accounts are connected, a short setup flow asks which calendars to configure.
For each calendar it asks two questions:
- Where should 'Personal' send events? Tick an iCloud calendar to copy Radicale events into iCloud.
- Where should 'Personal' pull events from? Tick an iCloud calendar to copy its events back into Radicale.
Ticking both creates both connections. You can change the routing later on the calendar's page under Send Events to Calendars.
Three switches on the calendar's page, Sync Event Name, Sync Event Description and Sync Event Location, bring the title, description and location across. They start off and are a Pro feature; on Free the dashboard shows Advanced sync settings are a Pro feature. in their place. Video call links and reminders stay behind too. The full list of fields is in what a copied event shows.
Keeper.sh copies events from one month back to two years ahead by default, and Pro can change the range, as described in how far events are copied.
Free plan limits
Radicale is one account and iCloud is the other. A two-way pair uses 2 accounts and 2 connections, which fits the Free plan with one connection spare. Adding a third provider, such as a work Google or Outlook calendar, needs a third account, which Free does not include.
Pro removes the account and connection limits and adds the faster timing and the event detail switches described above. Both plans are compared in plans and limits, and you can create a free account to start.
Other sync services are compared in the best calendar sync tools.
Fix Radicale connection errors
The connect form shows one of these messages.
- That username or password didn't work. Radicale was reached and refused the sign-in. Check that authentication is not still set to
denyall, and that the username and password match an entry in thehtpasswdfile. - Apple needs an app-specific password here, not your Apple password. This is the iCloud form's version of the same refusal: the normal Apple Account password was used, or the app-specific password was revoked.
- Couldn't find calendars on this server. Check the details and try again. Keeper.sh got no usable CalDAV answer from the address, so the credentials were never checked. Check the address for typos, confirm Radicale is running behind its reverse proxy, and confirm the address is a public HTTPS one rather than a local or private address.
- No calendars found. The sign-in worked but nothing was found at that address. Enter the user collection path,
https://radicale.example.com/USERNAME/with the trailing slash, and make sure your calendars sit directly under it.
Keeper.sh skips a repeating series with more than 10,000 occurrences inside the sync window, such as an event that repeats every hour with no end date. The rest of the calendar keeps syncing. End the series or make it repeat less often, and it syncs.
To cut access off, revoke the app-specific password on Apple's App-Specific Passwords page, or open the account under Calendar sources in Keeper.sh and choose Delete Account.
Common questions about syncing Radicale with iCloud
Does Radicale sync with iCloud Calendar on its own?
No. An iPhone or Mac can add Radicale as a separate CalDAV account, but Radicale events never enter iCloud, so iCloud.com and apps that read your iCloud calendar do not see them.
Is syncing Radicale with iCloud free?
Yes. Keeper.sh's Free plan covers 2 calendar accounts and 3 connections, so Radicale and iCloud can copy events to each other in both directions at no cost, with changes landing every 30 minutes.
Can Keeper.sh connect to a Radicale server on my home network?
No, not at a local address. Keeper.sh connects from the internet, so Radicale needs a public HTTPS address, usually a domain name pointing at a reverse proxy in front of port 5232.
Why does my Radicale server refuse every sign-in?
Since Radicale 3.5.0 the default authentication type is denyall, which rejects every sign-in. Configure the htpasswd backend or another backend and create a user first.
Why is one repeating Radicale event missing from iCloud?
Keeper.sh skips a repeating series with more than 10,000 occurrences inside the sync window, such as an event that repeats every hour with no end date. The rest of the calendar keeps syncing, and the series copies once it ends sooner or repeats less often.