Launched November 12, 2026. One shared puzzle opens daily at 08:00 UTC.
Snugword
A free daily word puzzle built around spelling clues. Start with four clues about a five-letter word, use wrong guesses to uncover more, and find any accepted word that fits all seven.
Static HTML, CSS and JavaScript, built with Node.js and hosted on Cloudflare Pages.
Constraint solving, deterministic generation and clear feedback without giving away individual letters.
Project Overview
Purpose: Make a daily word game about reasoning from clues rather than matching a single hidden answer.
Challenge: A puzzle must have a valid solution, reveal useful information after a miss and accept alternative words when they satisfy the same constraints.
Approach: A seeded generator creates the puzzle, and a solver checks the accepted word list to prove which words fit. The published schedule keeps opened puzzles fixed while future puzzles can be extended.
How It Works
| Part | Behavior |
|---|---|
| Progressive clues | Four clues show at the start. Each accepted wrong guess reveals the next clue, up to all seven. Feedback identifies which visible clues the guess breaks. |
| Alternative solutions | Any word in the accepted list that fits all seven clues wins, including clues that are still hidden. Two players can solve the same puzzle with different words. |
| Guess accounting | Players have five guesses. A word outside the accepted list does not use one. There is no letter-by-letter correctness feedback. |
| Local progress | Results and streaks stay in the browser. Reloading a finished puzzle restores its result; progress does not sync between devices. |
| Sharing | A short result includes the puzzle number, outcome, guesses used and the clue count before the final guess. Purple, red and white squares show the history without revealing the word. |
Design Decisions
Prove the puzzle before publishing it
The solver checks the complete clue set against the accepted lexicon. Keeping the answer list separate from accepted guesses allows a familiar starting word without rejecting a valid alternative.
Keep generation reproducible
Seeded generation and a frozen rule log make published days stable. CI compares two builds by file hash and checks the schedule, puzzle runway and repository policies.
Serve a static game
Node.js builds the puzzle data and site using built-in modules. Cloudflare Pages serves the result, while the browser evaluates guesses and stores progress. The game needs no account or application server.
Preserve what the player knew
Finishing reveals all clues, but the share grid keeps previously hidden cells white. Each row records the clues visible when that guess was submitted.
