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.

Play Snugword How it works ↓
StatusLive

Launched November 12, 2026. One shared puzzle opens daily at 08:00 UTC.

Build TypeBrowser Game

Static HTML, CSS and JavaScript, built with Node.js and hosted on Cloudflare Pages.

Primary Focus

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.

Preview

Play Snugword, a free daily word puzzle
Snugword's share card artwork. Open the live game to try today's puzzle.

How It Works

The daily puzzleFive letters, seven clues and five guesses.
PartBehavior
Progressive cluesFour 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 solutionsAny 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 accountingPlayers have five guesses. A word outside the accepted list does not use one. There is no letter-by-letter correctness feedback.
Local progressResults and streaks stay in the browser. Reloading a finished puzzle restores its result; progress does not sync between devices.
SharingA 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.

Technical Focus

JavaScriptHTML & CSSNode.jsConstraint SolvingSeeded GenerationGitHub ActionsCloudflare PagesBrowser Storage