Fill-In Puzzles, Explained

After reading this you will understand how a fill-in (kriss-kross) puzzle is built, why a well-made one has exactly one solution, and how to prepare a word list that produces a dense, solvable grid.

What a fill-in puzzle is

A fill-in puzzle looks like a crossword with the answers already partly drawn: you get an empty interlocking grid and a list of words, but no clues. Your job is to write every word into the grid, one letter per cell, so the words cross like a crossword and each word is used exactly once. The only guidance is length. The word list is grouped by number of letters, so you know a 7-letter word belongs in one of the 7-cell slots.

Here is a small example. Suppose the list has three words: CAT, CAR, and TAR. A grid with a horizontal 3-slot and two vertical 3-slots crossing it forces a single arrangement once you notice that only CAR shares its first letter with CAT. The puzzle is a logic exercise, not a vocabulary test. You already have the words. You must find where they lock together.

The generator at /games/fill-in-generator/ does the hard part: it lays out a grid, drops your words in, and checks that the crossing letters pin every word to exactly one slot.

When to use one, and when not

Fill-in puzzles suit a specific goal: practice with a fixed set of words, no clue-writing required. A crossword needs a clue for every entry, which is real authoring work. A fill-in needs only the words. That makes it fast to produce for a spelling list, a vocabulary unit, a set of names, or an event theme.

They work well for younger solvers and for anyone learning a language, because the words are visible from the start. The challenge is placement logic, which stays gentle when the list is short and grows quickly with size.

Use a fill-in when you want reinforcement of known words. Use a crossword when the point is recall or definition. If you want the words hidden in a letter block instead of interlocked, a word search is the better shape.

Avoid a fill-in when your list has many words of the same length that share no letters. Those words become interchangeable, and the puzzle loses its single solution. More on that below.

Why a fill-in can have one solution

The whole design rests on one idea: two words of the same length are interchangeable if you could swap them and every crossing letter still matches. If no such swap exists anywhere in the grid, the fill is unique.

Think about the words that fit a given slot. A slot has a fixed length, so only words of that length can go there. Among those, the crossing cells narrow the field. If a slot crosses another word at position 3, the letter in that cell must match. When the crossings leave only one candidate for every slot, the solution is forced.

S = \{ w : \text{len}(w) = \ell \text{ and } w \text{ matches every crossing letter} \}

Here S is the set of words that could legally occupy a slot of length \ell, and a word w qualifies only if its length matches and each already-fixed crossing letter agrees. Uniqueness means |S| = 1 for at least enough slots to cascade down to every slot. The generator verifies this by checking that no two same-length words can trade places without breaking a crossing.

How the layout is searched

Building the grid is a placement search. The generator seeds one word, then repeatedly tries to attach another word so that a shared letter lands on a shared cell. Each successful attachment adds a crossing. The more crossings, the denser the grid and the more each word is constrained.

Counting the raw possibilities shows why this needs a search rather than a formula. With n words you have n! orderings to consider before you even choose positions and directions.

n! = n \times (n-1) \times (n-2) \times \cdots \times 2 \times 1

For n = 10 words that is 10! = 3{,}628{,}800 orderings. For n = 15 it jumps to 15! \approx 1.308 \times 10^{12}. The generator does not test all of them. It tries many dense arrangements, scores each by how tightly the crossings lock the words, and keeps one that both looks compact and passes the uniqueness check.

Density matters for difficulty and for uniqueness at once. A word with two crossings is far more constrained than a word with one. The chart below shows how the count of same-length rivals for a slot falls as you add crossings, assuming each crossing letter cuts the candidate pool.

Starting from 8 same-length words, each crossing letter prunes the field. By two crossings only one word fits, so the slot is forced.

A worked example

The demo button uses the built-in random word set at the default difficulty. To make the logic concrete, follow a small six-word list of the kind that set produces, grouped by length.

Fitting six words into a locked grid

List, grouped by length:

  • 3 letters: ICE, OAR
  • 4 letters: RICE, CORE
  • 5 letters: RIVER, OCEAN
  1. Start with the two 5-letter words. They must go in the two 5-cell slots. RIVER and OCEAN share no starting cell constraint yet, so keep both open.
  2. Look at the crossings the grid provides. Suppose the horizontal 5-slot crosses the vertical 5-slot at cell position 1 of the horizontal and position 3 of the vertical. That cell must hold one letter used by both words.
  3. OCEAN position 3 is E. RIVER position 1 is R. Those disagree, so try RIVER horizontal, position 1 is R, and OCEAN vertical, position 3 is E. Still a mismatch. Swap which crossing cell is used until a shared letter appears: OCEAN and RIVER share only E and R. Placing the shared cell on the E of RIVER (position 4) and the E of OCEAN (position 3) locks both.
  4. Now the 4-letter words attach. CORE can cross OCEAN on the C, and RICE can cross RIVER on the R. Each has a distinct crossing letter, so neither can take the other's slot.
  5. The 3-letter words fill the last slots. ICE crosses on I, OAR crosses on O. Distinct crossings again, so the fill is unique.

Every slot ends with exactly one candidate. That is the state the generator confirms before it hands you the puzzle.

Reading and interpreting the result

When you solve on the page, checking marks a wrong letter so you can back out of a bad branch. A hint reveals one forced letter. Treat both as feedback about crossings, not as scoring.

The printed sheet shows the empty grid and the length-grouped word bank. That grouping is not decoration. It is the primary constraint. A solver scans the bank by length, matches counts against slots, and starts where a length group has the fewest words, because that is where a single placement is most likely forced.

A length group with exactly one word is a free move: that word can only go in that slot. Always start there. A group with many words of equal length and few crossings is the hardest region, so leave it until crossings from neighboring words have fixed some of its letters.

Try the density tradeoff

The single idea worth playing with is how word count and shared letters change grid density and difficulty. Adding words that overlap heavily makes a tighter grid; adding isolated words makes a sparse one that is easy but risks non-uniqueness.

A denser grid has more crossings per word. With 6 words and high letter overlap you might see 5 crossings, so most words are pinned by two shared letters. With 6 words and low overlap you might see only 2 crossings, leaving several words interchangeable and the solution ambiguous.

Common mistakes when building a list

The most frequent problem is many same-length words with no shared letters. Give the generator eight 5-letter words that never intersect and it either fails to build a dense grid or produces one where two words could swap. Mix lengths and favor words that share common letters (E, A, R, T) so crossings are plentiful.

A second mistake is duplicate words or words that are substrings of each other in a confusing way. ART and PART are fine, but two entries of ART break the one-use rule.

A third is length imbalance. If every word is 6 letters, the length grouping gives no head start, and the puzzle becomes a pure crossing search that is slow to build and hard to solve. Aim for a spread of lengths, ideally three or more distinct lengths across ten words.

If the generator reports it cannot guarantee a unique fit, the usual cause is same-length words with too few forced crossings. Add a word that overlaps them, shorten one word, or remove a near-duplicate. Do not simply retry: the same list has the same weakness.

Related tools

If you want clues and recall instead of visible words, build a Crossword Maker puzzle from the same list. If you want the words hidden in a block of letters for a scanning game, use the Word Search Generator. To turn a themed sentence into a cipher puzzle instead of a grid, try the Cryptogram Maker.

Frequently asked questions

Why does my fill-in have no clues?

That is the point of the format. A fill-in gives you the words and asks only where they go. The length-grouped word bank replaces clues. If you want clues, use a crossword instead.

How many words should I use?

Ten to twenty works well. Fewer than eight gives a sparse grid that is easy but risks a non-unique fit. More than about twenty-five slows the layout search and makes the grid large to print.

What makes a fill-in have exactly one solution?

No two words of the same length can trade places without breaking a crossing letter. The generator checks this before showing the puzzle, so a completed grid you receive is guaranteed to have one valid fill.

Can I use names or foreign words?

Yes. The generator only cares about letters and lengths, not meaning. Names with repeated letters cross well. Keep them all in one alphabet so the grid stays consistent.

Does my word list get uploaded anywhere?

No. The tool runs entirely in your browser. Your words and finished puzzles stay on your device.