Last updated 16 October 2026
Mountain Stream Playground, at playground.mountainstream.dev, hosts our browser games and links out to our other projects. Playing needs no account. An optional player account, through Google sign-in, is needed only to put a score on a leaderboard or to send or answer a challenge. There are no cookies, no advertising, and no tracking across other sites. This page describes the little we do store. Linked projects on their own addresses — such as Sol Lä-get — carry their own privacy pages.
On your device
Your game progress — the current board or drawing, timer, settings, levels completed, a run in progress with the levels it covers, and a copy of the current level list — is saved in your browser's local storage. If you sign in to a player account, a flag saying a session exists is kept there too, so the sign-in code is loaded only when it is needed. It stays on your device. We cannot read it, and it is never sent anywhere except as described below. Clearing your browser's site data removes it.
What our servers receive
- When a game asks for a new puzzle, the request carries the chosen size and difficulty, together with the random identifiers of puzzles you have already completed, so a fresh one comes back. These identifiers name puzzles, not people, and are not linked to you.
- Binary Sudoku and Sudoku have public leaderboards: Binary Sudoku
one per grid size and difficulty, Sudoku one per level and one per
daily puzzle. Entering one is optional and needs a player account; see
Player accounts below for what an entry
stores and how long. Each served puzzle also carries a random
ticket (for Sudoku,
sudokuRuns), stored with the puzzle, its size or level, the daily date where there is one, the time it was issued, whether it has been used and, for a challenge, the challenge it belongs to, so a score can be checked against the puzzle it came from. A ticket is made whether or not you are signed in, and it is anonymous: it names a puzzle, not a person, holds no account id, IP address or browser details, and is deleted after 7 days. - Sudoku's puzzles, including each day's daily puzzle, are kept on
our server as grids (
sudokuPuzzles: the given digits, the solution, the level, a version and a checksum). They describe puzzles only and hold nothing about any player. - Aqueduct fetches its level list from our server when it loads, so new levels can appear without an update. The request carries nothing about you.
- The Aqueduct owner portal can save editor drafts of unpublished levels and daily-route choices. These are the owner's own work data, not player data, and are available only after owner sign-in.
- Owner sign-in, here and on portal.mountainstream.dev, runs through the same Google sign-in as player accounts. For the owner only, the server reads the account's e-mail address from the sign-in, to decide which portals to show and to check owner access.
- We count how often puzzles and levels are started, solved or failed, and how often hints are used — per day and per puzzle size, difficulty or level — along with game page views, how long solves take in coarse time bands, star ratings earned, how many Journey and daily-route runs start and how far they get (in coarse bands of levels), and the domain of the site a visit arrived from (the domain only, never the full address). These are plain totals with no identifier of any kind attached.
- Aqueduct Journey start and end totals carry a mode tag: checkpoint or deathmatch.
- For Sudoku (
sudokuStats) the totals are, per day: page views, and per level how many games were started, won and played offline and how many hints and helps were used, with wins counted in coarse solve-time bands (under 1, 3, 5 or 10 minutes, or longer). Plain counters, with no identifier of any kind. - When you place a gadget on an Aqueduct board, we add one to a daily count for that kind of gadget — a trampoline, a portal — so we can see which ones are worth building more of. The count carries the gadget's name and nothing else: no identifier, no level, nothing you drew, and no way to tie one count to another.
- If you mark a level as impossible, we receive the level, the reason you picked from a fixed list, your current drawing as coordinates, and how far the water got. Nothing you type is sent.
- If a game hits an error in your browser, it may send us the error message, the file and line it came from, the level in play, and the game's version number, so we can fix it. No identifier, browser details, or page address is included, and only a handful of reports are sent per visit.
- Like almost every web server, ours keeps standard access logs (including IP addresses) for up to 30 days to operate the service and defend it against abuse. To stop one connection flooding the games, our servers also count requests per connection for one minute, using a scrambled form of the IP address held only in the server's memory; it is never written to storage and is forgotten within minutes. The servers and the database run on Google Cloud in the European Union (Belgium, europe-west1); Google acts as our processor under its Cloud Data Processing Addendum. Firebase Authentication, which holds the Google sign-in record, is also run by Google. Its data is not held in a region we choose and may be processed outside the EU and EEA, under the safeguards in that Addendum (standard contractual clauses).
- We also run CrocheCreator and AutoStudioPortal, two separate projects with their own accounts. An Access page at portal.mountainstream.dev/access/, reachable only after our own sign-in check confirms the owner, lets the owner manage who has access to those projects: adding or removing an allowed e-mail address, and — for CrocheCreator only — viewing that account's activity dates and feedback reports and updating a report's status. This reads and writes those projects' own records directly; nothing from them is copied or stored here, in the same europe-west1 region as our own servers. Only the owner can reach this page, and it is used solely to administer access to those projects.
Player accounts
A player account is optional and is used only to put Binary Sudoku and Sudoku scores on the public leaderboards and to send or answer a challenge. You can play every game, and open a challenge link, without one.
- Sign-in. You sign in with your Google account
through Firebase Authentication, a Google service. Google acts as our
processor: it holds your e-mail address and Google profile for the
sign-in, and we never copy them into our database or logs. Your
session is kept by Firebase in your browser's IndexedDB storage, only
after you choose to sign in; these are not cookies. We add one marker
to your Firebase sign-in record,
player: true, so the 12-month cleanup below knows the account belongs to a player. - Who we contact, and when. Nothing below is loaded until you press sign-in, or until you have signed in on this browser before: www.gstatic.com (the sign-in code), apis.google.com and accounts.google.com (the Google sign-in page), identitytoolkit.googleapis.com and securetoken.googleapis.com (the sign-in service). This holds on a challenge link too: you can see the puzzle before any of these is contacted.
- Your account record. We store your username, a lookalike-safe key of it used to keep names unique, when the account was created, and when you last changed the username. It is filed under a random account id from Firebase Authentication.
- Username holds. While a username is yours we keep a record linking it to your account id. When you rename or delete the account, the freed name is held for 30 days with no link to you, so no one else can take it at once, and then released. You can change your username once every 30 days.
- Leaderboard entries. A Binary Sudoku entry
stores your username, the score, the solve time, how many hints and
helps you used, the date, a short random entry code, and a link to
your account id. A Sudoku entry (
sudokuBoards) stores your account id, the score, the solve time, how many hints and helps you used, and the date; your username is looked up from your account when the board is shown, so a rename shows at once. Each board keeps one entry per account, your best, and shows the top 20 entries to anyone who opens the game, anywhere in the world. The username is public; the account id is never shown or served to anyone. Pick a username that does not identify you. - Challenges. After a win you can
send a friend a link to play the same puzzle (Sudoku and Binary
Sudoku, stored in
sudokuChallengesandbinaryChallenges). A challenge stores a random challenge id, the game, the puzzle and its level or size, the account id of the player who sent it and their result (time, hints, helps, score, date), the account id and result of the one player who answered it, when it was made, and when it expires. No usernames, e-mail addresses or anything you type are stored in it; names are looked up from the accounts when the challenge is shown, to anyone who has the link. The sender's result stays hidden until someone answers. Anyone holding the link can take the answer slot, so send it only to the friend you mean. A challenge is deleted 30 days after it was made. - How long. Entries are deleted 12 months after they were posted, or sooner if a better score pushes them out of the top 20 or you delete them. An account with no sign-in for 12 months is deleted, together with its sign-in record at Firebase Authentication, at the next cleanup after that. Freed usernames are held for 30 days. Challenges are deleted 30 days after they were made. Puzzle tickets are deleted after 7 days. The database removes expired items automatically, usually within a day of their expiry and sometimes a little later.
- Your account page. At /account/, signed in, you can change your username, download your data (your account, every current entry in every game, and for each challenge you took part in your own role, result, outcome and level, but nothing of the other player, as one JSON file), and delete your account. Deleting removes every entry, every challenge you sent or answered (whole, the other player's result with it), your account record and your sign-in record at once; you may be asked to sign in again first.
Legal basis
Where the GDPR applies, we process the server-side items above under legitimate interest (Art. 6(1)(f)): operating the games, keeping them working, understanding — in aggregate — how they are played, and administering account access for the other projects we operate, on behalf of the people who use them. A player account, its leaderboard entries and its challenges are different: we keep them because you asked for the service by signing in and pressing Submit or sending or answering a challenge, so they rest on providing the service you requested (Art. 6(1)(b)). You can end that at any time by deleting your account at /account/. Anonymous puzzle tickets, Sudoku's stored puzzles and the counters hold no personal data and rest on legitimate interest. Beyond player accounts, their entries and challenges, and the transient server logs we store no personal data; the CrocheCreator and AutoStudioPortal records the Access page reads and writes stay in those projects, not here.
Children
The games are made for everyone, including younger players, and play needs no account. We collect nothing from anyone beyond what this page lists, and we do not profile players or show advertising. A leaderboard username is the only thing a player can choose to make public. A player account needs a Google account, so Google's own age rules apply; if you are under 13, ask a parent or guardian before signing in or submitting a score, and never use your real name as a username. Parents and guardians can delete the account at /account/ or ask us to remove any entry.
Your rights
Under the GDPR you can ask what data we hold about you, and ask for it to be corrected or deleted. You can also ask us to restrict how we use it, or object to our use of it. If you have a player account you can do the most common of these yourself, without asking us: at /account/ you can download your data, change your username, and delete your account and every entry. For anything else, or if you cannot sign in, e-mail us; to find an entry, tell us the username, the game, the grid size and difficulty or the Sudoku level, and roughly when you posted it. Apart from player accounts, their entries and short-lived server logs, we keep no personal data. We answer within one month. You also have the right to complain to your data protection authority — in Sweden, IMY.
If your address is in CrocheCreator's allow-list, account activity, or feedback reports, that data is CrocheCreator's, not ours — ask there: stitch.mountainstream.dev/privacy. We only read and write it on the account owner's instruction, as described above.
Leaderboard rules and reports
By choosing a username you confirm it is yours to use and is not offensive, unlawful, or posing as someone else. Usernames are unique, ignoring case and lookalike letters. Usernames that look like web or e-mail addresses, or that pose as us, are refused automatically. We remove entries that break these rules, or that we are told are unlawful, without notice. To report a username, e-mail us with the board (grid size and difficulty, or Sudoku level or daily date) and the username; we look at every report and tell you what we did. Scores that look faked may also be removed.
Contact
Mountain Stream Studios AB · Org.nr 559445-4752 · Gothenburg, Sweden
jonatan@mountainstream.dev
This address is also our single point of contact under the EU Digital Services Act, for users and for authorities, in English or Swedish.
Changes
If what we store changes, this page changes with it, along with the date at the top.