Skip to main content
In daily mode, Wordgrid generates a fresh 3×3 puzzle every calendar day. The puzzle is derived deterministically from the date, so every player in the world solves the exact same board on any given day.
All players worldwide get the same puzzle for each date.

How the board is generated

Each day’s board is seeded from the current local date string in YYYY-MM-DD format. The game calls getTodayDateStr() to obtain that string, then feeds it through two functions to produce a deterministic random number generator:
  1. strToSeed(dateStr) — hashes the date string into a 32-bit unsigned integer using an FNV-1a-style multiply-xor loop.
  2. mulberry32(seed) — wraps that integer in a fast, high-quality 32-bit PRNG closure.
Every call to the resulting RNG produces the same sequence for a given date, so the category selection, board layout, and candidate word picks are identical for all players.
1

Date string is read

On page load (or when switching to daily mode), getTodayDateStr() returns today’s local date as YYYY-MM-DD, e.g. 2026-04-01.
2

Seed is derived

strToSeed("2026-04-01") converts the string to a 32-bit integer seed through a deterministic hash.
3

PRNG is initialised

mulberry32(seed) returns a seeded RNG function. All subsequent random choices — category shuffling, word ranking, candidate selection — use this RNG.
4

Board is built

generateDailyBoardForDate(dateStr) calls buildBoard(rng) with the seeded RNG, producing a deterministic 3×3 grid of row/column category pairs and best-answer words.
While playing in daily mode the sidebar displays:

Board ID

Shows the date string YYYY-MM-DD. This doubles as the unique identifier for today’s puzzle and the leaderboard key.

Countdown timer

A live HH:MM:SS countdown to midnight (local time), when the next daily puzzle becomes available.

Saving and resuming progress

Your progress is automatically saved to localStorage after every valid guess. The storage key is:
wordgrid:daily:YYYY-MM-DD
For example, today’s progress is stored under wordgrid:daily:2026-04-01. You can close the tab, reopen the game, and pick up exactly where you left off — guesses, scores, and revealed cells are all restored. Because each day uses a different key, switching to a new day’s puzzle never overwrites a previous day’s save.
Past daily puzzles remain accessible. If you started but did not finish yesterday’s board, you can navigate back to it — the date-keyed storage means your progress for that date is still intact as long as you have not cleared your browser’s localStorage.

Leaderboard

After completing the daily board (all 9 cells revealed), you are offered the option to submit your final score to the shared leaderboard for that date. The leaderboard is scoped per date, so scores from 2026-04-01 only appear on the 2026-04-01 leaderboard. You can also open the leaderboard at any time during play using the leaderboard button in the dock. The top 10 scores for today are shown, sorted highest first.

Restrictions

Reroll disabled

The reroll button is disabled in daily mode. Every player must solve the same puzzle — generating a new board would break that guarantee.

One puzzle per day

The board resets at midnight local time. A new date string produces a new seed, which generates an entirely different board.

Build docs developers (and LLMs) love