Skip to content
How-to Guides

How to Make Your Own Printable Word Puzzles From Any Word List

Kleoniq Kosova
Kleoniq Kosova 14 min read

Pick 12 to 15 words on one theme, none of which sits inside another; draw a grid three squares wider than your longest word and at least 12 by 12; write in the longest words first and the diagonals last; fill the gaps; then read every row, column and diagonal for words you did not mean to make before you copy the answer key. That is the whole method. Below, one puzzle is built from start to finish so that each rule is seen doing its job, followed by the fill-in variant, the script we wrote, and three finished sheets to print now.

Printable · 2 pages

Silent K word search

Fifteen words that begin with a silent K, from knack to knowledge, in a 12 by 12 grid with the solution on page 2. Download the PDF.

Printable · 2 pages

Animals word search

Fifteen everyday animals from cat to elephant, 12 by 12, the puzzle built step by step on this page. Download the PDF.

Printable · 4 pages

Words with all five vowels

Twelve words containing A, E, I, O and U, as a 14 by 14 word search and as a fill-in grid, with both solutions. Download the PDF.

Every word in the three sheets was checked against a 172,446-word list built from the public-domain ENABLE word list with offensive words removed (how we check words describes it), and the filled grids were checked against the same list and its blocklist for words that appeared by accident. The counts of how often that happened are real, from runs of the script, and some of them changed how we make puzzles.

Building the animals puzzle

Choosing the fifteen words

A word search wants a mix of lengths: a few short words that are easy to find and keep a young solver going, and a few long ones that give the grid its shape. The animal list came out as cat, cow, dog, pig, bear, goat, horse, mouse, sheep, tiger, zebra, donkey, monkey, rabbit and elephant: four of three letters, eleven of four to eight.

The one rule that is easy to forget is that no word may sit inside another. If your list holds both know and knowledge, every solver who finds the long word has found the short one too, and will circle it in the wrong place. The silent-K sheet dropped know for that reason, and knee because it sits inside kneel. The check is quick by hand (read each word and ask whether any other word on the list is spelled inside it) and instant by script.

Choosing the grid size

The rule of thumb we started with was “longest word plus three, and never smaller than 12 by 12 for a dozen or more words”. To see whether it holds, the script tried to place each of the three word sets 200 times at every size from the longest word upwards. The table gives the share of attempts in which all the words fitted, and how much of the grid the words themselves occupy once they are in.

Word set Longest word Rule of thumb Size at which every attempt fitted Share of the grid taken by the words at that size
15 animals 8 letters 12 by 12 10 by 10 (9 by 9 fitted 97.5%, 8 by 8 only 1%) 71% at 10, 49% at 12
15 silent-K words 9 letters 12 by 12 10 by 10 (9 by 9 fitted 27%) 81% at 10, 56% at 12
12 five-vowel words 11 letters 14 by 14 14 by 14 (13 fitted 97.5%, 12 only 48.5%) 57% at 14
Placement success by grid size, 200 attempts each, words running across, down and diagonally down only. “Fitted” means every word was placed.

So the words will usually squeeze into a grid two sizes smaller than the rule gives, but at 70 to 80 per cent occupancy there is almost no filler, the words touch and cross everywhere, and the solver’s eye finds them by the shapes of the gaps. Around half occupancy is where the puzzle feels like a puzzle. The rule stands: 12 by 12 for the animals.

Placing the words

Draw the grid on squared paper, or use a spreadsheet with narrow columns. Write the longest words in first, while there is still room to choose: elephant, then the six-letter donkey, monkey and rabbit, and so on down to the three-letter words, which fit anywhere. Keep the diagonals for last, because a diagonal word blocks more of the grid than a straight one and is harder to fit around; roughly a third of the words diagonal is enough to keep the puzzle interesting. Words that share a letter can cross at it (the finished animals grid has 8 shared cells), which is a nice touch but never necessary. For solvers under about nine, run every word across, down or diagonally down and never backwards; say so on the sheet.

Before filling a single gap, read what is already on the page. This is the step we had not planned for. The letters of the placed words alone, where they cross or lie side by side, spell words of their own. In 200 random placements of the animal words, 66.5 per cent already contained an everyday word of four or more letters, a blocklisted word, or a second copy of one of the puzzle words: barb, bare, keys, node, and monkeys (a puzzle word with the S of another word landing after it), and in 10 of the 200 a word from the blocklist. No amount of changing the filler can remove a word made of puzzle letters, so the placement itself has to be redone. The animals sheet needed four placements: the first spelled barb, nome and tack, the second a blocklisted word, the third scow, and the fourth was clean.

Filling the gaps

The usual advice is to fill with letters drawn from the puzzle words, so that a solver cannot find zebra by looking for the only Z. It is good advice with one caveat that the silent-K sheet made obvious: all fifteen of its words begin with KN, and a filler that copies the puzzle letters faithfully produced a grid that was a wall of K and N. The script now softens the weighting (square root of each letter’s count, plus one for every letter of the alphabet), and by hand the equivalent is to lean on the puzzle’s common letters without banning the others.

Then comes the check, and here the numbers are worth a pause. The script filled the same clean animal placement 1,000 times with random letters and read every row, column and diagonal in both directions. Every single grid contained at least one accidental word of four or more letters from the full 172,446-word list, on average 15 to 20 of them, most of them words no solver would notice (tyee, snye, wited). Measured against a list of about 25,000 everyday words instead, 99.9 per cent of grids still contained one, on average 8 to 11, such as bare, tomb, nine and tale. A blocklisted word appeared somewhere, in some direction, in 58 to 62 per cent of the animal grids, and in 35 to 52 per cent of the other two puzzles’ grids. In 13 to 18 per cent of fills a puzzle word could be read a second time, usually a three-letter one such as pig spelled by chance elsewhere.

What this means by hand. Do not try to make the grid free of every real word; against a big dictionary that is impossible, and the script never managed it in 500 attempts. Aim for three things: no word you would be embarrassed by, read in any of the eight directions; no everyday word of four letters or more that a solver might circle by mistake; and each puzzle word readable exactly once. When you spot an offender, change one of its letters that is not part of a puzzle word, then re-read that line and the lines through the changed square. The script does exactly this and needed on average 15 to 20 single-letter changes for the animals grid (worst case 40, never unrepairable); the finished sheet took 21 changes over three passes, removing among others bare, dogs, noun, perk, perks, snob and teal, then hoop, noon and sire, then earn.

Three-letter words are left alone. A 12 by 12 grid contains 60 to 90 of them by chance (45 everyday ones remained in the finished animals grid, from ago to wit), they do not confuse anyone, and removing them would mean rebuilding the grid endlessly. The exception is any three-letter word on the blocklist, which the script treats like every other blocklisted word.

The answer key and the print

Make the key before you fill the gaps: photocopy or photograph the grid with only the puzzle words in it, or in a spreadsheet duplicate the sheet and shade the word cells. Filling first and then hunting for your own words afterwards is how keys end up with a word missing. On the printed sheets the solution page repeats the full grid with the word cells shaded grey, which photocopies cleanly and does not depend on colour.

For printing, a 12 by 12 grid at 11 mm per cell fills the width of an A4 page with the word list beneath it, which suits most hands and a thick pencil; 14 by 14 drops the cell to about 10 mm. Put the solution on its own page so that a class set can be printed without it, use a plain sans-serif capital in every cell, and keep the instructions to one line above the grid (“words run across, down and diagonally down, never backwards”).

The fill-in: the same words, a different puzzle

A fill-in (sometimes called a criss-cross) gives the solver an empty crossword-style grid and the list of words sorted by length; there are no clues, and the puzzle is to work out which word goes where from the lengths and the crossings. It is slower to make by hand than a word search but it is the better puzzle for vocabulary work, because every word has to be spelled letter by letter to check the crossings.

Start with the longest word across the middle of a large sheet of squared paper. Take the next word and find a letter it shares with something already placed; write it through that letter at right angles. Keep going, alternating across and down, with one rule about neighbours: a new word may touch an existing word only where it crosses it, never side by side, because two parallel words one square apart create letter pairs that are not words. Every word must cross at least one other. When you are done, crop to the used area and copy the outline as empty boxes.

The choice of words matters far more here than in a word search. Long words with many vowels cross easily; short words with few shared letters do not. Our script placed all twelve five-vowel words in 99 of 100 shuffles, all fifteen silent-K words in 73, and all fifteen animals in only 24, because cow, pig and dog share almost nothing with the rest. If a word will not go in, swap it for a synonym or a longer relative rather than forcing the grid wider. For the solver, the way in is a length with only one word: on the five-vowel sheet, sequoia is the only seven-letter word, so it can be written in at once, and the two eleven-letter words (cauliflower, mountaineer) are decided by whichever crossing letter fits.

Our first fill-in came out as a comb: one long word down the middle with every other word hung across it, because the placer preferred whatever kept the grid compact. Preferring a change of direction from the previous word, and then compactness, gave the proper interlocking shape on the sheet. The finished five-vowel grid is 16 rows by 19 columns, with the 12 words crossing at 15 squares.

Three things that went wrong, and the rules that came out of them

The first version of the check refused any accidental word of four letters or more from the full word list. Not one of 500 random fills passed for any of the three puzzles, and the log showed why: the list has kyte, nota, emyd and thousands of other words that appear in a random grid as readily as real ones. The rule was replaced by the everyday-word check described above, using a published list of common words, with the blocklist applied at every length. That is also a fair description of what a careful person does by hand: you notice tomb, you do not notice emyd.

The second was the discovery that placed words spell words of their own. It happened in 35 per cent of silent-K placements (note, nite, seek, keen), 61 per cent of five-vowel placements (mate, amount, aide, rain) and 66.5 per cent of animal placements, and in each set a small share of those were blocklisted words. The script now reads the grid before filling it, and re-places the words when it finds one; the silent-K sheet needed six placements (rejected for nite, neon, a blocklisted word beside lawn, late, and knot readable twice) before a clean one.

The third was appearance rather than correctness: the K-and-N wall in the silent-K grid, and the comb-shaped fill-in. Neither would have been caught by any check on the words; both were caught by printing a draft and looking at it, which remains the last step whatever tools you use. The rules that survived all this fit on a card:

  1. Twelve to fifteen words, one theme, a mix of lengths, no word inside another, every word checked against the list you trust.
  2. Grid side = longest word + 3, and at least 12; aim for words covering about half the squares.
  3. Longest first, diagonals last, forward directions only for young solvers, crossings welcome but optional.
  4. Read the grid before filling it; if the placed letters spell an everyday or offensive word, move a word.
  5. Fill with the puzzle’s letters, softened; then read every line in both directions and change one letter wherever an everyday word of four or more letters, any offensive word, or a second copy of a puzzle word appears.
  6. Key from a copy made before filling; solution on its own page; print a draft and look at it.

Making puzzles with the script

The generator is a single Python file that needs only Python 3 (free from python.org) and the reportlab library, installed with pip install reportlab. Save the script as puzzles.py, put your words in a text file, one per line, download a word list such as enable1.txt and the same repository’s popular.txt (the 25,322 everyday words the accidental-word check uses) into the same folder, and run:

python3 puzzles.py custom "Animals" animals.txt animals.pdf --list enable1.txt --common popular.txt --size 12

The script confirms every word is in the list and that none sits inside another, tries up to 100 placements until one is clean, fills the grid, repairs it letter by letter, and writes a two-page PDF with the solution on page 2. Add --fillin for the criss-cross pages, --backwards to allow words in all eight directions for older solvers, --seed 7 (any number) for a different grid from the same words, and --banned yourlist.txt for a file of words that must never appear; without one, only the everyday-word and duplicate checks run, so supply one for classroom use. Each of the three sheets on this page took about a second to build. The heart of the check, the part worth understanding even if you never run the whole script, is short enough to show. It reads every line of a filled grid in all eight directions and reports words of four or more letters that are in the list but are not puzzle words; the grid below is a small made-up example, and the output is what the code printed.

words = set(w.strip() for w in open("enable1.txt") if len(w.strip()) >= 4)
grid = ["CATPI", "OHOAG", "WELLS", "NOTEA", "DOGSK"]
puzzle = {"cat", "cow", "dog", "pig", "well"}
n = len(grid)
lines = [list(r) for r in grid] + [[grid[r][c] for r in range(n)] for c in range(n)]
lines += [[grid[r][r + s] for r in range(n) if 0 <= r + s < n] for s in range(-n + 1, n)]
lines += [[grid[r][s - r] for r in range(n) if 0 <= s - r < n] for s in range(2 * n - 1)]
lines += [l[::-1] for l in lines]
found = set()
for l in lines:
    s = "".join(l).lower()
    for i in range(len(s)):
        for j in range(i + 4, len(s) + 1):
            if s[i:j] in words and s[i:j] not in puzzle:
                found.add(s[i:j])
print("accidental words of 4+ letters:", sorted(found))
accidental words of 4+ letters: ['ales', 'dogs', 'ells', 'note', 'pale', 'pales', 'wells']

Two of those, dogs and wells, are puzzle words with an S after them, which is the commonest accident of all: in about half of the animal fills a puzzle word had grown a plural or another ending. A solver circling dog inside dogs is not wrong, but it looks untidy on the key, so the script treats an everyday extension like any other accidental word and changes the extra letter.

Where these puzzles fit

A word search of the week’s spelling words is a settling activity that needs no explanation, and the fill-in of the same words is the follow-up that makes pupils spell them. Both pair well with the board-and-timer games in our classroom word games that need no preparation, and the word-building families in the prefix and suffix worksheet make a good theme for a fill-in, since help, helpful and unhelpful cross each other naturally. The five-vowel theme was chosen for the third sheet because the words are long, which makes an easy fill-in, and because the complete list of such words is in our article on words with all five vowels. For a themed sheet on a single starting letter, our free timed word game at theverbarium.com/play is a quick way to gather candidates: play a round on the letter and keep the words it accepts.

New to The Verbarium? Follow the reading path, with tools and printables

Leave a Reply

Your email address will not be published. Required fields are marked *