Every puzzle on Word Puzzle Hub is generated entirely in code - there is no manual grid-drawing involved. But "generated in code" can mean anything from a sophisticated AI to a simple random letter dump. This article explains exactly how our puzzles work, why certain design decisions were made, and what guarantees you can rely on when you sit down to solve one.
Word List Curation
The starting point for every puzzle is a hand-curated word list. For each theme - whether that is Birds, Space, Mythology, or Musical Terms - we have assembled a list of 20 or more relevant words, filtered to meet two constraints:
- Length: words must be between 4 and 12 characters. Shorter words are too easy to find by accident; longer words risk dominating the grid.
- Appropriateness: no proper nouns, no offensive terms, no obscure jargon. Every word in every list should be recognisable to an educated adult or older child.
For the daily puzzle, the system selects 10 to 12 words from the theme's list for each puzzle. The selection is randomised but reproducible - the same date always yields the same words in the same positions.
Grid Generation: Words First, Fill Second
The puzzle grid is built in two stages.
Stage 1: Word placement. Each word is placed one at a time. The algorithm picks a random starting cell and direction, checks that the word fits within the grid boundary and does not conflict with already-placed letters (unless the conflict is a legitimate crossing - two words sharing a letter at the same position), and places it. If placement fails after a fixed number of attempts, the algorithm shuffles and tries again. This guarantees that every generated grid is solvable and that no word is ever missing.
Stage 2: Fill. Once all words are placed, the remaining empty cells are filled with random letters drawn from a weighted distribution that approximates the natural frequency of letters in English. This prevents the fill from being obviously non-word-like (too many Xs and Qs) while still being random enough that it does not accidentally spell extra words.
Reproducibility: How Seeding Works
A key design goal was reproducibility: the same puzzle every time for the same date or category. This is important for fairness (everyone solving the daily puzzle gets the same challenge) and for SEO (category puzzle pages always render identical content, which search engines can index reliably).
We achieve this through a seeded pseudorandom number generator (specifically a variant of the Mulberry32 algorithm). For daily puzzles, the seed is derived from the date string. For category puzzles, the seed is derived from a hash of the category path (e.g., animals/birds). The same seed always produces the same sequence of random numbers, which means the same word placements and the same fill letters - every time, on every device, in every browser.
Difficulty: Eight Directions
The three difficulty settings change which of the eight possible word directions are used during placement:
| Difficulty | Directions available |
|---|---|
| Easy | Left-right, top-bottom |
| Medium | Left-right, top-bottom, and all four diagonals |
| Hard | All eight directions, including right-left and bottom-top (backwards) |
When you change difficulty, the same seed generates a new grid with the same words but different placements. This means the Easy and Hard versions of the same puzzle are genuinely different grids, not the same grid with words highlighted differently.
Spanish Translations
For Spanish users, each word is looked up in a translation table before the puzzle is generated. Where a translation exists, the Spanish word is used in place of the English one. Where no translation is available (technical terms, loanwords), the English word is retained. The grid is then generated from the translated word list using the same seed, so the Spanish puzzle is structurally different from the English one but equally reproducible.
What We Guarantee
- Every puzzle is solvable. No word is ever placed incorrectly or left out of the grid.
- The same date/category always gives the same puzzle. There are no surprises if you return to a puzzle you started yesterday.
- Difficulty is genuine. Changing the difficulty setting changes the grid, not just a label.
Curious how the algorithm handles A search for solving rather than generating? Read Solving Word Searches Programmatically.*