Free up to 200 items

Move your contacts and calendars to another account

CardDAV and CalDAV, server to server. Nothing is ever overwritten at the destination.

Before you start: this tool speaks CardDAV and CalDAV with a username and a password. That covers Nextcloud, BaΓ―kal, Radicale, SOGo, Zimbra, Fastmail, mailbox.org, Infomaniak, Zoho and most European hosting providers β€” and iCloud, with an app-specific password.

Google is not supported: it requires OAuth for CardDAV/CalDAV, and an app password does not work there. Microsoft 365 and Outlook.com are not supported either: they expose no CardDAV or CalDAV service at all.

The account to copy from

https only. We look for the CardDAV/CalDAV service at that address on our own.

The server isn't detected? Enter the addresses yourself

Optional. Paste the exact address of an address book or a calendar β€” most clients show it in their account settings.

The account to copy to

https only. We look for the CardDAV/CalDAV service at that address on our own.

The server isn't detected? Enter the addresses yourself

Optional. Paste the exact address of an address book or a calendar β€” most clients show it in their account settings.

What to transfer

Credentials encrypted (libsodium) for the duration of the operation, erased as soon as it ends. Nothing is ever deleted or overwritten at the destination.

Nothing is ever overwritten at the destination
Credentials erased as soon as the transfer ends
Hosted in France

How it works

  1. Enter your two accounts β€” the https address of the server, the username and the password on each side. With most providers you need an app password, not your everyday password.
  2. MailSync finds the service on its own β€” first at the address you gave, then at the standard location /.well-known/carddav (or /.well-known/caldav), and finally by walking up to the list of your address books and calendars.
  3. The inventory happens before a single write β€” we list what exists at the source, and above all the unique identifiers (UIDs) already present at the destination.
  4. Only what is missing gets copied β€” a contact or an event whose UID is already there is skipped, never replaced.
  5. You get a report with real numbers β€” copied, duplicates skipped, items without an identifier, failures. Nothing vague.

Two locks against overwriting, not one. The first is the inventory of destination UIDs. The second is technical: every write carries an If-None-Match: * header, which asks the server to refuse if the resource already exists. Even if the inventory had missed something β€” an address book edited during the operation, say β€” the server itself will replace nothing.

The content is not touched up. Every vCard and every event is passed on exactly as it was received. We read one single line in it, the UID. A contact photo, a custom field, an exotic recurrence rule, an event attachment: everything goes through intact, because nothing is rewritten.

Use cases

  • Leaving one provider for another β€” your emails follow with the mailbox transfer, your contacts and calendars follow with this one.
  • Bringing iCloud home to a Nextcloud β€” or the other way round: both speak CardDAV and CalDAV, and an app-specific password is enough on the iCloud side.
  • Merging two accounts into one β€” after an address change, gathering into a single address book what used to live in two, without creating duplicates.
  • Keeping a copy on a second server β€” re-runnable as often as you like: what is already there is never copied again.
  • Checking a migration done elsewhere β€” running the transfer afterwards copies only what was genuinely missing, and the report puts a number on it.

What the tool does not do / limits

  • Google is not supported. Its CardDAV/CalDAV access requires OAuth; Google app passwords only cover IMAP and SMTP. For now, the manual export/import through Google Contacts and Google Calendar remains the way to go.
  • Microsoft 365 and Outlook.com are not either. They expose no CardDAV or CalDAV service at all: it is not an authentication problem, the protocol simply does not exist on their side.
  • One destination collection per type. All contacts land in the first address book of the destination account, all events in its first calendar. To target another one, paste its exact address in the collapsible block of the form. We prefer that predictable behaviour to an automatic matching between address books, which would be guesswork.
  • The copy goes one way. Nothing is sent back to the source, nothing there is modified or deleted: it is read, and that is all.
  • Items without a UID are left aside and counted separately. Without an identifier, every re-run would add another copy.
  • Only https is accepted, and the address must be that of a server reachable from the public Internet: a local network address is refused, as is an address containing credentials.
  • Free up to 200 items written, contacts and events combined β€” the same threshold for everyone. Beyond that the transfer stops and tells you so; just run it again, or lift the cap with a subscription.

Frequently asked questions

Which servers are supported? +

Any CardDAV (RFC 6352) and CalDAV (RFC 4791) server reachable over https with a username and a password: Nextcloud, ownCloud, BaΓ―kal, Radicale, SOGo, Zimbra, Fastmail, mailbox.org, Infomaniak, Zoho, and the shared hosting of most European providers. iCloud works too, with an app-specific password.

Why aren't Google and Microsoft 365 supported? +

Two different cases, and neither can be worked around with a password. Google has closed password-based CardDAV/CalDAV access: only OAuth works, and an app password won't do (it only covers IMAP and SMTP). Microsoft 365 and Outlook.com simply expose no CardDAV or CalDAV service at all β€” their contacts and calendars go through an interface of their own. We would rather write it here than let you find out by failing.

Can anything be overwritten at the destination? +

Never. Every contact and every event carries a unique identifier (UID). Before writing, we take an inventory of the UIDs already present in the destination address book or calendar: any item whose UID is already there is skipped. And every write is sent with an instruction forbidding the server to replace an existing resource β€” if it is there anyway, the server refuses and we count one more duplicate.

Where do copied items land? +

All contacts land in the first address book of the destination account, and all events in its first calendar. That is predictable and verifiable. If you want to target a specific address book or calendar, open "The server isn't detected?" under the destination account and paste its exact address.

What happens if I run the transfer again? +

Nothing bad: items already copied are recognised by their UID and skipped. That is also what lets you pick up where you left off after hitting the free threshold of 200 items.

Is an item without a UID copied? +

No. Without a unique identifier we could not recognise a duplicate: every re-run would add another copy to your address book. Those items are left aside and counted separately in the report. It is rare: the vCard standard has required a UID since version 4.0, and virtually every server generates one.

Is the content of my contacts altered along the way? +

No. Every contact and every event is sent on exactly as the origin server handed it to us, byte for byte. We read one single thing in it: the UID. Photos, custom fields, event attachments, software-specific properties β€” everything goes through intact.

How far is the tool free? +

200 items written, contacts and events combined. The same threshold for everyone. Beyond that the transfer stops and tells you so; a Premium subscription lifts the cap, and you can also run it several times β€” items already copied do not count twice.

Are my passwords kept? +

They are encrypted (libsodium) for the duration of the operation, then erased as soon as it ends. They are only decrypted by the process running the transfer, never displayed, never copied into the log or into an error message.

Related tools