← Back to Kessen
Privacy Policy
Last updated: October 2026
Kessen is a personal anime ranking tool. This page explains what data is stored when you use it, and how to have it removed.
What we store
Kessen stores the following data, and nothing else:
- Your rankings and battle history — your ELO scores, wins/losses, and battle history for each anime you have ranked, plus your daily streak and weekly battle counts.
- Your account identifier — your numeric AniList user ID or MyAnimeList user ID, used as a storage key to link your rankings to your account. We do not store your email address, password, or any personal information beyond this ID.
- Your display name and avatar URL — fetched from AniList or MyAnimeList at login and stored locally in your browser to display your profile badge. Your username (never your avatar) is shown to others in a share link you create while signed in and sharing your own list (see Deleting your data). Your username is also shown to the other players in Watch Together and Live Challenge sessions (see Multiplayer).
- Your notification list — the alerts shown under the bell icon (for example "you finished X — battle it in the Tower?"), so they stay in sync across your devices.
- Push notification data — only if you turn notifications on. See the section below.
Kessen does not count which features you use. It kept such counts until October 2026; they are deleted from your device the next time you open Kessen, and are being removed from cloud saves.
Where it's stored
- In your browser — your session data (rankings, battle history) is saved to
localStorage on your device. Clearing your browser data removes it.
- In Netlify Blob Storage — if you are logged in via AniList or MAL OAuth, your own list (its rankings and battle history) is also backed up to Netlify's hosted blob storage, keyed by your account ID. If you are signed in to both, the AniList list is the one backed up. A guest list, or a list you opened by typing a username, stays on your device. This enables your rankings to sync across devices. If you turn on push notifications, the data described in the Push notifications section below is stored here too. Netlify's privacy policy applies to this storage: netlify.com/privacy.
- In Google Firebase Realtime Database — for two things: keeping your notification list in sync between your devices while you are logged in, and coordinating multiplayer sessions (Watch Together or Live Challenge) when you actively start or join one. See the sections below for what is stored and for how long.
Push notifications
Notifications are off by default. If you turn them on (bell icon → push settings), Kessen stores the following in Netlify Blob Storage so that it can deliver them:
- Your browser's push subscription — the endpoint address and encryption keys your browser generates for receiving notifications, one per device, with the time each device was added and last registered. Kessen stopped storing your browser's identifier string in October 2026, and removes any stored before then.
- Which notification types you have enabled.
- For "Tower retry" notifications only (AniList accounts): this type now starts off. When you tick it, Kessen first tells you that it will keep your AniList sign-in on our server and asks you to confirm. Until October 2026 it was switched on by default when you turned on notifications with an AniList account; if you did that and have not unticked it since, untick Tower retry prompts to delete the stored sign-in. To notice when you finish an anime while Kessen is closed, our server checks your AniList list about every 3 hours. To do that it needs to act on your behalf, so we store your AniList access token on our server for as long as this notification type is switched on. We also keep the list of AniList IDs of anime you have already been notified about, so you are not notified twice. The token is used only to read your anime list; it is never logged or shared.
Notifications are used only for Tower retry prompts. If Tower retry is off, nothing is sent, but this device's sign-up is kept until you turn notifications off or use Delete all my data. Turning off "Tower retry" deletes the stored token and completion list immediately. Turning off notifications on your last device deletes the whole push record. If every device stops accepting notifications (for example, the app was uninstalled), Kessen turns Tower retry off and deletes the stored AniList token when it next finds out. This data is also removed by Delete all my data.
Multiplayer (Firebase) data
Kessen's multiplayer features (Watch Together and Live Challenge) use Google's Firebase Realtime Database to coordinate state between players. Session data is only written when you actively start or join a multiplayer session. Outside of multiplayer, the only other thing Firebase is used for is syncing your notification list between your devices (see What we store); it is not used for solo battling or profile viewing.
When you create or join a session, the following is written to Firebase:
- Your name in the session: your AniList or MyAnimeList username if you are signed in, otherwise a label such as "Guest 2". Live Challenge needs you to be signed in.
- A randomly-generated player ID for that session.
- For Watch Together: the list of anime each player nominates, the matchups generated from those nominations, and each player's votes per matchup.
- For Live Challenge: the list of AniList or MyAnimeList IDs of anime you have watched (used to find matchups you've both seen), the matchups, your picks, and your predictions of your opponent's picks. This is only stored while the session is active.
If you open a Live Challenge link while signed out, or enter a code in Live Challenge and then tap a login button, Kessen keeps the code in this browser tab while you log in, so that Live Challenge can reopen with it. It is not used after 10 minutes, and is removed when you close Live Challenge, log out or close the tab. It is not sent anywhere.
Data is retained for the duration of the session and is removed when the session ends or expires. We do not store transcripts of completed games on Firebase. Firebase's privacy policy applies to this storage: firebase.google.com/support/privacy.
Authentication tokens
OAuth access tokens from AniList and MyAnimeList are stored in your browser's localStorage. They are sent to our Netlify Functions to verify your identity when reading or writing your saved rankings, and when you create a share link (to look up the username it shows), and are not retained by those functions. The one exception is described above under Push notifications: if you turn on "Tower retry" notifications, your AniList token is stored on our server so that we can check your list while the app is closed, and is deleted as soon as you turn that notification type off. Tokens are never logged or shared.
What we don't do
- We do not sell or share your data with third parties.
- We do not use third-party analytics, advertising trackers, or cookies, and we do not count which features you use.
- We do not store your watch history or scores from AniList or MyAnimeList — only the ELO rankings you build within Kessen. The one exception is the "already notified" list of completed-anime IDs kept for Tower-retry notifications, described above, which exists solely to avoid sending you the same notification twice.
Third-party services
Kessen connects to the following external services, each with their own privacy policies:
- AniList — for login, fetching your anime list, and metadata.
- MyAnimeList — for login and fetching your anime list.
- Netlify — for hosting, cloud save storage, and push notification delivery.
- Google Firebase — for notification-list sync and multiplayer sessions.
Deleting your data
The easiest way to delete your data is directly from within the app. Open your rankings, go to the Manage tab, scroll to the Danger Zone, and press Delete all my data. If you are signed in with AniList or MyAnimeList, this immediately deletes, for that account:
- Your cloud save: everything Kessen backed up for the account in Netlify Blob Storage, including your rankings and battle history.
- Your push notification record: the push subscriptions we hold for all your devices, your notification choices and, if "Tower retry" was on, the stored AniList access token and the list of completed anime kept for it. This device's push subscription is cancelled as well.
- Your invite records: until October 2026 Kessen could send Watch Together and Live Challenge invites as push notifications, and our server kept a small record of each in Netlify Blob Storage (the sender's and receiver's account IDs, the session code and the time). Kessen no longer sends invites; records of earlier ones are kept until either account uses Delete all my data.
- Your Firebase records: the synced notification list and the small sync record Kessen keeps for the account (when it was last saved, a random ID for the device that saved it, and its battle count).
- Kessen's data on this device: rankings, settings, notification list and sign-in, including any other lists ranked on this device. You are logged out.
If you are signed in with both AniList and MyAnimeList, all of this is deleted for both accounts.
Your other devices. Log out of Kessen on your other devices before you delete. A device that still has your list open stays signed in and can upload its copy again (for example after another battle, or when it is closed or reloaded), which puts your rankings, sync record and notification list back. If that happens, log out there and press Delete all my data again. A device that was logged out or closed deletes its copy of your rankings the next time it opens your list while signed in. It keeps its own settings and notification list, and can sync that list back while signed in, until you use Delete all my data on it too.
Afterwards Kessen keeps a note of when the deletion happened, in cloud storage under your account ID and on this device, so that your devices can tell the data was deleted on purpose. The note contains no rankings.
If you are not signed in (for example as a guest), Delete all my data clears this device only. To delete an account's cloud save, push record and Firebase records, sign in with that account first.
Delete all my data does not remove:
- Share links. When you tap Create link in Share, Kessen saves your Top 10 as a public link that anyone with it can view: the anime's AniList and MyAnimeList IDs, ranks, ELO scores and tiers, your battle count, and your AniList or MyAnimeList username if you are signed in and sharing your own list. The page looks up titles and covers from AniList when it is opened. A link stops working 12 months after it was made (a copy cached by our host can last up to an hour longer). Kessen stopped saving the name, titles and cover addresses shown on a link in October 2026. Links made before then still hold them, but they are no longer shown. Share links are not linked to your account, so the app cannot find them to delete them. To have one removed sooner, email feedback@kessen.co.uk with the link.
- Watch Together and Live Challenge sessions. These are stored in Firebase under the session's code, not your account. To have one removed, email us with the session code.
- Things your browser keeps for the app: Kessen's offline copy, cached cover images, the anonymous sign-in Firebase uses to connect (an anonymous Firebase account with no name or email), and, until you close the tab, the code and name of a Watch Together session you are in. Clear Kessen's site data in your browser, or the app's storage on Android, to remove these from your device.
If you are unable to access the app, email feedback@kessen.co.uk with your AniList or MyAnimeList username and we will remove your cloud data within 7 days. Please note that any data remaining on your device (such as in your browser or the installed app) will need to be cleared manually by clearing your browser or app data on your device.
Changes to this policy
If this policy changes in a meaningful way, a notice will be posted on the site. The date at the top of this page will always reflect the most recent update.