Privacy policy

Your calendar stays with you. This is what leaves, and in what form.

Last updated 5 October 2026

OpenCalendar has no server that keeps a calendar, works out availability or takes a booking, and it needs no account. Some things do leave your browser so that scheduling can work, and there is an optional account that holds nothing of your calendar. This page lists each of them, who can read it, and how to remove it.

Who we are

“We” and “us” on this page mean the operator of this website, of the relay the app uses by default, of the helper and of the account server described below. The app is open source, so what it does can be checked against its code.

The short version of what we hold about you: nothing that says what is in your calendar, and nothing that says who you are unless you sign in to the optional account. We operate a relay that stores encrypted records it cannot read, a helper that passes two kinds of request through without keeping them, a web server with ordinary access logs, and the account server our apps share, which you never have to use.

What stays in your browser

The app at opencalendar.me/app is a set of static files. Once loaded it runs in your browser, and it keeps the following in that browser’s own storage on your device. None of it is sent to us.

Because all of this lives in one browser, clearing this site’s data deletes it, and we cannot recover it. We never had a copy.

What is left on the relay

A scheduling link has to work while your devices are switched off, so the app leaves a small number of records on a relay: a server that stores and forwards signed, encrypted records. By default this is wss://relay.opensync.network/, which we operate. You can point the app at a relay you run instead, in Settings.

Everything the app leaves there is encrypted in your browser first. The relay holds no key that opens any of it.

RecordWhat is insideWho can read it
Scheduling pageThe link’s title and description, the name you show, the lengths and hours you offer, your time zone, your questions, your meeting-room linkAnyone holding the link. The key is in the link, after the #, which browsers do not send to a server
Busy timesThe start and end of the times you are busy inside the booking window, rounded to the slot size. No titles, attendees or locationsAnyone holding the link
Claim on a slotA marker that one slot of one link is takenAnyone holding the link. To everyone else it is an opaque tag from a one-day key
Booking request and replyThe guest’s name, email address, answers and note, the time, and the host’s answerOnly the host and that guest
Shared calendarThe events of a calendar you chose to share, and its list of membersOnly the members you added, each at the level you gave them
Meeting poll and votesThe proposed times, and each voter’s name, answers and noteAnyone holding the poll’s link

What the relay, and so we, can see: that encrypted records exist, how large they are and when they arrived; the public key that signed a record (a scheduling page and its busy times are signed by the host’s public key; claims and booking messages by keys made for one day or one message); how many sealed messages are addressed to a given public key; and the network address of each connection, which the relay uses to limit how fast one address may write.

What it cannot see: your events, who booked, for when, what anyone typed, or which link or slot a claim belongs to.

Reading from the relay needs no sign-in. Anyone can fetch the encrypted records, and so anyone can count the sealed messages left for a public key; they cannot open them.

What the helper passes through

A web page cannot do two things on its own, and for those the app calls a small helper that we operate. The helper has no database and writes no file. It does not log the address, the token or the content of a request. A request comes in, one request goes out, and the answer is handed back.

The helper is open source and you can run your own; the documentation says how. Microsoft sign-in does not use the helper.

The account, only if you sign in

Every part of OpenCalendar works without an account, and signing in unlocks nothing in it today. The account exists so that one sign-in, and one balance of credits, work across our apps; the apps with paid features spend credits, and OpenCalendar has none. It is reached from the round button at the top right of the app, and from nowhere else: a booking page, a status page and a poll never show it and never contact the account server.

If you sign in, our account server, reached at auth.opencalendar.me, stores:

What it is never sent by OpenCalendar: your calendars, events, attachments, scheduling links, busy times, bookings, polls or shared calendars, your guests’ details, or the key in Settings. The app does not tell the account server which key is yours, and the relay’s records are not filed under your account.

One overlap is yours to choose. The account can be signed in to with a Nostr key, and OpenWallet ID hands over a Nostr public key if you share one there. If that is the key people book you with, the account server then holds that public key beside the account. To keep the two apart, sign in to the account another way.

Leaving. Sign out on the account page at any time. “Delete account…” on the same page deletes the account and everything the account server holds with it; credits left in it are lost. Signing out or deleting the account changes nothing about your calendars, which were never part of it.

Payments

Nothing in OpenCalendar costs money or credits. The account page lets you buy credits for our other apps, through the payment provider you choose: a card payment is taken on the payment provider’s own page, and a payment in cryptocurrency is sent by you to an address shown to you. We never see or store card numbers. The account server keeps a record of each purchase: the amount, the method and when.

Google user data

Not switched on yet. Connecting a Google account is built and is waiting for Google’s review of the app. This section describes what happens once it is available.

Connecting a Google account is optional. If you connect one, the app asks Google for two permissions:

PermissionWhat it lets the app do
calendar.calendarlist.readonlyList your calendars, so you can choose which to show and which count as busy
calendar.eventsRead the events on those calendars; create, change and delete the events for bookings made through your links

What is read, and how it is used

Where it is stored

In your browser’s storage, on your device, together with the tokens that let the app keep reading. Google calendar data is not sent to, or stored on, any server of ours.

Who it is shared with

How to delete it

OpenCalendar's use of information received from Google APIs will adhere to Google API Services User Data Policy, including the Limited Use requirements.

Microsoft account data

Not switched on yet. Connecting a Microsoft account is built and is waiting for the app’s registration with Microsoft to be completed. This section describes what happens once it is available.

Connecting a Microsoft account (Outlook, Microsoft 365) is optional. The app asks for one delegated permission, Calendars.ReadWrite, and the sign-in happens directly between your browser and Microsoft; the helper is not involved.

If you book a time with someone

You do not need an account to book, and a booking page never asks you to sign in to one. When you book through someone’s link:

Voting in a meeting poll works the same way: the name and answers you give are encrypted with the poll’s link and can be read by the people who hold that link.

Third parties

We do not sell, rent or share personal data, and there is no advertising. The outside services involved are the ones you choose to use:

What this website logs

The web server that sends you these pages and the app’s files keeps ordinary access logs — the requested path, a timestamp, your browser’s user-agent string and your IP address — for up to 90 days, to keep the server running and to spot abuse. They are not used to build a profile of you, are not combined with anything else, and are not shared. The part of a scheduling link that names the host and holds its key comes after the # and is never sent to this server, so it is not in those logs.

This site sets no cookies and runs no analytics or advertising scripts. The app has no analytics, telemetry or crash reporting. The account server and the helper are reached at their own hostnames on this domain and are covered by the sections about them above.

Keeping and deleting

Because records on the relay are encrypted and are not filed under your name, we cannot find “your” records for you. They leave by expiring, as set out above.

Security

Connections to this site, the relay, the helper and the account server use TLS. Records are encrypted in your browser before they are sent, with keys that stay in your browser or in the links you hand out. The limits of this design are stated openly in the documentation — for example, that anyone you give a link to can read its busy times, and that your key is only as safe as the browser profile it is stored in until you export it under a password.

There is no address for security reports yet. The support page will show one when there is.

Children

OpenCalendar is not directed at children and does not knowingly collect personal information from them.

Changes

If this policy changes, the date at the top of the page changes with it.

Contact

There is no contact address for this policy yet; when there is one it will be shown here and on the support page. Until then, everything this policy describes can be removed without writing to us, as set out under Keeping and deleting.