Back to today
Privacy

What is kept, and why

Last updated 16 October 2026

The short version

The daily puzzle is worked out in your browser from the date, so the whole game runs without an account. Sign in and a handful of rows are kept so a streak can follow you between devices. That is the entire purpose of the data described here.

Playing without an account

No account is needed. The board, the clock, your streak and your practice results are written to this browser and stay there.

One exception, stated plainly: when you finish the daily, the app posts the result to the server without first checking whether you are signed in — the play pages are served from a CDN and the sign-in cookie is deliberately unreadable by page scripts, so the page genuinely cannot tell. If you are signed out, the server refuses that request and keeps nothing from it.

Practice works the same way, and does it far more often than once a day: every practice board you finish is posted as you finish it, blind, for exactly the same reason. Play ten practice boards signed out and ten such requests are sent. The server refuses each one and keeps nothing from any of them, the same as it does for the daily.

Who is responsible, and how to reach them

This policy covers Onsday, the site at www.onsday.com. For anything on this page — a copy of your data, an erasure, a correction, or a question about how any of it works — write to contact@onsday.com. That address is the controller’s contact point for privacy requests, and it is read by a person.

You can exercise the copy and erasure rights yourself, immediately, in account settings — you do not need to write to anyone first, and doing it yourself is faster. The address is there for everything the controls do not cover.

If you think this site has handled your data wrongly, you have the right to complain to your national data protection authority, and you can do that without contacting us first.

What the server keeps once you sign in

What other players can see

Your display name and your time, but only for a ranked solve. The daily board shows the fastest ranked solves for today, and a row on it carries the name you have chosen, your finishing time, your position, and whether the solve claimed a hint. Anyone can read it, signed in or not.

An ordinary daily solve never appears there. Only a ranked attempt does — one you started deliberately, which the server timed from beginning to end and replayed move by move to check. If you have never played a ranked attempt, you are not on any board.

The season ladder shows your display name beside a running total — every point you have earned this season, and how many ranked solves earned it, summed across every game you rank in. It reads from the same ranked solves as the daily board, so the same rule applies: a solve the server timed and replayed, never one your device merely reported. If you have never played ranked, you have no season and no row on the ladder.

A friend can see your ranked standing even when a board would not show you. Both the daily board and the season ladder can be filtered to just the people you have added as friends, and that filtered view is not limited to the global top 100 — so a friend sees your ranked time and position on a day you placed too far down for the public board. It is the same kind of information the boards already publish, a display name beside a verified time; what a friendship adds is being seen when the global cut-off would leave you off.

You become someone’s friend by opening an invite link they chose to give you — there is no friend request to accept and, as everywhere else here, no way to look a person up by name or email. A link works once and expires after seven days. Removing a friend, from your friends page, takes that visibility away again.

Your team is treated the same way. If you are in a team, both boards can be filtered to just its members, and — like the friends view — that view is not limited to the global top 100, so a teammate sees your ranked time and position even on a day you placed too far down for the public board. You join a team by its invite link, the same as the roster and chat you already share with them; leaving the team ends this visibility.

Whoever you duel — a friend, or a stranger from the matchmaking queue — sees your time on that one board. Queuing needs no friendship and pairs you with whoever else is waiting for the same game and difficulty; either way the match shows your display name, your photo if you uploaded one, and a time on one unranked board. Declining a duel, or letting it expire after seven days, is shown to the other player as exactly that. Erasing your account removes every duel, however it started.

While a duel is in progress, your opponent also sees your move count and elapsed time update live, and whether you have finished. Never your board itself — the trust model is still “the other player can see the same board”, their own copy generated from the same seed, not a live view of your actual grid. Once the duel is finished, both of you can replay that as a chart of how each move count grew over time.

Chess is different: matching two players into a live game means each of you sees every move the other makes, in real time, for as long as the match lasts — that is the whole of playing chess against another person. Either player may resign at any time, and erasing your account removes every live match you were part of, along with everything else.

Wall Race works the same way: a live match means each of you sees every move the other makes, in real time, for as long as the match lasts — that is the whole of racing another person for the far side of the board. Unlike chess, there is no way to resign a Wall Race match yet, so one neither of you finishes simply stays open. Erasing your account removes every live match you were part of, along with everything else.

A friend or teammate can see whether you were recently active — a dot beside your name, on or off: whether you loaded any page signed in within roughly five minutes. No live feed, and it goes stale rather than announcing when you sign off.

On Duels, an opponent can also see roughly when you were last active — “Active now”, or “Active 3 h ago” — read from that same stamp. Only a friend sees it, or any opponent if your profile is public; a stranger from the matchmaking queue sees nothing of it while your profile is private or friends-only.

Your profile — pronouns, country and a short bio — is yours to share or not. You fill these in, if you want to, in account settings, and a visibility setting decides who may open your profile page: private (the default) means only you, friends means the people you have added, public means any signed-in player; a signed-out visitor is shown nothing, so a profile is never an open-web page. The only way to reach one is a link beside a name on a roster or friends list, and erasing your account removes these fields with everything else.

Nothing else about your account is visible to anyone else: not your email, not your Google name unless you chose it as your display name, not your streak, and not your practice times. There is still no way for one account to look up another.

Because that name is published beside a time and, now, a season total, which name shows is the player’s choice to make — the generated pseudonym, your Google name, or a name you type, in account settings. You can also choose to compete anonymously: you keep your rank, your times and your points, and every board shows you as “Anonymous” instead of any name.

Signing in after playing as a guest

If you played on this browser without an account and then sign in, the daily history saved here is offered to your account once: up to the last thirty solves plus the streak counters. Anything a browser reports is marked as such, and marked rows may add a day the account lacks or raise a streak, never overwrite a day already recorded — nor will they ever count towards a ranked board. A browser’s history belongs to one account only, so if somebody else signs in on the same browser nothing is offered.

A practice best time set on this browser, if faster than what your account already has, is offered the same way, per difficulty — merging can only lower a stored practice time, never raise it. How many practice solves your account has recorded is never touched by this: it is not sent by this merge, and grows only from practice played while signed in.

What stays on this device

These live in this browser’s local storage, nearly all of them under keys beginning game:v1:. Four are exceptions to “never leaves the device”. Three sit under that prefix: the daily history in the section above, offered to your account at sign-in; your practice best time per difficulty; and your account’s database id (game:v1:authed-id), stamped here on every signed-in visit to the lobby whether or not you have accepted any cookie category. The browser sends that copy to PostHog only after you accept Analytics cookies, so a returning player can be told apart from a new one there. Separately, the server can send the same internal account id with the server-side product events described under Analytics even if this browser has declined that category. Neither path sends your name or email. Finish a practice board while signed in and two things are sent — how long that board took, and the fact that it was solved. Your solve count itself is never sent, by this or by the merge: the server keeps its own tally of the practice solves that reached it, which is why the two numbers can differ. See “What the server keeps once you sign in” above. The fourth is PostHog’s own identifier in the last bullet below — the one that is not under the prefix — which leaves with every event once you have accepted analytics cookies. Everything else in this list stays on the device:

Clearing this site’s data in your browser removes all of it, including the daily history and this browser’s own copy of your practice statistics — the server’s copy, if you were signed in when it was set, is untouched.

Analytics

Visits are counted with Vercel Web Analytics, which is cookieless: it stores nothing on your device, and it cannot recognise you on any other site.

It is not merely a tally, and it would be an understatement to call it one. Vercel documents that each page view records which page was opened and which site referred you, alongside facts read off the request itself — country, operating system, browser and device type. Returning visits within a day are recognised through a hash Vercel computes on its own servers from the request and a salt it changes daily, so nothing is written to your device and one day’s figures cannot be joined to the next.

It runs unless you switch it off. The switch is here, and the same one is in account settings. The preference belongs to this browser rather than to an account, and it is honoured whether or not you are signed in, so you do not need one to use it.

Analytics

Using it reloads the page. That is the point rather than an inconvenience: switching it off has to stop the script loading at all rather than load it and ask it to stay quiet, and a script already on a page cannot be taken back off it.

PostHog is used in two different ways. Its browser analytics is optional: the browser SDK, its persistent local-storage identifier, heatmaps, session replay, performance timings and surveys load only after you accept Analytics cookies. Separately, some actions by a signed-in account create product events on the server — for example account, play, team and membership milestones. Those server events do not load PostHog in your browser, do not contain a session replay, and are not controlled by this browser’s Analytics-cookie switch. They use the account’s internal id plus the event and the product fields needed to measure it; this site does not send PostHog your email address or display name. To avoid reporting the same team activation milestone more than once, a team row also keeps the highest activation definition version already reported; zero means none, and deleting the team deletes it.

The two optional browser-side categories below go beyond Vercel’s cookieless tally, and neither browser SDK runs by default: a dialog asks the first time you visit, and each runs only if you accept it. Accepting one does not accept the other — they are independent answers, and the two switches below reflect and change them separately. The same choice is also one tap away, wherever you are on the site:

Analytics cookies

PostHog browser analytics — which pages and features are actually used, and a recording of your whole session, including your browser’s console output. What is recorded, and for how long, is in Who else is involved below. Keeps its identifier in this browser’s local storage rather than a cookie.

Marketing cookies

Google Analytics — the measurement this site would use for any future advertising or campaign tracking. Sets the two cookies listed below.

Both reload the page too, and for the same reason as the switch above. Declining, or never accepting, means that category’s script never loads on this browser.

Marketing email

We may occasionally send email about new games, features, or events, and a weekly summary of your own play (how many puzzles you solved and on how many days, with a link to your week). This is opt-in and off by default. You turn it on yourself — with the unticked checkbox offered once, alongside confirming you are old enough to use the site, or with the toggle in account settings at any later time. Each time you turn it on or off, we record when and through which of those you did it, in a consent history kept alongside your account and removed when the account is.

Turning it off again is just as immediate, and there are two ways to do it: the toggle in account settings, or the one-click unsubscribe link carried in every marketing email you receive. Either takes effect at once, for every future send.

This is separate from service email — messages about your own account or the service itself, such as a security notice or a change to these terms. Those are not marketing and are sent whether or not you have opted in, because they concern the service you are using rather than anything we are promoting.

Marketing email, when sent, is delivered through Resend (see “Who else is involved”). Each send is recorded with the audience it was aimed at and the actual list of addresses it went to, pinned at the moment it was sent — never the content of your inbox or whether you opened it.

Asking never to be emailed again

This works with no account or sign-in required, because it needs to work for someone who was invited and never signed up at all. It is checked before a team invite, a site invite, a broadcast — marketing or service — and an account-approval or pre-approval notice: an address on this list receives none of those. It is not checked before the sign-in link, because that link is how you get back into your own account — refusing to send it would lock a suppressed address out of the account itself, not just its inbox.

Every marketing email carries a one-click unsubscribe link in its footer. Following it withdraws marketing consent if the address belongs to an account, or adds the address to this list if it does not — either way, nothing else about the account is touched.

The request is stored as a one-way hash of the address, never the address itself, in a row with no link to any account. This is one of only two things the system keeps on purpose after you delete your account — the other is a record of any moderation action taken on or by an account, described in “Erasing your account” below. Both survive for the same reason: erasing your account cannot also erase the record that you do not want to be emailed, or the erasure itself would be the way to start receiving mail again. (An account-approval entry, described in “Account approval” below, is also not removed automatically — but unlike these two it is removed whenever you ask.)

The hash cannot be turned back into your address, and the row is used for exactly one thing: refusing to send.

Invite emails, when sent, go through Resend — see “Who else is involved”.

Account approval

Every account on Onsday is reviewed before it becomes fully active — you can still play the daily puzzle without one. When you sign in for the first time, on any provider, the email address you sign in with is stored so we can review it and let you in once it is approved. You do not need to sign in again once that happens.

Unlike the “never email me again” list, this is stored as the address itself, not a hash — we need to be able to write to it, and to recognise it when you sign in. Alongside it we keep whether the review is pending, approved, invited or declined, when it was made and decided, which staff member decided it, and an optional internal note.

This entry is keyed by your email address and is not linked to any account until it is approved — you can be on the list without ever completing a sign-in. Because it is not linked to an account, it is not part of “Download your data”, which covers account rows only, and deleting an account does not remove it. To have a review-list entry erased, write to contact@onsday.com and we will remove it.

When you sign in — with Google, Microsoft, Apple, or an email link — the email address is checked against this list, and against existing accounts, to decide whether your account is already approved. The approval email, when sent, goes through Resend and is subject to the “never email me again” list above; see “Who else is involved”.

Cookies

A visitor who never goes near sign-in, never picks a language and never accepts marketing cookies in the dialog is given none at all — with the one narrow language exception below. Signing in involves four, and every one of them is strictly necessary to sign you in or to protect the sign-in from abuse; all four are unreadable by page scripts and are sent only to this site.

On the live site the first three reach you with a __Host- or __Secure- prefix, which is a browser-enforced restriction on how they may be sent.

The site picks its language by one rule: the language you picked in Settings, then your browser’s languages in your browser’s order, then your system’s, then English. Two cookies carry the parts of that a page request cannot, and both hold only a two-letter language code.

Two more are set only if you accept marketing cookies in the cookie dialog, and only by Google Analytics — accepting analytics cookies (PostHog) sets no cookie at all, because PostHog is configured to keep its identifier in this browser’s local storage instead.

Declining, or never answering, marketing cookies in the cookie dialog means neither is ever set. Withdrawing consent afterwards in the switch above stops new events but does not itself delete a cookie already on your device — clearing this site’s data in your browser does.

Taking a copy of everything

“Download your data” in account settings gives you a JSON file containing everything the server holds about you: your profile, the linked sign-in account, every solve, every streak, and every practice best recorded on the account. Two things are left out deliberately — the sign-in and session tokens, which are secrets rather than facts about you, and anything from the device list above, which never reached the server in the first place.

Erasing your account

The delete control in account settings removes the account row and, by cascade, the linked sign-in account, every session, every solve, streak, practice best, notification and consent-history entry (see “Marketing email” above). It is one statement, it takes effect immediately, and it cannot be undone or recovered. You are signed out as part of it. Anything still in this browser is yours to clear.

Messages you posted in a team, and direct messages you sent or received, go with the account. They are not kept, not anonymised and not replaced with a placeholder — a note saying somebody removed said something is still a record of them, and the surviving half of a conversation is exactly what erasure is for. Teammates, and anyone you messaged, see gaps.

One thing survives it. If a moderator has ever taken action on an account, or if the account belongs to someone who moderates, the record of what was done and why is kept — with the account identifier still on it, which after erasure points at nothing. Everything else about the account is gone. This record is not used to contact anyone or to rebuild a profile; it exists so a decision can be reviewed, appealed and answered for. A moderation log that the subject of the decision can erase is not a record of anything, and neither is one a moderator can erase.

PostHog is separate from this site’s database. The account-delete control does not currently submit a deletion request to PostHog, so analytics events already held there can remain until PostHog’s project retention or a separate deletion request removes them. If you want those analytics records deleted too, write to the privacy contact above and include the account you are asking about. This is an implementation gap, not a promise that account deletion has already removed the processor copy.

A second thing survives it, only for a banned account. Deleting a banned account keeps a one-way hash of the Google account identity it was signed in with — never the identity itself, never anything else about the account — so signing in with that same Google account again is refused rather than starting fresh. This is what stops a ban from being undone by deleting and rejoining; an account in good standing that is deleted keeps nothing at all. The hash cannot be reversed into a Google account, is checked for exactly one thing, and is never used to contact anyone.

Your display name is your choice, changeable at any time in account settings — the generated pseudonym, your Google name, or one you type. Switching back to the generated name returns the one you started with, not a new one.

How long it is kept

Server rows are kept until the account is erased — solves, streaks and practice bests have no automatic expiry. A streak needs to carry forward indefinitely to mean anything; solves and practice bests are kept for as long, with no separate rule that clears them sooner. A sign-in session lapses after twenty-four hours without a visit, and signing out ends it at once. What is on this device lasts until you clear it.

Who else is involved

That is the whole list. Nothing is sold, and nothing is shared with advertisers or data brokers.

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