Where your scores live
Wordwright keeps everything about you, your name, your theme, your daily progress, your streaks, your high scores, in your browser's local storage on this device. Nothing is sent to any server account. No login, no profile, no syncing.
That has two implications worth knowing about.
Backing up your data
The export button below downloads everything as a small JSON file. Keep that file somewhere safe (Drive, Dropbox, an email to yourself), and you can restore from it if your browser data ever gets cleared.
Importing replaces your current data on this device. Reset wipes the same data with no recovery.
Protecting your data on this device
- Install the app. If you tap "Add to Home Screen" (iOS) or "Install app" (Android, Chrome desktop), Wordwright runs as a Progressive Web App. Its data lives in a slightly more durable storage area than a regular tab and is less likely to be cleared by routine browsing-history wipes.
- Don't use private/incognito mode. Those windows discard all storage when you close them.
- Be careful with privacy cleaners. CCleaner, browser "clear history", iOS "Clear History and Website Data", and similar tools all delete localStorage. Either exclude this site from those tools, or export a backup first.
- Different browsers, different data. Chrome and Edge on the same PC keep separate scores, since localStorage is per-browser.
Moving data to another device
- On the device that has your data, click Export my data above.
- Save or send the JSON file to the new device.
- On the new device, open this Help page and click Import a backup.
- Pick the JSON file. The page will reload with everything restored.
Frequently asked
How are streaks counted?
A streak counts consecutive UTC days on which you finished at least one game. Playing two games on the same day doesn't increase the streak. Skipping a day breaks it. Streaks are tracked per-game and the dashboard shows the highest of them as your active streak. Replays of past puzzles do not affect your streak (see below).
What counts as "finished"?
A game is finished, and counted toward your streak, when you reach a natural end: reaching the target word in Chain Reaction (in either Easy or Hard mode), the timer running out (or pressing End round) in Word Weights, decrypting the cipher in Decrypticon, using all 12 tiles in Syllable Stack, and using all 20 attempts (or pressing End round) in Bullseye Words.
Can I play past puzzles?
Yes. Each game card on the dashboard has a Past games button next to Play today. It opens a date picker that goes back up to 30 days. You can either play the puzzle for that date or just review your saved attempt against the solution. The same link is also at the bottom of every game page.
Do replays of past puzzles affect my streak?
No. Past plays don't update your streak, played-count, or best-score tallies. They're a catch-up and review tool, not a way to backfill stats. A small amber banner at the top of the page reminds you when you're playing a past puzzle.
How are best scores tracked when a game has modes?
Each mode has its own best score, kept across all days. Word Weights tracks separate bests for the 3-minute Challenge and Relaxed mode. Chain Reaction tracks separate bests for Easy (share 2 letters) and Hard (share 3 letters). Both bests are shown on the game's page.
What's the community play counter?
The dashboard and the bottom of every game page show how many times each game has been played today and all-time, across every player. The counter increments at most once per device per day per game, so reloading or replaying doesn't inflate the number. The published figures are plain totals; no one can tell from them who played what.
Can I share my data with another person on the same device?
Use a separate browser profile or browser. Wordwright tracks one player per browser profile.
How long is my saved attempt for a past puzzle kept?
Per-day game state is kept in your browser for the last 30 days, then pruned automatically. Your overall stats (streaks, best scores, play counts, history of finished plays) are kept indefinitely.
How do I uninstall the PWA?
On Android, long-press the icon and choose Uninstall. On iOS, long-press and choose Remove App. On desktop, click the three-dot menu in the address bar and choose Uninstall Wordwright. Removing the PWA does not delete your scores; reinstalling will restore them.
Version & changelog
Current version: 7.48 (2026-09-27).
v7.48 · 2026-09-27 · a trace when a meaning cannot be found
- When looking up a meaning fails, the admin page now keeps the reason, so a lookup that went wrong can be explained afterwards rather than only retried.
v7.47 · 2026-09-27 · hold a word to see what it means
- Hold any word in an answer list and a card opens with its meaning, its part of speech and a few words like it. It works in the found lists in Hive and Word Weights, and in the answers on the past games page for every word game. On a computer, right-click the word instead.
- The first time anyone holds a particular word it can take a few seconds to look up. After that the answer is kept, so it opens instantly for everyone.
- Only words already on your screen can be looked up, so this never gives away an answer you have not reached yet.
v7.46 · 2026-09-27 · tidying up
- Word Weights has its own icon, a balance scale. It had been sharing one with Countdown.
- Progress shows what the rare words are worth. Hive and Word Weights already told you how many rare words were left; they now also show how many bonus points they add up to and how many are still to find, the same as the normal words.
- Play together puts the cursor in the code box, since most people opening it are joining someone else's room. Arriving from an invite link, it goes to whatever is still empty.
- The New and Updated badges on the home screen are gone, and so is the notice about the dictionary clear-out, which has run its course.
v7.45 · 2026-09-04 · one operator page
- The three separate operator pages are now one, at
admin.php, with tabs for stats and word review, puzzle supply, and stale files. Two of them had unguessable names because that was once the only thing protecting them; since they all took a key that was secrecy which had stopped being secret and only made them hard to find. - The puzzle page no longer hides itself behind a browser setting as well as the key. One real lock is enough.
v7.44 · 2026-09-04 · streaks that survive an unfinished attempt
- A day you have not finished yet no longer breaks your streak. It only fails to extend it. Missing Countdown and then solving it on a retry reset the run to one, and Numble was worse: it records after every guess, so the first guess of the day flattened the run and the eventual solve could only rebuild it to one. Solving on any attempt now counts exactly as solving first time.
- A run is judged by the last day that actually counted, not the last day the game was opened. Opening a game and not finishing it used to keep a dead streak on screen, and a run that was alive could read as broken before the day was out. Your streak now stays visible all day while today is still winnable, and disappears only once a day has genuinely passed without it.
- Streaks already lost to this cannot be reconstructed, because there is no record of which days were finished and which were merely opened. Both games build correctly from now on.
v7.43 · 2026-09-04 · accepted words are simply accepted
- Nothing is emailed any more. A word the check accepts is added without anyone being asked, and a word it cannot decide is tried again the next time anybody sends it, so a message about one would usually be describing a problem that had already gone.
- The only route to a person is now a refusal you disagree with, where you are given an address to write to. That is you choosing to raise it, rather than the app deciding on your behalf.
v7.42 · 2026-09-04 · a busy checker is not a broken one
- When the checking service is merely overloaded it says so, and says it is temporary. That was being treated the same as a service that could not be reached at all. A busy reply is now waited out briefly and tried once more, which settles most of them.
- If it is still busy, you are told that plainly and asked to send the word again in a minute, rather than being told it has gone for review by hand. Nothing is lost either way.
v7.41 · 2026-09-04 · learning what a model will accept
- Providers refuse an option they do not support in their own words, and one of them refuses in wording so general that no phrase can be matched against it. The instruction is now simply tried, and if it is refused the request is repeated without it and that answer remembered for that model, so the wasted attempt happens once rather than before every word.
v7.40 · 2026-09-04 · asking the AI not to deliberate
- Current AI models think before answering, and send nothing at all until they have finished. A model taking its time is therefore indistinguishable from a blocked connection: both report nothing received when the wait runs out. Deciding whether a word is a word needs no deliberation, so it is no longer asked for.
- The operator page can now list the models a key is allowed to use, so a model name never has to be guessed again.
v7.39 · 2026-09-04 · not waiting on a service that is down
- A dictionary that has just failed is left alone for a quarter of an hour. It was costing five seconds of every single word check to rediscover something already known, and on a server that cannot reach it at all, that was five seconds of every check forever. Any success clears it at once, so a service that comes back is used again on the very next word.
- The AI is allowed longer to answer, and is asked for a shorter reply. With the dictionary no longer eating the first five seconds there is room for it, and a check that used to take seventeen seconds and give up now goes straight to the source that can actually answer.
v7.38 · 2026-09-04 · a current model name
- The default Google model was one that has since been retired. Anyone who had not named a model of their own would have been refused by the provider. Updated, and the reply that names the retirement is printed as it comes, so the correction is always in the error itself.
v7.37 · 2026-09-04 · each failure reported against the thing that failed
- When both the dictionary and the AI failed, the two reasons were joined into one line and shown under both headings, so the AI appeared to have timed out when it had actually answered in a fraction of a second with a precise complaint. Each now reports its own error, including the provider's own words.
v7.36 · 2026-09-04 · not printing a secret back at you
- When the AI settings file was written wrongly, the operator page listed the names it found in it. The commonest way to get that file wrong is to swap a name and its value, which puts the API credential where a name belongs, so the page could print the secret onto the screen. Only recognised names are shown now, and the page says what the file should look like.
- Long diagnostic messages wrap instead of stretching the table past the edge of the screen and taking every other value with it.
v7.35 · 2026-09-04 · a word check that survives a dictionary being down
- The dictionary is no longer required. It was treated as a gate, so whenever the free service it uses was unreachable, every reported word was stuck waiting for a person, however obvious the word. If it cannot be reached the AI now decides on its own.
- A dictionary that answers "no entry" is still a refusal. The difference is between a dictionary that said no and one that said nothing, which were being treated the same.
- If neither can be reached, nothing is added or refused and the word still goes for review by hand, exactly as before.
v7.34 · 2026-09-04 · telling a blocked host from a dead service
- The operator page can now test several well-known addresses at once, so a host that blocks every outbound connection can be told apart from a single service being down or blocked. Those look identical from one failed request and call for completely different answers.
- When AI review is off, the page now says why: no file, a file in the wrong place, invalid JSON, or a missing provider or key. All four previously read as "you have not set this up", which is unhelpful to someone who just did.
v7.33 · 2026-09-04 · a word that could not be checked is checked again
- Reporting a word that is stuck now retries it. A word left unsettled because the check could not be completed was never looked at again, so it reported the same failure forever, however many times it was sent and long after whatever caused it had been fixed. Words that genuinely reached a decision are still decided once.
- The operator page's decision log now shows the technical reason a check failed, not only that it did.
v7.32 · 2026-09-04 · a locked admin page that says it is locked
- When no admin key has been set at all, the admin pages now say so and name the file to create, instead of refusing with no explanation. A wrong key still gives nothing away.
v7.31 · 2026-09-04 · deciding a reported word by hand
- Words the automatic review cannot settle can now be accepted or refused straight from the operator page, rather than needing a file edited and a deploy. A word accepted this way takes effect the next day and is recorded exactly like an automatic one.
- The operator page now requires the same key as the rest of the admin pages. It was reachable by anyone who knew the address, which was already too loose for a page showing player names, and would not do at all now it can change the dictionary.
v7.30 · 2026-09-03 · saying why a word check failed
- When a reported word cannot be checked, the operator page now says what actually went wrong rather than only that it did: a blocked connection, a firewall, unresolvable DNS, a missing certificate store, a rejected API key. Those all looked identical before, which made a working setup indistinguishable from a broken one.
v7.29 · 2026-09-03 · a faster answer on a reported word
- A word check that cannot reach the dictionary now gives up in about five seconds instead of twenty. It could not tell "this dictionary has no entry for that word" apart from "nothing answered", so it kept retrying a failure. Those are told apart now, and the answer comes back while you are still looking at it.
- If the dictionary is slow enough to use up the time budget, the rest of the review is skipped rather than leaving you waiting. The word is still accepted; it just is not promoted to the list puzzle answers come from.
v7.28 · 2026-09-03 · the home screen keeps up
- The home screen now redraws when you come back to it. On iPhone in particular, returning from a game restored the page exactly as you left it without re-reading anything, so a game you had just finished still showed as unplayed. Reloading from the profile menu was the only way to shift it. It now notices and redraws itself, and only when something has actually changed.
- The app looks for updates on its own. Until now the only thing that ever checked was the Check for updates button, so an installed app could sit on an old version indefinitely, missing fixes that had already shipped. It now checks quietly when you open or return to it, at most once every fifteen minutes, and still asks before reloading.
- A word can no longer be called wrong when it was never checked. In Chain Reaction, Letterbox, Skein and Syllable Stack, a dropped connection said "not in dictionary", which reads as "that is not a word". It now says it could not check. No turn was ever lost either way, but there is no reason to talk a player out of a word that was right.
- Chain Reaction accepts any valid chain that reaches the target word; it has never required the route we had in mind. If a solve went uncelebrated it was one of the above, not the chain.
v7.27 · 2026-09-03 · missing words, checked on the spot
- Report a missing word from any word game. There is a link at the foot of all nine of them, as well as in the profile menu. The number games do not have it, having no dictionary to be missing from.
- Your word is checked while you wait. First that it is not already accepted, then against a free English dictionary, British spellings first. Most reports are now settled in a few seconds instead of waiting for someone to read an email, and you are told what was decided and why.
- An accepted word starts working the next day, never the same day. Nothing is added to a board anyone is part-way through, and today's puzzles are left exactly as they are.
- Two lists, two bars. Any confirmed word is accepted as a guess. Being used as a puzzle answer is a higher bar and needs the word to be genuinely everyday, which is judged separately.
- Names, abbreviations and acronyms are refused, as are words too coarse for a game played with family. If you think a refusal is wrong, email dev@walker-jones.eu and a person will look at it.
- If the check cannot be completed, nothing is refused: the word goes for review by hand, as it always did. Every decision is logged, so a word can always be traced.
v7.26 · 2026-09-03 · clearing a board
- Finding every word in Hive or Word Weights now gets its own congratulations. It is a rarer thing than the top rank, which only needs the points that count towards it and can be reached with words still on the board. Clearing every last one gets a gold screen of its own rather than the ordinary one.
- Your home screen carries it for a week afterwards. A gold crest sits above the games naming what you cleared and when, and counts down the days it has left. Clear both and you get both. Do it again and that game's week starts over.
- The crest lives on the device you did it on, like the rest of your scores.
v7.25 · 2026-09-03 · what counts as playing Hive and Word Weights
- A day counts as played once you reach the first rank, rather than on your first word. Opening the board and finding one short word is not a day's play, and it was counting as one both on your home screen and in the community total. One good long word still clears it; a couple of four-letter words no longer do.
- Completed now means every word on the board. It previously meant the top rank, which is every point that counts towards the rank and leaves the rare words out, so a day could show as completed with words still unfound. Reaching Hive Queen or Heavyweight is still a celebration and still the top rank; it is simply not the same as clearing the board.
- Because these two count a streak on having played rather than on finishing, the first rank is now what keeps a streak alive on those days.
v7.24 · 2026-09-03 · checking what a device has recorded
- The device check on the operator page now lists what that browser has actually recorded for today, game by game, and what the home screen would therefore show for each. It is for working out why a game that was played is not showing as played: it separates "the record never reached this browser" from "the record is there and the home screen is not drawing it", which look identical from the outside.
v7.23 · 2026-09-03 · the rank you reached, in past games
- Word Weights past games now show the rank you reached that day, next to your score. Hive already did; Word Weights only showed the number, which does not tell you how the day went without knowing what was available. Both use the same ladder and the same findable pool as the live game, so looking back agrees with what you saw at the time.
v7.22 · 2026-09-02 · the celebration could stop itself appearing
- Confetti could take the whole win screen with it. It was set off while the result was still being built, well before that result was put on the screen, so anything that upset the confetti stopped the celebration appearing at all. A browser that blocks canvas drawing, which some do to prevent tracking, would do it. The confetti now runs last, after the result is up, and cannot stop anything if it fails.
- Syllable Stack shows its result again when you reopen a solved day. It never did, so a finished puzzle looked no different from an unfinished one. Countdown and Letterbox already worked this way.
v7.21 · 2026-09-02 · points by category in Progress
- The Progress panel in Hive and Word Weights now shows the points you have earned in each category as well as the words left in it. Normal words read against the rank target, since those are what the rank is measured on, so the card says something like "23 of 76 pts". Rare finds are a bonus with no target, so theirs is shown simply as points in hand.
v7.20 · 2026-09-02 · backspace deletes what you selected
- In Letterbox and Numble, pressing backspace on a square that has something in it now clears that square and leaves the caret there. Tapping a square to correct it and then having its neighbour deleted instead was the wrong way round. On an empty square it still steps back and clears the one before, which is what typing along a row wants.
v7.19 · 2026-09-02 · Quartet showed a blank board
- Quartet stopped working entirely this morning: the board rendered empty. A change to how the day is recorded, made yesterday, put two settings in the wrong place in the page's code, and a mistake like that stops all of that page's code running rather than just the part that is wrong. Fixed, and the release check now loads every page and confirms its code runs, which is what would have caught it.
v7.18 · 2026-09-02 · suggest a word
- If a game refuses a word you know is real, you can now send it in from the profile menu and it will be looked at by hand. It tells you straight away whether the word is in fact already accepted, in which case the game refused it for some other reason, such as not fitting that day's letters.
- Repeated suggestions of the same word are counted rather than piling up, and the same box serves every game.
v7.17 · 2026-09-02 · the dictionary, thinned out
- 22,482 words removed, about a fifth of the list. The test was a measured frequency of zero: the word appears nowhere in the books, subtitles, web text and encyclopaedia entries the frequency data is drawn from. SEWELLEL, TASIMETER, SULPHATHIAZOLE, FERBAM and thousands like them were accepted as valid play and showed up in the lists of words you missed.
- Uncommon words are not the same as unused ones, and they stay. ASPHYXIATE and NIGHTSHIRT are rare in writing but perfectly real, so they are still accepted. Cutting to only common words would start refusing things you would fairly expect to work, which is a worse experience than an odd word appearing in a list. Obscure words also already score as a bonus rather than counting towards your rank, so leaving them in costs you nothing.
- Every word now has a frequency. The old table was built by walking a top-of-the-list dump that stopped part way down, leaving 44% of words unscored and impossible to tell apart from words that genuinely never occur. Each word is now measured directly, and comparatives and superlatives are scored from their base word, so SLEEPIER counts as the everyday word it is rather than as an oddity.
- The list was, and remains, British English. The strange words were never American spellings, just words nobody uses.
v7.16 · 2026-09-02 · Hive pangrams you might actually get
- The pangram now has to be a word people know. It was allowed to be anything with the right seven letters, on the reasoning that only the letter set mattered. It doesn't: the pangram carries a +7 bonus and is counted into the pool your rank is a percentage of, so an unguessable one raised the bar with points nobody could collect. SATYAGRAHA on Monday and PAPERHANGER on Tuesday were both that. Sixty days of puzzles now produce none.
- Days already dealt keep their letters but get a fair bar. Changing the board would throw away a round in progress, so instead an obscure pangram simply stops counting towards the rank and becomes a bonus like any other rare word. That can only lower the bar, never raise it.
v7.15 · 2026-09-02 · completed days, tighter streaks, free typing
- A day now shows as completed as well as played. Played means you had a go; completed means you finished it, which is solving it for a game with an answer and reaching the top rank for Hive and Word Weights. The home screen marks the difference and your stats count both.
- Streaks need the answer now. Letterbox and Quartet used to extend a streak on a losing round, and Numble extended one on a single guess, so turning up was enough. Games with an answer now need that answer. Hive, Word Weights and Bullseye are scored rather than solved, so those keep counting a day you played. Streaks already earned are left alone; the tighter rule applies from today.
- Type into any square, in any order. In Numble and Letterbox you can now put what you know where you know it goes, and leave the rest blank while you work: if the answer ends
=15orCKS, write that first and fill in around it. Before this, a square could only be filled once every square to its left was. - Skein no longer serves three-letter words. Eight puzzles in the catalogue had one, including yesterday's CUP; the packer was supposed to require four letters and never checked. It does now, and those eight are stepped over rather than deleted, so every other day keeps the puzzle it was played with.
v7.14 · 2026-08-29 · another go at Countdown
- A declared round no longer ends your day. If you didn't reach the target exactly you can clear the board and try again, as often as you like. The closest you ever get is what is recorded, so a second attempt can only improve the day and never costs you the one before it. An exact answer still ends the round, and still is the only thing that extends a streak.
- The worked solution is no longer shown when you fall short. It used to appear the moment you declared, which would have made a retry pointless. It is on the Past games page from the following day, which already refuses to show anything newer than that.
v7.13 · 2026-08-28 · Numble tweaks
- Numble is now available to everyone rather than one player.
- Tap a square to put the cursor there and type over it, so one wrong character can be fixed without retyping the rest.
- Dropped the length box from the top of the board: it read 8 every day, which told nobody anything. Guesses and result are what is left.
v7.12 · 2026-08-28 · Numble
- A new daily game: guess a hidden calculation eight characters long in six tries. Every guess has to be a sum that is actually true, and each tile comes back green, purple or grey to say whether that digit or symbol is in the right place, somewhere else, or not in the answer at all. Order of operations applies, and a rearrangement such as 20+10=30 counts for 10+20=30 unless you turn that off.
- Tap any square to put the cursor there and type over it, so a single wrong character can be corrected without retyping the rest, the same as Letterbox.
v7.11 · 2026-08-25 · a board that rejected every word
- If you opened Word Weights before yesterday's update and again after it, the tiles you saw were the old day's letters while the word list had been re-dealt, so every word you tried was refused, including words plainly spelled out on the board. Your device remembers the tile order so shuffling survives a reload, and it was being trusted without checking it was still the same day's letters. It now is, and any words found on a rack that no longer exists are dropped rather than counted against a board that cannot make them. Hive has the same guard.
v7.10 · 2026-08-25 · Quartet's blue groups were gold
- The blue tier was drawn in the page's own accent colour, and each game's page repoints that to its own colour. On Quartet's page, which is gold, every blue group came out gold: three of yesterday's four hard-mode rows looked yellow, and in easy mode the blue row was nearly indistinguishable from the yellow one. The four tier colours are now fixed and no longer follow the page.
- Deepened green and blue slightly in the light theme, where the group name sat close to the readable limit against white.
v7.9 · 2026-08-25 · Quartet colours and past boards
- Hard mode lost its colour grading. Its four groups are drawn from the blue and purple tiers, but the way they were picked meant all four came out the same colour eight days in ten, so the rows carried no difficulty information at all. Fixed, and the mix is now genuinely varied. Easy mode was never affected: it is always yellow through purple.
- Past Quartet games showed the wrong board if you played hard mode. The answers view only ever loaded the easy puzzle, which is a different set of groups entirely, and hard-mode progress could not be shown at all. Both boards are now available, with a switch between them when you played both that day.
v7.8 · 2026-08-25 · you can see when you are playing together
- Hive and Word Weights now show a badge beside the game name while a shared room is open, with the initial of each player in the same colour their words are tagged with in the found list. It is absent when you are playing on your own. The board looks the same either way, and the only sign of a team was inside a panel that is usually collapsed, so it was possible to play a whole round without noticing. A room nobody has joined yet shows as waiting rather than claiming company.
v7.7 · 2026-08-25 · the eight-letter word, and clearer answers
- Word Weights racks that could not spell an eight-letter word. Days worked out before the rework kept the rack they were originally dealt, from the old version that promised no such word, and those were still being served. Any day not yet played is re-dealt properly. A day already in the past keeps the rack it was played on, since the history has to match what you actually saw, and simply records that it had no full-rack word.
- Harder words are marked in the answers. Both Hive and Word Weights now show ✶ against the harder words in the lists of what you found and what you missed, with a note saying what it means. They score as a bonus and are never needed for the rank.
- Word Weights shows every word you missed, not the fifty highest-scoring. Since score tracks length, that cut was hiding the short ordinary words and keeping the long obscure ones, which is the wrong way round.
v7.6 · 2026-08-24 · easier invites
- Invites now lead with the room code rather than the link. A shared link cannot be made to open an installed app: on iPhone a home-screen app cannot claim web addresses at all, and on Android a messaging app's built-in browser bypasses it. The code works from any device however the message was opened, so it comes first and the link follows as a convenience.
- The join box now accepts the invite link as well as the code. Paste either.
- The whole invite, code and link together, is sent as one message. Sharing used to hand the link and the wording to the messaging app separately, and some apps, iPhone especially, keep the link and throw the wording away, which is where the code was.
v7.5 · 2026-08-24 · a way to tidy the server
- Added an operator page that compares the site folder against the list of files the release actually consists of, and reports anything left over from an older version. It can delete them, but only after showing you the list and only on a deliberate second request. Nothing outside the site folder can be reached from it, so the counters and the play log are out of its scope entirely.
v7.4 · 2026-08-24 · Hive answers list what you missed
- The Hive answers used to list every word for the day with the ones you found tinted a slightly different shade, which meant picking the difference out across ninety pills. It now lists only the words you missed, the way Word Weights does, with the count against the day's total. What you found is already in its own panel above.
v7.3 · 2026-08-24 · iPhone fixes and fuller word lists
- No more magnifier on iPhone. Resting a finger on a letter in Letterbox or Skein popped up the iOS text magnifier, which looks like the page zooming. Hive escaped it only because its letters are buttons rather than plain text. Every game's letters and tiles now decline to be selected, so a slow tap does nothing but play.
- Highlights now show on iPhone. In past games, found words, solved cipher letters and the Letterbox answer were marked in a way Safari quietly ignores while Chrome accepted it, so Android showed the coloured markers and iPhone showed nothing. Eight places were affected across four games.
- Confetti on Android. Turning off animations system-wide, which many people do for battery, was switching celebrations off entirely. A shortened, still version now shows instead. Also fixed a case where the confetti could be measured as zero-sized and never appear.
- Word lists no longer clip. The found-words list in past games was a small box that showed about four words and hid the rest. It is now a panel you can collapse, showing everything, sortable A to Z or newest first.
- Word Weights past games show the whole team. As in Hive, everyone's words appear with the initial of whoever found them, and a team-mate's late session is pulled in when you open that day.
v7.2 · 2026-08-24 · the puzzle catalogue is no longer public
- The packed puzzle files were downloadable from the site, which meant every future Skein and Quartet puzzle and its answers could be read in advance by anyone who knew the address. They are now refused over the web. The games are unaffected: the site reads those files from disk, which this does not change.
v7.1 · 2026-08-24 · clearing out what is no longer used
- Removed around 300 lines of code and styling left behind by earlier rewrites: the old start screen, the timed Word Weights round, and seven library functions nothing called any more. Nothing changes for you; the pages simply carry less.
v7.0 · 2026-08-24 · the reason plays stopped being counted
- Found it. The function that gives each device its identity was deleted by accident in v6.0, along with a piece of team-play code it happened to sit next to. Two things still called it: the ping that records a play, and the report of your play history. Both treat any failure as "no count this time" and say nothing, so from the moment v6.0 went up, every community play count silently did nothing. Your own stats were never affected, which is why one worked and the other did not.
- v6.9 made it worse for a few hours, and this is the fix for that too. Adding the device check referred to the same missing function from the top level, so the whole shared script failed to load and every page's interactive behaviour stopped. If anything looked broken, this release restores it.
- Added a start-up check that loads the shared script and confirms it works before a release goes out. The existing check only confirmed it could be read, not that it ran, which is exactly the gap this fell through.
v6.9 · 2026-08-24 · a clearer look at a device
- The device check now shows its working: what your device has recorded as played, and exactly what the server says back when it reports it. The previous version reported "nothing to send" both when there was nothing and when the sending failed, which hid the difference that mattered.
- Fixed the all-time figure returned when a device reports its history. It was adding two counts of the same plays together, giving a number more than twice the real one. Only that one response was affected, not the count anyone sees.
v6.8 · 2026-08-24 · reporting a play the moment it happens
- Your device now reports its play history again as soon as you finish another game, rather than once a day. Finishing a game after the day's report had already gone meant it sat unreported until tomorrow, which is exactly how a completed game could be missing from the community count all evening.
- The operator stats page can now test a device directly: what that browser has played today, what it has told the server, and whether it can reach the server at all. It changes no counts.
v6.7 · 2026-08-24 · plays can no longer go missing
- Today's community count was ignoring most of what it knew. A play reaches the server three ways: the live ping when you finish, an append-only log, and the list your device keeps of what it has played. The all-time figure used all three, but today's figure only ever read the live ping, so games recorded by the other two showed as zero. Today is now worked out the same way every other day is.
- A dropped request no longer loses a play permanently. The marker saying "this device played this game today" was written only after the ping succeeded, and the ping fires once per game per day, so a single failed request, an installed app opened on a poor connection is enough, lost that play for good. The marker is now written when you finish the game, which is when it becomes true, and the count catches up afterwards.
- Devices report their play history once a day rather than once ever, so anything the live ping missed is picked up within the day. Reporting more than once cannot inflate anything: a game counts once per device per day however many ways the server hears about it.
v6.6 · 2026-08-24 · tidier personal stats
- Dropped the Best column from your stats table. Personal bests were removed from the games themselves back in v3.9, because each day's puzzle sets its own ceiling and comparing across days means nothing; the column had outlived them.
v6.5 · 2026-08-24 · correcting the community totals
- Removed 1,150 plays that never happened. Two device records used while testing the count-recovery code reached the live site, inflating the all-time figure by more than half. They are deleted automatically and the totals recomputed from the real devices only, so the number should drop to roughly 940. That is the accurate one.
- Every device contributes its play history once more on its next visit. A play made today may have been recorded in a location the site has since moved on from, and a device only ever reports each play once, so today could read zero even though games had been played. Re-contributing fills that back in.
v6.4 · 2026-08-24 · protecting the data folder wherever it lands
- The runtime data folder now blocks web access to itself wherever it ends up. It was only doing so when it sat inside the site folder, on the assumption that anywhere else was above the web root. That holds only for a site installed at the top level; this one is not, which left the play log, and the names and IP addresses in it, one guessable address away.
- The operator stats page now asks the web server whether that folder is genuinely unreachable, rather than assuming it, and says plainly if it is exposed.
v6.3 · 2026-08-24 · locking down what gets uploaded
- The deploy uploads the whole folder and cannot skip anything, so the files that are not web content now refuse to serve themselves. The build scripts in
tools/and the content indata/are denied over HTTP, dotfiles are refused so an uploaded.gitcannot be browsed, and every build script refuses to run unless started from a command line. - The admin page is now gated on the server. It was protected only by a browser flag, while the form behind it wrote to the puzzle source files and ran the packer for anyone who found the address.
v6.2 · 2026-08-24 · the play log becomes the safety net
- The community count is now reconciled against the play log. Every counted play has always written twice, once to the counter file and once to an append-only log, but only the counter file was ever read. If that file was reset or replaced, the count showed zero even though the log plainly listed the plays. Both are now merged day by day, taking whichever saw more, so a lost counter file no longer loses the count.
- The operator stats page reports storage health: where the app is writing, whether it can write there, whether that location is exposed to a deploy, when each file was last written, and how many plays the log holds today.
v6.1 · 2026-08-23 · deploy-proof storage
- Everything the site writes (play counters, team rooms, the puzzle cache, the play log) now lives in a folder beside the site rather than inside it. A deploy that mirrors the site folder can no longer see it, so there is nothing to exclude and nothing to remember. This is the third and last move for this data: keeping it anywhere inside the uploaded folder meant it could be deleted by an upload, which is how the counters were lost.
- It also now sits above the web root, so the play log cannot be requested over the web at all.
- Fixed the community counter returning malformed data on PHP 8.5. A deprecation notice was being printed into the middle of the response, so anything reading the count saw broken JSON rather than a number.
v6.0 · 2026-08-23 · Word Weights rebuilt
- The timer and the target are gone. There is no longer a 3-minute Challenge and a Relaxed mode, just one round you play at your own pace. Word Weights now works the way Hive does: find as many words as you can and climb ten ranks, from Feather to Heavyweight.
- Every rack spells a word using all eight letters. The rack is built out of one rather than searched for afterwards, so it is guaranteed, and it is always a word people actually know. Eight letters at the ×5 length bonus makes it the day's big prize, and it always counts towards your rank however obscure it is.
- Ranks, scores and word counts work exactly as they do in Hive, measured against the day's findable words: the common ones plus the full-rack word. Rare words still score as a bonus but are never needed. A Progress panel shows what each rank costs and how far the next one is.
- Tiles dim as you use them, so the one-tile-one-use rule is visible instead of something you track in your head.
- Joining by link now lands you on the board. A teammate opening an invite used to see their partner's words arrive with no letters to play, because the rack stayed hidden until a mode was picked. There are no modes now, so the rack is simply there.
- The found-words list shows everything, newest first or A to Z, with no scroll box of its own. It previously cut off after a handful of words, which made a team's shared list unreadable.
v5.12 · 2026-08-23 · punctuation
- Removed every em dash from the app, in all three spellings it was written in (the character itself,
—and the JavaScript escape). Sentences were repunctuated with a colon, semicolon, full stop or brackets according to what each one was doing, rather than swapped for a comma, which would have left comma splices behind. - Where an em dash was the "no value yet" glyph in a scoreboard cell rather than punctuation, it is now a plain hyphen.
v5.11 · 2026-08-23 · calmer game screens
- Every game now has one Rules & how to play panel instead of two separate dropdowns, in the same style Hive uses. Same words, one thing to open.
- The date, the light/dark switch and the profile button have gone from the game screens. They are settings rather than gameplay, and they belong on the home screen, which is one tap away. A past puzzle still names its date in the banner above the board.
- Trimmed the empty space above the Wordwright logo, which was over 50px on every page. The room the status bar needs on an installed app is now asked for explicitly rather than approximated with padding.
v5.10 · 2026-08-22 · the community count, properly
- The all-time figure was still inflated after v5.9. When the counter was lost, a hand-set placeholder for the missing history was written straight into the live tally, where nothing marks it as a guess. v5.9 then used that tally as a floor, which kept the placeholder alive on top of the real history recovered from players' devices. Once any device has contributed, the figure now comes from the dated day rows alone: every genuinely counted play has one.
- The operator stats page shows its own arithmetic: every stored bucket, what it contributes, whether it was used or ignored, and how much each contributing device reported.
- The what's-new splash is no longer eaten by the update it announces. It waited for the automatic update to reload the page, and it now counts as read only when you dismiss it, not merely when it appears.
v5.9 · 2026-08-22 · accurate community counts
- Fixed an inflated all-time community figure. The counts recovered from players' devices overlapped the plays the server had already counted since the rebuild, and the two were being added together, so every recent play was counted twice. The two sources are now merged day by day rather than summed.
- Sunday's Countdown is a random difficulty: after six days of a known shape, it is the one day you don't know what you're getting. Monday to Saturday are unchanged.
- A one-off welcome screen for players returning after a big update, with a pointer to the change log.
v5.8 · 2026-08-22 · clearer tiles
- Every game tile on the home screen now has a visible outline. Ordinary tiles use a neutral edge; the ones flagged New, Updated or New 2P keep their game's colour, so the outline itself tells you which is which.
v5.7 · 2026-08-22 · profile menu fixes
- The profile menu can be scrolled. It had grown taller than the screen, and the lower half (hidden games, backup, updates) was unreachable on a phone.
- Opening it no longer pops the keyboard up over it.
v5.6 · 2026-08-22 · rebuilding the lost counts
- The community counts are being rebuilt from your own device. The server's tally was lost, but each device kept a dated record of every play it reported. Those are now sent back once, restoring the real all-time figure and the day-by-day history, not an estimate.
- Play records. Finishing a game is now logged on the server with the time, the game, your display name and your IP address. See What do you record about me? above; leave your display name blank to be recorded as "anonymous".
v5.5 · 2026-08-22 · a fair Word Weights target
- The target was unreachable. It was the sum of the six highest-scoring words, which means the six longest, and long words are almost always obscure ones. A recent target of 173 was built from FIBULA, FLUKY, BALKY and KALIF; using words you'd actually think of, the most you could reach was 116. Targets are now built from findable words, so they can be hit.
- "Findable words" replaces "words possible". The old count included thousands of words nobody would produce. It now shows how many are realistically findable.
- Both rounds are kept. Play the Challenge and then Relaxed and both results are saved, and both show in past games.
- Rare words still score in full. They're a way to overshoot the target, never a requirement.
v5.4 · 2026-08-22 · safer deploys
- Everything the site writes (play counts, team rooms, the puzzle cache) moved out of
data/into its own folder, so uploading new puzzles can no longer wipe the community counters. (It moved once more in v6.1, to a folder beside the site.) Existing data moves itself across on the first visit after the update.
v5.3 · 2026-08-22 · past games back in reach
- Past games from every game. A Past games & solutions link now sits at the top of each game page, next to All games. The archive is no longer only in the footer.
- Unhiding is where you'd look for it. The profile menu (the person icon, top right) now has a Home screen section listing anything you've hidden, with a Show all games again button. Still restorable from Stats too.
v5.2 · 2026-08-22 · make it yours
- Hide games you don't play. Tap a tile's i and choose Hide from home. It leaves the home screen and comes out of your daily count too, hide two and you'll see "3 of 8", not "3 of 10". Bring any of them back from the Stats panel.
- More in Stats. Your longest streak per game sits alongside the current one, and a You / Everyone switch shows how often each game is played across all players, today and all time.
- A softer voice. The greeting and headings now use a warm serif instead of the harder geometric face they had.
v5.1 · 2026-08-22 · Word Weights together
- Two-player Word Weights. Relaxed mode now has the same team play as Hive: open a room, share the code or the link, and words played on either device land on the same board with the score as your combined total. Each word shows who played it.
- Not offered in the 3-minute Challenge: a shared board would make the clock meaningless.
v5.0 · 2026-08-22 · Countdown gets a week
- Difficulty now follows the week. Every Countdown round was equally demanding, needing five or six of the six numbers. Monday is now gentle and it builds to a tough Saturday, with Sunday easing off, so there is always a day to get your streak back after a bad run.
- You can see which day you're on. A Gentle / Easy / Firm / Tough tag sits under the target, and shows in past games too.
- Puzzles already cached keep the round they had: a day in play never changes underneath you.
v4.9 · 2026-08-22 · a calmer frame
- Header and footer. Softer mark, lighter type, and quiet round buttons instead of boxes; the footer's hard rule is now a line that fades out at both ends, with the links given room to breathe.
- Word Weights taps. Fast taps could be swallowed on a phone: the browser was holding each one to see if a double-tap was coming. Fixed, and the letter tiles are bigger, using the full width of the screen.
v4.8 · 2026-08-22 · the start screen, properly
- Icon tiles, two to a row. The ten games are now compact tiles (a big icon in the game's own colour and its name) instead of ten tall panels of description. Tap the tile to play; tap the i for what the game is.
- Stats moved out of the way. Streaks, plays and best scores now live in a Your stats panel below the games, with a per-game breakdown, rather than being scattered across every card.
- Today at a glance. A single line and a bar that fills: how many of the ten you've played, and your streak.
- The date has gone from the top of the home screen, you know what day it is.
v4.7 · 2026-08-22 · celebrations, and a Letterbox progress panel
- Completing a challenge now feels like it. Reaching Hive Queen, hitting a Countdown target exactly, clearing a Skein grid, solving a Quartet without mistakes, cracking a cipher with no hints: each gets its own celebration screen with a badge, confetti and a line about what you actually did, instead of the same summary as an ordinary round.
- Letterbox progress panel. A new drop-down shows how many words could still be the answer, given only the clues your guesses have revealed. The count narrows as you play; the words themselves are listed once the round is over.
v4.6 · 2026-08-22 · new home screen
- A proper landing screen. The dashboard was ten identical panels, each with a paragraph of text. It now opens with your day at a glance, a progress ring for today's games, your streak, and a running total, above compact tiles that carry just the game's icon, name and one line.
- Descriptions on demand. Every tile has an i button: tap it for what the game is and how it works. Handy for anyone new, out of the way for everyone else.
- Movement. Tiles arrive in sequence, the ring fills, the numbers count up, and each tile lifts in its own colour as you point at it. All of it is skipped if your device is set to reduce motion.
v4.5 · 2026-08-22 · Countdown, and a fresh look
- New game: Countdown. The numbers round from the show. Six numbers, one target, and you work it a step at a time: tap a number, an operation, then another number, and the result joins the row for the next step. Today's target is always reachable exactly: the numbers are drawn first and the target is chosen from what they can actually make. Scoring follows the show (10 exact, 7 within five, 5 within ten), but only an exact answer extends your streak.
- Seeing answers forfeits the puzzle. Revealing a past day's answers now means that puzzle can't be played or continued, on any game. The past-games page says so instead of offering a Play link.
- Word Weights. Playing today's rack in Relaxed mode closes the timed Challenge for that day: you've already had time to study the letters.
- Countdown past games. Countdown now has the same past-games view as the rest: the numbers, your working replayed step by step, and a worked solution behind the answer gate.
- A new look. Wordwright now has its own typeface, and each game owns its colour. Hive is amber, Skein purple, Countdown blue, rather than every page sharing the same blue-grey.
v4.4 · 2026-08-22 · tidier Hive
- Hive. The team room code, Rules and How to play now use the same collapsible panel style as Found and Progress, so the page reads as one consistent stack instead of two different kinds of drop-down. The room code shows in the Play together heading, so you can read it out without opening the panel.
v4.3 · 2026-08-22 · Hive progress panel
- Hive. A new Progress panel below the found list shows how many normal and rare words are still out there, the exact score every rank demands, and how many points you need for the next one. The heading carries the headline, "(13 to Forager)", so you can read it without opening the panel.
v4.2 · 2026-08-14 · fewer misfires
- Skein. Using a hint now asks you to confirm first, so a mis-tap can't spend one. Hints are earned three bonus words at a time and counted on your final score.
- Letterbox. Fix a single wrong letter without retyping: tap any cell in the row you're typing to move the caret there, then type to replace just that letter. Backspace now deletes at the caret rather than always at the end.
v4.1 · 2026-08-13 · Word Weights overhaul
- Bigger letters. The rack is now a four-wide grid of large square tiles instead of a row of small ones, easier to hit at speed.
- A proper finish. However the round ends (the timer, reaching or passing the target, or tapping End round), you now get a summary screen with the target, your score, the difference, words played, time and mode. Previously it was just a message that slid away.
- Bullseye. Land exactly on the target and you get a celebration screen with confetti falling down the page. (Skipped if your device is set to reduce motion.)
v4.0 · 2026-08-12 · sort your words, and never lose a team-mate's
- Sort the found-words list. Hive, Word Weights and Bullseye now have an A–Z / Newest toggle above the list. Your choice is remembered and applies to all three.
- Who found what. In a Hive team game each word now shows the finder's name as well as their coloured initial, in the game and in past games.
- Late-night catch-up. If a team-mate carried on playing after your device last synced (an evening session you only see the next morning), opening that day in Past games now pulls their words down, merges them in and corrects the recorded score. Rooms are kept for 30 days so this works well after the fact.
v3.9 · 2026-08-11 · Quartet hard mode and a round of polish
- Hundreds of new puzzles. Skein grew from 46 to 370 boards and Quartet from 33 to 353, roughly a year of fresh puzzles in each, with no repeats.
- No repeats. Skein, Quartet, Syllable Stack and Decrypticon never serve a puzzle you've already finished. If a game has nothing new for you today its card is marked not available on the dashboard.
- Quartet hard mode. A second daily board built only from blue and purple tier groups, mixed from across the puzzle collection, with no gentle categories. Easy and Hard each have their own board and saved progress; switch with the buttons above the grid.
- Word Weights. In Challenge mode the round now ends the moment your score reaches or passes the target: the final word decides your precision. Word lists (found and missed) are now sorted alphabetically.
- Letterbox. New "Your games" panel below the rules: every finished round on this device with date, mode, and guesses to solve. The empty guess grid also has stronger contrast.
- Personal bests removed for Hive, Skein, Chain Reaction, Word Weights, Quartet, Letterbox and Syllable Stack: each day's puzzle sets its own ceiling, so cross-day bests were meaningless. Decrypticon and Bullseye keep theirs (stable scoring scales).
- The "NEW" badges are gone; Hive's card says "Updated" instead.
- The profile/settings dialog now shows a brief what's-changed log per version.
v3.8 · 2026-08-11 · play counts on the dashboard
- Each game card on the dashboard now shows how many times that game has been played today across all players (🌍). Same anonymous community counter as before, now visible at a glance.
- The community counter now keeps a per-day history behind the scenes (last 90 days).
v3.7 · 2026-08-09 · clearer Skein word count
- Skein. The word tally now counts every word in the grid, spangram included: a puzzle with 8 theme words and a spangram reads "0/9", matching what players actually find. Previously the spangram was excluded from the count (it only appeared in its own indicator), which read as an off-by-one. Past-games view matches.
v3.6 · 2026-08-07 · double-submission fix
- Bug fix. In Letterbox, Chain Reaction and Syllable Stack, pressing Enter (or tapping submit) a second time while the dictionary check was still in flight could submit the same word twice, in Letterbox that burned two of the six turns on one word. Submissions are now guarded while a check is running.
v3.5 · 2026-08-04 · fairer Hive ranking
- Ranks now measure findable words. Hive's ladder previously demanded a percentage of every valid word's points, including dictionary-dwellers like MNEME and SEMEME, which made the top ranks effectively unreachable on many days. Ranks now run against the day's findable pool: commonly known words (judged by real word-frequency data) plus the pangram. Reaching Hive Queen means finding all the findable points.
- Rare words become bonuses. Obscure words still score in full and now carry a ✶ marker and a "Rare find!" flourish. They speed you up the ladder and can cover for missed common words, but are never required.
- Perfect hive. Finding literally every word (the old Hive Queen condition) is now its own separate celebration beyond Queen, and it alone reveals the pangram.
- The found-words count and past-games answer lists are unchanged, with rare words marked there too.
v3.4 · 2026-08-04 · Hive team-play polish
- Teammate updates where you're looking. "★ Sarah found NUMBEST (+7)" now appears in the word-entry box instead of a fleeting popup, and stays until the next update. Rejection messages ("not in the word list") are unchanged.
- Collapsible found-words list. The Found panel now folds away (closed by default) so the board keeps the focus; tap the heading to open it. Your choice is remembered for the day.
- Names first. Joining a room, including from a shared link, now asks for your name before you enter, so finds are never attributed to an anonymous "Player".
- Fairer stats in team games. A joined game counts as that player's own play, and daily history now records the day's final score rather than the score when the play was first logged (this also fixes the same quirk for solo Hive).
v3.3 · 2026-08-03 · Hive team play, automatic updates
- Hive. New Play together mode: start a room from the button under the found list, share the 5-letter code or invite link, and a teammate on their own device joins the same board. Words found by either player appear on both screens within seconds, each tagged with a coloured initial showing who found it, and you climb the ranks on your combined score. Rooms last for the day; solo play is unchanged.
- Automatic updates. New versions now install themselves, with no more "New version ready" banner. An update found while you're mid-game waits until you switch away from the tab, so it never interrupts play. The manual check remains in the profile menu.
v3.2 · 2026-07-31 · less repetition, fairer puzzles
- Chain Reaction. Easy mode had collapsed onto about 16 quirky start words, so the same puzzles kept recurring; start and target words now vary widely across the whole word list. Repeated-letter words like PIZZA are also no longer forced as the start or target, which had made some chains feel impossible.
- Syllable Stack. The pool grew from 40 to 81 puzzles, and no puzzle now repeats within about two weeks. Previously a puzzle could reappear only a day or two later at a cycle boundary. The same spacing fix was applied to Decrypticon, Quartet and Skein.
- Hive. Puzzles are capped at around 90 possible words instead of occasionally ballooning past 300, which many players found off-putting. Ranks are unaffected, as they scale to each day's available points.
v3.1. 2026-05-07 · gated answers on past games
- Past games now hide the solution for any day you didn't play. The page shows the puzzle plus three options: Play, See answers, or Back. Once you've played, the full review opens automatically as before.
- Decrypticon's past-games view now shows the original cipher text alongside the decoded story.
- Decrypticon now shows the story's title as a hint above the cipher during play, giving you a topic to anchor your guesses.
v3. 2026-05-02 · past games, hard mode, community counter
- Past games. Each dashboard card now has a Past games button that lets you replay or review any puzzle from the last 30 days. Replays don't affect streaks or stats.
- Chain Reaction Hard mode. A second mode requiring three shared letters per link. Easy and Hard run independently, each with its own start word, par, and best score.
- Per-mode best scores. Word Weights now tracks separate bests for the 3-minute Challenge and Relaxed mode; Chain Reaction tracks separate bests for Easy and Hard. Shown on each game's page.
- Community play counter. The dashboard and every game page show how many times the game has been played today and all-time across all players. Anonymous, deduplicated per device.
- Syllable Stack. Pool grew from 10 to 40 puzzles, and the picker now guarantees no repeats within each 40-day cycle.
- Decrypticon. Pool grew from 20 to 60 stories, with the same no-repeat cycle picker.
- Bug fix. Chain Reaction's puzzle generator had a 32-bit overflow bug that occasionally produced sample solutions with invalid links. Pars and shared-letter checks are now correct.
- Share text now includes the mode for Chain Reaction and Word Weights.
v2. 2026-04-29 · touch and relax mode added
- Word Weights: tap-to-build word entry, no keyboard required
- Word Weights: new Relaxed mode (no timer) alongside the 3-minute Challenge
- Bullseye Words: tap-to-build word entry, no keyboard required
v1, initial release
- Five daily word games: Chain Reaction, Word Weights, Decrypticon, Syllable Stack, Bullseye Words
- Personal dashboard with streaks, best scores and daily progress
- Install as a PWA on Android, iOS or desktop
- Local-only data with JSON backup and restore
Have a problem or idea?
The Support page has the contact email and a link to support the project. Bug reports, requests, and suggestions are welcome.