Crossword Puzzle Generator
Build printable custom crosswords from answer-clue lists, tune grid fit and symmetry, review quality metrics, and export puzzles or answer keys.Crossword overview
{{ solveComplete ? 'Solved cleanly' : 'Solve this crossword' }}
| No. | Direction | Clue | Length | Copy |
|---|---|---|---|---|
| {{ clue.num }} | {{ clue.direction }} | {{ clue.word.length }} |
| Across | Down | Copy |
|---|---|---|
| {{ clueText(across[i-1]) }} | {{ clueText(down[i-1]) }} |
Across
| Item | Copy |
|---|---|
| {{ clueText(a) }} |
Down
| Item | Copy |
|---|---|
| {{ clueText(d) }} |
| No. | Answer | Clue | Copy |
|---|---|---|---|
| {{ clue.num }} | {{ clue.word }} | {{ clue.clue || clue.word }} |
Generate a grid to populate across clues.
| No. | Answer | Clue | Copy |
|---|---|---|---|
| {{ clue.num }} | {{ clue.word }} | {{ clue.clue || clue.word }} |
Generate a grid to populate down clues.
| Metric | Value | Copy |
|---|---|---|
| {{ row.metric }} | {{ row.value }} |
Run the generator to populate grid quality metrics.
| # | Seed | Placed | Fill % | Time | Note | Copy |
|---|---|---|---|---|---|---|
| {{ run.attempt }} | {{ run.seed || 'default' }} | {{ run.placed }} | {{ run.fillPercent }} | {{ run.genMs }} ms | {{ run.note || '—' }} |
No attempt data yet.
| Word | Clue | Length | Copy |
|---|---|---|---|
| {{ entry.word }} | {{ entry.clue || '—' }} | {{ entry.word.length }} |
Every entry was placed in the grid.
Introduction
A crossword puzzle is a clue-driven word grid where answers run across and down and shared letters help confirm each other. That interlocking structure is what makes crosswords satisfying to solve and useful to build around a theme, whether the subject is classroom vocabulary, a club night, a staff social, or a custom handout tied to one event.
This generator takes that familiar format and rebuilds it around your own answer-and-clue list. Instead of starting from a fixed puzzle bank, you supply the entries, choose how hard the page should search for a good fit, and then review the numbered grid, clue lists, quality metrics, attempt log, unused entries, and JSON snapshot from the winning run.
That workflow is most useful when the vocabulary itself matters. A teacher can build a revision puzzle from lesson terms, an organiser can turn themed facts into a table activity, and a team can make a custom puzzle for one meeting instead of relying on a generic newspaper grid.
The important caveat is that this page helps you build practical custom crosswords, not editor-reviewed publication puzzles. Classic American-style construction usually expects 180 degree symmetry, no two-letter answers, and every letter to belong to both an Across and a Down entry. This generator can aim toward some of those goals, but it does not enforce the full editorial rule set on your behalf.
Technical Details
Each non-empty line is split at the first colon. The text before that colon is treated as the answer field and the text after it becomes the clue. The answer field is uppercased and stripped down to letters A to Z only, so snow day becomes SNOWDAY and ice-cream becomes ICECREAM. If no letters survive, the line is ignored and reported as invalid. If the cleaned answer repeats an earlier cleaned answer, the later copy is removed as a duplicate.
The generator then works inside a square grid from 5 to 25 cells per side. The longest surviving answer is placed horizontally near the middle, and the remaining answers are tested only in horizontal and vertical directions. A legal placement must stay within the grid, agree with any letters already in place, avoid extra letters immediately before or after the answer, and avoid side contacts that would create stray fragments shorter than the chosen minimum word length.
The two search modes differ mainly in how hard they push for a better fit. Greedy takes the best placement it can see for each next answer and moves on. Backtracking ranks candidate placements, explores the stronger branches, and keeps improving the best grid it has seen until the time budget runs out. Candidate scoring rewards crossings, keeps some weight near the centre, and applies a penalty when the chosen symmetry mode would prefer matching occupied cells elsewhere in the square.
Formula Core
The main quality metrics compare filled cells with the full square and checked cells with filled cells. They are best used to compare runs made from the same answer bank, because a dense grid can still be weak if too few letters cross.
| Output | What the page measures | Why it helps |
|---|---|---|
Fill density |
The share of all cells that contain letters in the winning grid | Useful for comparing attempts of the same word bank, especially when one grid feels too open |
Crossing cells and Crossing rate |
How many filled cells belong to both an across answer and a down answer | Shows how interlocked the puzzle really is, which is often more important than density alone |
Unused entries |
Clean answers that never appeared in the winning attempt | Flags theme terms that still need a larger grid, better connectors, or looser constraints |
Attempt log |
Per-run seed, placed count, fill percentage, runtime, and any stopping note | Makes repeated tuning easier because you can see whether a new setting actually improved the result |
JSON |
Inputs, export settings, diagnostics, stats, attempts, numbering, clues, and the final grid | Gives you a structured record of the accepted puzzle instead of only a picture or document export |
| Common convention | What this generator does | How to read the result |
|---|---|---|
| American-style grids usually use 180 degree rotational symmetry | You can choose none, rotational, horizontal mirror, or vertical mirror, and the stats panel reports a symmetry match percentage | The symmetry score shows resemblance of occupied and empty cells. It is not proof of a publication-standard block pattern |
| Minimum answer length is commonly three letters | The default minimum is 3, but you can lower or raise it | Shorter cleaned answers than the chosen minimum are skipped, and placements that create too-short cross fragments are rejected |
| Every letter is usually checked by both an Across and a Down entry | Not enforced | A puzzle can still generate with low crossings or even one-direction answers, so check the crossing rate before printing |
| Repeated answers are normally not allowed | Later duplicates are removed after answer cleanup | You will see the duplicate warning, and only the first cleaned answer stays eligible for placement |
| Clues are edited for fairness and polish | The page uses the clue you provide and falls back to the answer text when no clue is supplied | Construction can be complete while clue writing still needs human revision |
Generation, numbering, clue assembly, and file creation stay in the current browser session. Treat the page as local-first for ordinary classroom, event, and team puzzles, but avoid entering sensitive answer banks on a device or browser profile you do not trust.
Everyday Use & Decision Guide
Start by thinking about the word bank, not the styling controls. A custom crossword works best when the list mixes a few long anchor answers with shorter connector words that share common letters. If most entries are long, unusual, or built from rare letter clusters, the generator may still produce a grid, but the unused list or crossing rate will usually reveal the strain.
Choose grid size with room to spare on the first pass. A 15 x 15 square feels familiar, but it is not automatically the right size for every list. If one or two entries are close to the grid width, begin larger and shrink later. Tight grids can force clean entries out of the puzzle entirely, while oversized grids can leave you with a sparse layout that looks formal but solves awkwardly.
Use Greedy when you want a quick feasibility check. It is fast and good at telling you whether the bank is obviously workable. Use Backtracking when you care more about crossings, density, and overall fit. The Attempts (best-of) setting matters more than it first appears because each attempt reshuffles the entry order and the page keeps the strongest result automatically.
- Use a seed only after you find a layout you may want to reproduce. The same cleaned entries and settings recreate the same attempt family.
- Keep
Min word lengthat 3 when you want a more conventional classroom or print puzzle. Lowering it helps fit but also relaxes the construction standard. - Turn on rotational symmetry when appearance matters more than absolute fit. Mirror modes can still look tidy, but they are not the usual newspaper convention.
- Read
CluesandStatsbefore exporting anything. A grid can look finished while still hiding leftovers, weak crossings, or clue text you never intended to publish.
Once the puzzle itself looks right, then move on to presentation. The design and export controls let you switch clue layout, show or hide the title and date, add a header note, thicken grid lines, boost contrast for photocopies, adjust blank-square colour and letter scale, and choose page size, orientation, and margins for printable output.
Step-by-Step Guide
- Paste one entry per line in the form
ANSWER:clue. If you want a phrase answer, enter it as plain text and let the page collapse spaces and punctuation automatically. - Run a first draft with a roomy grid and either
Greedyor a shortBacktrackingbudget. The first goal is to see whether the cleaned list is viable at all. - Read the warning block right away. It tells you which duplicates were removed and which lines were ignored because no usable letters remained.
- Adjust
Grid size,Min word length,Symmetry,Time budget, andAttempts (best-of)until the grid quality looks acceptable for your audience. - Review the
Crossword Grid, then openCluesandStats. Confirm that clue numbering looks clean, that blank clue fields are acceptable where you left them blank, and that no important entry is sitting inUnused entries. - If you want a reproducible version, keep the seed shown in the accepted run and avoid changing the cleaned entry list afterward.
- Only after the puzzle content is settled should you export PDF, DOCX, CSV, or JSON. The exported files reflect the currently accepted run, not a separate reconstruction later.
Interpreting Results
Fill density is the easiest number to notice, but it is not the whole story. A crowded square can still be a weak crossword if many entries barely confirm one another. For this page, Crossing rate is usually the better fairness check because it tells you how much of the filled area actually interlocks.
Unused entries is the next number to trust. If the count is above zero, something in the bank or the constraints still does not fit the winning layout. That may mean the grid is too small, the symmetry choice is too restrictive, the word list lacks connector entries, or the list contains very long answers that do not share enough letters with the rest of the set.
| If you see | It usually means | Useful next move |
|---|---|---|
| High fill density but low crossing rate | The square is busy, but too many answers sit beside each other without enough shared letters | Try backtracking, more attempts, or a word bank with more connector terms |
| Low fill density and zero unused entries | The puzzle fits, but the grid is probably larger than the list needs | Shrink the grid and compare the next run |
| High unused count | The grid size, symmetry pressure, or answer mix is blocking placement | Enlarge the grid, loosen symmetry, or revise the bank |
Time budget reached |
Backtracking stopped because the allotted search time expired | Raise the budget only if the current crossings or leftovers are still poor |
| Strong symmetry match with poor crossings | The shape looks balanced, but the actual word mesh is still weak | Prioritise solver support over appearance if the puzzle is meant to be played, not merely displayed |
Read Symmetry match carefully too. It compares the final occupied and empty pattern with the selected mirror rule. It does not certify a full editor-approved crossword, and it says nothing by itself about clue quality, theme placement, or whether every letter is checked in both directions.
Worked Examples
Biology revision sheet with a reproducible seed
Using CELL, DNA, ENZYME, OSMOSIS, MITOSIS, GENE, ATOM, and ORGAN in a 15 x 15 grid with Backtracking, Rotational symmetry, a 1500 ms time budget, three attempts, and the seed bio1, the page placed all 8 entries. The winning run reported 15.1% fill density, 17.6% crossing rate, 0 unused entries, and 86.7% symmetry match, while every attempt logged Time budget reached. That is a good sign that the list is workable, but also a reminder that a complete puzzle is not the same thing as an exhaustive search.
Small grid that proves density is not enough
Using CAT, DOG, and ELEPHANT in a 5 x 5 grid with Greedy placement and the seed animals, the page produced a grid with 44.0% fill density but only two placed answers and no down clues at all. ELEPHANT stayed in Unused entries. The result looks dense because the square is tiny, yet it is not a strong crossword by publication standards because the interlock is missing.
Cleanup warnings that materially change the puzzle
Using RAIN, sun, snow day, ice-cream, a repeated RAIN, and 1234 in a 9 x 9 grid with Backtracking, horizontal mirror symmetry, two attempts, and the seed weather, the page cleaned the phrases into SNOWDAY and ICECREAM, removed one duplicate RAIN, ignored the numeric line, and placed all 4 surviving entries. The best run was attempt 2 with 24.7% fill density and 10.0% crossing rate. This is exactly why the warning and stats panels matter: the final puzzle may be based on a noticeably different list from what you first pasted.
FAQ:
Why did my phrase lose spaces or punctuation?
The answer field is cleaned down to letters A to Z before placement. That means spaces, hyphens, apostrophes, and similar punctuation are removed from the answer itself, even though the clue text stays as you wrote it.
Why does a clue sometimes show the answer itself?
Clues are optional. If you leave the clue side blank, the page falls back to the answer text in the clue lists and exports. That is useful for construction testing, but you will usually want to replace those fallback clues before sharing the puzzle.
Why can the generator make a grid with very few crossings?
The page searches for legal placements, but it does not require every letter to be checked by both an Across and a Down answer. A run can therefore finish with weak interlock if the grid is small, the bank is awkward, or the settings favour appearance over crossings.
Does choosing symmetry guarantee a newspaper-style crossword?
No. Symmetry affects placement scoring and the stats panel reports how closely the final occupied and empty pattern mirrors the chosen mode. It does not enforce the full editorial checklist used by major crossword outlets.
Do my entries leave this page?
Generation and export happen in the current browser session. Avoid entering sensitive answer banks on a device or browser profile you do not trust.
Glossary:
- Checked letter
- A cell that belongs to both an Across answer and a Down answer.
- Fill density
- The percentage of all grid cells that contain letters in the winning layout.
- Crossing cell
- A filled cell that has neighbouring letters in both the horizontal and vertical directions.
- Seed
- The text value used to reproduce the same attempt family when the cleaned list and settings do not change.
- Unused entry
- A cleaned answer that never appeared in the winning grid.
- Symmetry match
- The percentage showing how closely the occupied and empty pattern mirrors the selected symmetry mode.
References:
- Crossword Style Guide, The Michigan Daily.
- Crossword Grids, CrosswordGrids.com.