← circin.org

Privacy Policy

Last updated: October 13, 2026

The short version: Circin now has accounts, and an account means we hold some of your things on our side, including a backup of what the app has saved. Without one, what the app saves stays on your device; what Circin keeps is a counted view, a short count per network address that limits abuse, and whatever you choose to send.

This policy replaces an earlier one that said the app collected nothing. That was true of the first preview and is no longer true: Circin has real accounts, real publishing and real conversation, and those need a server. Everything below is what this version of Circin’s code stores, the version the date above belongs to. Where a sentence says “since this version”, it means since this version reached circin.org; what was made on Circin before then was handled by the older code. Older copies of circin.org that Cloudflare keeps at addresses of their own run the code they were built with, against the same storage as circin.org, so a request sent to one of those addresses is handled, and what it leaves is kept, by older rules than this page describes. A copy built from another branch of the code runs against whatever storage Cloudflare’s preview settings give it. Circin’s owner can delete these copies, apart from the newest copy of each branch, which Cloudflare keeps. A copy made from this version on answers Circin’s API and media only at www.circin.org; its pages and creator pages still answer at its own address, and those only read.

No accountSigned in
Your email addressOnly if you submit the launch list or hold a username. Neither is an account.Kept, with your username, display name and a salted hash of your password
A counted viewFor twenty-four hours, the video’s id with a salted one-way hash of the network address the view came from and another of a random id your device made up, both keyed by a secret on Circin’s server and by the videoFor twenty-four hours, the video’s id with a keyed hash of your account, made the same way
What the app has saved: settings, collections, drafts, likes, recent searches, video notesWhatever there is stays in your browser or on your phoneAlso in your backup, capped at one megabyte
Watch history, used for three daysNone while you browse as a guest; on your device for a profile that lives only thereAlso in your backup
Creators and topics you hid or blockedOn your deviceAlso in your backup. A block is kept on Circin so it holds on both sides.
Posts, comments, follows, ratingsNothing to storeKept on Circin, tied to your account
Daily time watched, parent PIN, birthday, a kid profileNever sentNever sent

Swipe the table →

SummaryBold is what Circin holds; a dash is what it never receives. Plain text stays on your device, except the first row, where it is an email address Circin holds only if you gave one. A summary of the sections below, not a replacement for them. The backup is the whole store rather than a chosen part, and a push subscription, if you turn notifications on, is not in this table — it is described in the next section. A counted view is sent once a video has been playing, or trying to play, for three seconds in the player or the lesson view, whether or not its file has loaded, or, in the feed, once it has been the current video, not paused, for three seconds in all, whether or not it started playing. In both, a pause holds the count rather than starting it again (Views says more). It carries the number three, the mark it has just passed; Circin checks that number and keeps it nowhere. How long you went on watching, and which part, are not sent, and the daily time in the last row stays on your device. One exception to the last row: if a parent asks for a PIN reset by email, the parent email on the kid profile is sent, with the one-time code the app made, so the code can be mailed to it. Circin does not store the address (the email service that sends the code keeps its own record: see Where it is held). To cap resets at five a day for each inbox, Circin keeps a tag of the inbox made with a server secret, which holds no part of the address, with the day and a count, for up to twenty-five hours. Whoever holds that secret could test a guessed address against the tag. Upper and lower case, a +tag, and a Gmail address’s dots (googlemail.com counts as gmail.com) are folded together before the tag is made; any other spelling of one inbox gets its own five. A count for the network address the request came from is kept for about an hour.

If you never make an account

You can watch, search and browse without one. We set no tracking cookies and use no analytics, and what you do is kept in your browser or on your phone. Like any website, your browser or phone asks us for what it shows — the catalogue, the videos you play, and their comments and ratings — from your network address; we answer those requests without storing them, apart from a count for each network address that limits abuse and expires two hours after it last changed. Five things are kept, the last four only if you ask for them:

One more, if you turn on notifications: your browser hands us a push subscription — an address its own push service gave us, plus the keys needed to encrypt a message to it. It has no account attached and no expiry, and today the app gives you no way to withdraw it: the app’s own switch points you to your browser’s or phone’s settings, and turning notifications off there stops them showing, but the subscription stays on our side until a send from Circin finds that the push service has retired it, even after you clear site data or uninstall. (When Circin’s push key changes, the app, the next time it is opened with notifications on, withdraws its subscription and makes a new one under the new key. If making the new one fails, the app’s switch turns off. If Circin does not get the withdrawal, the old subscription stays on our side beside the new one until a send finds it retired.) Writing to us does not help yet: the subscription is filed under a hash of the push service’s address, with no account or email address, and the app does not show you that address, so we have no way to tell which one is yours.

If you make an account, we store

Views

We count that a video was watched, once per watcher per day, after three seconds with it (those can be three seconds in which it did not play: below). The count goes to the creator of that video and to nobody else. To count once rather than every replay we store short one-way hashes for twenty-four hours: of your account if you are signed in, and otherwise of a random identifier your device made up for itself and of the network address the view came from. Signed out, a view counts only when neither has been counted for that video today, so a classroom on one network counts once. In the player and the lesson view, the app sends the view once the video has been playing, or trying to play, for three seconds in all: a pause holds the count, and a file that is still loading, or that failed to load, still counts. In the feed, it sends it once a video has been the current one, not paused, for three seconds in all (pausing, going to another of the app’s tabs or opening the full-screen player holds the count; moving to another video starts it again), even if it did not start playing: when your autoplay setting kept it from starting, or while something is open over the feed — a profile, a subject page, settings, a report, a lesson view opened from the feed, the screens for signing up, logging in and getting started, or the launch screen the app shows for under three seconds as it opens, so a video can be counted under a second after the feed first shows. That video also goes into your watch history, where the app keeps one (not while you browse as a guest, or while history is paused). The view carries the number three, the mark it has just passed; the server checks that number (under three it counts nothing) and keeps it nowhere. How long you went on watching, and which part, are not sent, and the daily time watched stays on your device.

Each hash is keyed: it is made with a secret held on Circin’s server and mixed with the video’s id (HMAC-SHA-256). Without that secret, a stored hash does not lead back to an email, an address or a device, and one watcher’s hashes on two videos do not match. That is not the same as unreadable: whoever holds the secret could test a guessed email or address against one video’s hash, and because one watcher’s hash on one video comes out the same each day, two lists taken on different days show that someone came back to that video, though not who. If the server has no secret of at least thirty-two characters, it counts no views at all rather than keep a weaker hash. The hashes are used for that count and nothing else. A view is still counted while your watch history is paused. Kid profiles are excluded entirely.

What stays on your device

Recordings and clips until you choose to publish, the birthday sign-up asks for (read to choose the path, then not saved), your parent PIN, how long you have watched each day and where that time went (which feed or page and which subject, and, while your watch history is on and you are not browsing as a guest, which creator and video; the app trims it to the last eight days each time it adds a second), and everything belonging to a kid profile — none of which is sent to us, apart from a kid profile’s parent email when a parent asks for a PIN reset by email (the summary above says what is kept). Where you are up to in a video is held only while Circin is open, and saved nowhere, on your device or ours. Which slide you reached in a post made of slides, such as a photo post, in the feed or the player is saved on your device, and is in the backup once you sign in; one opened in the lesson view starts at its first slide each time, and the slide it reaches there is not saved.

Some things are on your device and are also in the backup above once you sign in: your watch history, your recent searches, the notes you write on videos, your own copy of the reports you filed, and the list of videos, creators and topics you have hidden or blocked. Signed out, the app's copies stay on the device (a report itself is sent either way, so a person can act on it); browsing as a guest, the app keeps no watch history at all. Signed in, they travel with everything else the app has saved, because the backup is the whole store rather than a chosen part of it.

The watch history holds, up to the newest hundred, each video you open in the player, apart from your own opened from Your videos, and each one that has been the current video in the feed, not paused, for three seconds in all, played or not; past a hundred, the oldest leave early. One you reach by swiping or moving on inside the player, or a post opened in the lesson view, is not added. The app uses the history for three days so the feed stops repeating itself. Entries older than that leave the device, and then the backup, the next time a video is added or you remove an entry or clear the history; while history is paused nothing is added, so they stay until you remove an entry or clear it. You can clear your history in the app, and pause it entirely; pausing it does not stop a view being counted (Views, above).

What crosses from your device to Circin, and what does not A boundary line separates your device from Circin. When you are signed in, saved app data crosses as one backup copy capped at one megabyte. A comment you post and a block you make cross and are kept. Daily watch time, the parent PIN and your birthday have no connection and are never sent. A kid profile is not sent by the app, and the server refuses to store one. ON YOUR DEVICE ON CIRCIN YOUR THINGS Saved app data likes, history IF SIGNED IN A backup copy capped at 1 MB YOU POST A comment or a reply KEPT Comments with username YOU BLOCK A block listed here too KEPT The block list holds both sides NEVER LEAVES Daily watch time PIN and birthday never sent KID PROFILE Behind a PIN on parent's phone REFUSED Not stored server says no
DrawnThe teal line is the edge of your device. Five rows, not the full list: what you publish, who you follow and the rest are in the account section above. The backup row is everything the app has saved, so watch history and hidden topics cross with it once you sign in. The app does not send a kid profile in the first place; the dashed box is the server refusing one all the same. A drawing of the rule, not a screenshot.

Children

A kid profile lives on a parent's phone behind their PIN. It is not an account, it does not sync, and Circin keeps nothing about what a kid watches, searches or does on it: the app asks Circin for the catalogue and the videos it plays, as any website would, and sends no name, no history and no counted view. Circin Kids can also be on with no kid profile open, a state the app’s code allows for (a parent handing the phone over while still signed in as themselves). What the child does then is not saved into the account that was open: a search the child taps through, the subjects and topics picked under Categories and the slide reached in a post made of slides are not written to that account’s store, so they do not reach its backup either, and a video the child watches is not added to its watch history, because the app treats a Kids session with no kid profile open as a guest. The one piece of a kid profile that leaves the phone is its parent email, when a parent asks for a PIN reset by email; the summary at the top says what is kept of it. Our server refuses to store a kid profile. A kid cannot comment, message, follow or be followed.

What we do not do

We do not sell your data, we do not share it with advertisers, we run no third-party analytics or tracking, and we do not build an advertising profile of you. Circin has no subscriptions and never will. Your IP address is used for abuse-prevention rate limiting, as counts kept under the address that expire within two days, and, as a keyed hash mixed with the video’s id, to count a signed-out view once a day; it is not stored against your account.

Deleting your account

Deletion happens straight away, with no undo and no recovery window, so download your data first if you want a copy — the app gives you the file immediately rather than emailing a link. The file is what your device has saved; the copies Circin keeps on its side are not read into it. The account stops signing in at once (elsewhere in Cloudflare’s network that can take up to about a minute). Your posts, comments and uploaded files come down in the minutes after, while the app carries the take-down on; if it stops before the end, for example because the app was closed, the rest stays up until Circin’s owner finishes it.

Erased: your synced backup; the video and picture files you uploaded, which are deleted from storage (the record of each upload stays, marked removed, with its size and the name the file had on your device, and a browser, or any cache between it and Circin, that already fetched a file may keep its copy for up to a year); the session on the device you deleted from; the take-down’s own working record, which holds your email address until it finishes; and the notices your comments and replies sent, for comments made since this version.

Taken down but not erased: your posts and your comments. Each is marked removed and leaves every feed, list and page, but the row itself stays, with its text, the username that wrote it and its times, so that replies to it keep their shape and a moderation decision keeps its record. The display name is blanked on each removed comment; a removed post’s record keeps it. Nothing in Circin brings a removed post or comment back on purpose; a write that crossed the take-down at the same moment can list one again for a short while, and the take-down’s second check takes it down again. The app makes that check about two and a half minutes (the default wait) after the take-down’s last change, if it is still open; if it was closed, the check waits for Circin’s owner to finish the take-down, and a post listed again stays up until then. We would rather tell you that than claim an erasure we do not perform.

Kept on purpose: your username, retired rather than released, so nobody else can take it and inherit what was addressed to it. Your account row is replaced by a marker holding that retired username and the date — your email address, your password hash and your display name are gone from it — but the marker is still filed under your email address, with no expiry.

Not reached by deletion today. These stay after an account is deleted, and we would rather list them than leave them out:

Three things deleting an account does Deleting an account happens right away and leads to three outcomes. Erased: the backup, the uploaded files, the password hash and the session on the deleting device. Taken down with the row kept: posts and comments, which leave every feed. Kept on purpose: the username, retired so nobody else can take it. ONE STEP Delete your account straight away, no recovery window ERASED Backup and uploaded files plus password hash, this session TAKEN DOWN, ROW KEPT Posts and comments leave every feed; the row stays KEPT ON PURPOSE Your username, retired so nobody else can take it
DrawnTaken down is not the same as erased. Nothing in Circin brings a removed post or comment back on purpose (a write that crossed the take-down can show one again, until the take-down’s second check, which the app makes if it is still open and Circin’s owner makes otherwise), but its row stays, with its text and the username that wrote it (a removed comment’s display name is blanked; a removed post keeps its), so replies keep their shape. Three outcomes, not the whole account: this step does not yet reach likes, follows, ratings, requests, blocks, reports, the launch list, other devices’ sessions or most notices you sent — the list above names each — and the marker left in place of your account is still filed under your email address. You can download your data first — there is no way back afterwards.

Where it is held

On Cloudflare, our hosting provider. Launch-list emails, and the questions you submit through the website (which carry no name or email address), are stored the same way, with the page and the country the request came from; a launch-list entry also keeps your request for updates, if you made one. No retention period is set for these yet, and they are removed by hand.

Email Circin sends — sign-up and reset codes, the notice that a password changed, the launch-list confirmation and a parent’s PIN reset code — goes out through an email delivery service (Amazon SES, Postmark, Resend or MailChannels, whichever this deployment is set up with). That service receives the address and the message, and keeps them in its own logs for as long as its own settings say.

Circin’s code keeps no log of the requests it answers; the Admin keeps a list of the owner’s own actions, its newest three hundred, which can name the record acted on. That list can name a person’s email address, with the owner’s note on them (a move on the list of interested creators), or username (an account take-down), and it keeps the network address behind a change to the owner’s own password and behind a push broadcast or announcement sent with the admin key. A launch-list signup also leaves a record of the steps it set off for sixty days (the launch list, above). Cloudflare can keep request logs for it (Workers Logs, Logpush) if Circin’s owner turns them on; this code does not turn them on, and if they are turned on, how long they are kept has not been decided yet. One setting made for testing would write the names of storage keys to such a log, and some of those names hold an email address; Circin’s deployment notes keep it off in production.

See also our Terms of Service and Community Guidelines.

Questions? circinofficial@gmail.com