SPELT
What the game sends, and what it never sends.
SPELT has no accounts and no cookies. Every puzzle is generated ahead of time and solved entirely on your own device, and the game works with the network off.
Three things travel, and this page is the whole list of what is in them. Two of them happen on their own, and the usage data switch in Settings turns both off together. The third is the drop box, which sends nothing until you type a message and press send.
The usage stream
The usage stream is how the game knows whether it is any good: whether people come back, where a puzzle loses them, and whether anything is broken. It is anonymous, it is never on the path of play, and every field it may carry is listed below.
Why it is allowed to happen at all: this is first-party audience measurement, done for the game itself, with no identifier that survives clearing site data, no profile, no advertising, and nothing passed to anyone else. Under UK and EU rules that is the legitimate-interests basis rather than consent, and the switch in Settings is the objection you are entitled to. Under US state privacy law there is no sale and no sharing, so there is nothing to opt out of — and the game honours Global Privacy Control anyway: a browser sending that signal is read as having turned the switch off, and nothing is sent.
What identifies this browser
deviceIdRandom id for this browser, stored on your device. Not derived from anything about you, your hardware or your network. Clearing site data destroys it permanently
firstPuzzleThe puzzle number this browser first played, so a returning player is not counted as a new one
sessionIdRandom id for this tab, held in memory only and destroyed when the tab closes
visitDaysHow many separate days this browser has opened the game
How the puzzle went
backtracksHow many times a letter already placed was taken back
bucketWhich time band the solve fell in, the same band the day's readout counts
cleanWhether it was solved without taking anything back
ctaWhich onward button was pressed — the solved card's next puzzle, a handover to an unplayed today (the welcome's, or any card's once the daily outranks the road), the welcome's handover to the board a share link named, skipping the welcome, falling through to practice once the archive is spent, the Play button that closes How to play, or the line in Settings that hands the game to somebody without a solve first — so a door offered can be told from a door used One of: nextPuzzle, todaysPuzzle, linkedPuzzle, skipWelcome, practice, helpPlay, invite.
depthHow many of those buttons this session had taken in a row, the first being 1, so a chain of puzzles can be read by how far it ran
hardWhether hard mode was on, which plays without the row ticks
hintWhether the one hint was used
linkedWhich puzzle number the arriving share link named, when one did — what the link asked for, so a puzzle event for that board says whether the tap became a play
modeWhether it was the day's puzzle, one from the archive, or the welcome puzzle One of: daily, archive, welcome, practice.
onWhat it was set to
panelWhich panel was opened One of: help, settings, stats, archive, win, giveup, feedback, privacy.
placedHow many letters were on the board at the time
poolLeftHow many letters were still in the pool when it was left
puzzleWhich puzzle number this was
resumedWhether this continued a solve already in progress
settingWhich switch was thrown One of: hard, sound, usage, motion, text, contrast, theme.
streakBandHow long a run of days this solve stood on, as a band rather than a number: 0 none, 1 a single day, 2 two, 3 three to six, 4 a week or more, 5 a fortnight, 6 a month or more
viaWhat first showed somebody was there: a press, a key, a wheel or scroll, or the page simply being visible and in front of them for twenty seconds. It separates a person who looked and left from an automated fetch that renders the page and presses nothing One of: pointer, key, wheel, scroll, dwell.
How long things took
queuedMsFor a batch that could not be sent at the time and waited on your device: how long it waited
sentAtMsHow long this session had been active when the batch was sent. It places each event at the moment it happened rather than the moment it arrived, and its largest value is how long the session lasted
timeMsHow far into the puzzle this happened, counting only time the tab was open and visible
How you got here
campaignA short source tag carried by the link you arrived through, if it had one. First visit only
referrerHostThe site you followed a link from, if any. The host only, never the full address
How the game itself is doing
batchSeqWhich batch this is within the session, so a duplicate can be discarded
buildWhich build of the game this was, so a fault can be tied to a version
flushWhy this batch was sent One of: manual, full, idle, hidden, pagehide, freeze, optout.
installedWhether the game was opened from a home screen rather than a browser tab
messageThe error's own message, with any web address stripped out of it before it is stored
methodHow the share went: handed to the system share sheet, opened and dismissed without sending, copied to the clipboard, or refused outright One of: share, cancelled, clipboard, failed.
offlineWhether the device reported being offline at the time
payloadVersionWhich version of this format the batch was written in
stepThe install funnel, in order: the browser offered a prompt (or iOS made one impossible), the card showed its line, the browser prompt was accepted or waved away, the app landed — so the funnel's narrowest step can be found rather than guessed One of: offered, shown, accepted, dismissed, installed.
whereA short label for the part of the game that failed
The counters
The readout on the Solved sheet is a second, separate flow. When you solve the day's puzzle the game adds one to a set of counters for that puzzle number, and reads the totals back so the sheet can say how the day went.
The counters are the whole record: how many solved it, how the times were spread, and how many did it clean, with a hint, or in hard mode. Nothing holding a result is stored per player, which is why the sheet can tell you how the room did and can never rank anyone in it.
One thing is stored per device, and only to stop a browser being counted into the same puzzle twice: a short token worked out from your device id and that puzzle's number. It is stored on its own, with no result and no id attached to it, and it is deleted after a week. Because the number is part of it, the token is different for every puzzle, so these cannot be joined together to follow a browser from one day to the next.
Only the day's puzzle is counted. Solving one from the archive changes no total, because a puzzle from three weeks ago solved today is not part of how that day went.
The drop box
The drop box is the game's one text input, and the third thing that travels. Nothing goes through it unless you type a message and press send.
What is stored is what you wrote, the puzzle you were on, and an address only if you chose to leave one. It is deliberately not on the usage data switch: that switch governs collection the game does in the background, and a message you wrote and sent is an act rather than a background collection.
Sending is limited to five messages a day. The limit counts a one-way hash of your network address, salted with a secret only this stack holds, and that counter deletes itself after two days. The address itself is never stored.
How long any of it is kept
Batches are kept in the form they arrived in for 35 days.
The folded daily record of play is kept for 400 days.
What is never collected
- Your name, or any account. There are no accounts. The only address the game ever holds is one you typed into the drop box yourself.
- Your location. Your IP address is never stored: the drop box's daily limit counts a one-way hash of it, salted with a secret only this stack holds, and that counter deletes itself after two days.
- Your device fingerprint, your screen size, or your user agent.
- The letters you placed, the words you spelled, or anything else about the contents of a solve. The game records how a puzzle went, never what was on the board.
- Anything at all, if you turn the usage data switch off. The switch stops the stream, purges what was waiting to be sent, and hides the day's readout.