Word suggestion algorithm

Status: Approved | 2025

Author: Victor Ma

Word suggestion list
The word suggestion list.

The goal of any crossword editor software is to make it as easy as possible to create a good crossword puzzle. To that end, all crossword editors have a feature called a word suggestion list. This is a dynamic list of words that fit the current clue. It helps the user find words that fit the clues on their grid.

In order to generate the word suggestions, crossword editors use a word suggestion algorithm.

Comparison of word suggestion algorithms

Here is a comparison of the word suggestion algorithms that we use or are considering using:

Algorithm

Status

Scope

Dead-end words

Speed

Complexity

Intersection-based

No longer used as a standalone word suggestion algorithm.

Clue-level.

Common.

Very fast.

Medium.

Forward-checking

Our current word suggestion algorithm.

Clue-level.

Uncommon.

Fast.

Medium.

AC-3-based

Unimplemented.

Grid-level.

None.

Slow.

High.

Prior Art

The following is true about most crossword editors:

  • They use a grid-level word suggestion algorithm.

  • It takes a while for the word suggestion list to populate.

  • They have a fillability indicator.

  • They have a cell constraint heat map.

  • They have a most-constrained-clue button.

Open source crossword editors:

Terminology

Term

Definition

Current cell

The cell that the cursor is on.

Current clue

The clue that the cursor is on.

Current filter

The filter for the current clue.

Secondary clue

The clue that intersects the current clue, at the current cell.

Secondary filter

The filter for the secondary clue.

Intersecting clue

A clue that intersects a given clue.

Intersecting clues

All the clues that intersect a given clue.

Word suggestion list

The UI element that shows a list of words that fit the current clue.

Word suggestion algorithm

An algorithm that generates word suggestions for a given clue or grid.

Dead-end word

A word suggestion that results in an unfillable grid.

Grid fill

A one-to-one mapping from the clues of a grid to words.