Crossword Puzzle Generator
Generate a custom crossword from answer-clue lines, compare crossings and unused entries, then download puzzle sheets and answer keys.{{ summaryHeading }}
{{ 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
Custom crosswords turn a chosen word bank into a solvable grid instead of asking the setter to start from a blank square and hope the entries fit. The basic idea is familiar: answers run left to right for Across clues and top to bottom for Down clues, while shared letters give solvers extra confirmation. That shared-letter structure is why a crossword feels different from a word list, a quiz, or a word search.
The construction problem is harder than the finished puzzle suggests. A good word bank needs answers that share useful letters, a grid large enough for the longest entries, and clues that match the audience's knowledge. Long theme answers can make a puzzle memorable, but they also consume space and may block shorter entries. Very short connector words can help the grid fit, yet too many two-letter or weak entries make the puzzle feel less polished.
Common crossword vocabulary helps when judging a generated grid. A checked letter belongs to both an Across and a Down answer. Fill density describes how much of the square contains letters. Symmetry describes whether the pattern of filled and blocked cells looks the same after a rotation or mirror. None of those qualities replaces clue writing, but each one affects how fair and finished the puzzle feels.
Publication-style crosswords often follow stricter habits than classroom or event puzzles. American-style grids commonly use 180-degree rotational symmetry, avoid one- and two-letter entries, and try to make every letter checked. A private worksheet, party puzzle, or revision handout can relax those rules, but the tradeoff should be deliberate: looser rules usually fit more vocabulary, while stricter rules usually solve better.
Automated crossword generation is best understood as guided construction, not editorial approval. The grid can show which entries fit, how much they interlock, and which answers need revision, but the final judgment still depends on the purpose of the puzzle, the clarity of the clues, the reading level of the audience, and whether any important term was left out.
How to Use This Tool
- Enter one entry per line as
ANSWER: clue. The clue can be blank while you test the grid, but a finished puzzle should replace fallback clues with readable prompts. - Paste text directly, drop plain text into the entry box, or import a TXT file that uses the same line format.
- Start with a roomy grid from 5 to 25 cells per side. If the longest answer is close to the grid width, choose a larger square first and shrink later.
- Choose
Greedyfor a fast fit check, orBacktrackingwhen you want the search to spend more time on crossings and overall placement quality. - Set the minimum word length and symmetry mode before comparing runs. A lower minimum can rescue small word banks, while rotational or mirror symmetry may reduce how many entries fit.
- Use the time budget, attempt count, and optional seed when you want repeatable comparison. More attempts give the page more shuffled layouts to test, and a seed helps recreate the same attempt family later.
- Review the solver, grid, clue, quality, attempt, unused-entry, and JSON tabs before exporting printable puzzle sheets or answer keys.
After the content is settled, tune presentation settings such as title, header note, clue layout, page size, orientation, margins, cell size, line weight, contrast, block colour, and answer-letter scale. Those settings change the preview and downloadable files, but they do not make a weak word bank fit better.
Interpreting Results
The overview badges are a first-pass check, not the whole review. Placed word count tells you how much of the cleaned word bank survived. Fill percentage tells you how busy the square is. Unused entries show what the selected layout could not place. The strategy, symmetry, and attempt badges remind you which settings produced the result you are reviewing.
The quality table is usually the best place to judge whether the puzzle is playable. A dense square can still be poor if most letters are not checked, and a sparse square can be acceptable for a short classroom list if every required term appears clearly. Compare runs from the same entry list rather than treating one fill percentage as a universal target.
| Result pattern | Likely meaning | Practical adjustment |
|---|---|---|
| High fill density with low crossing rate | The grid is busy, but too many letters are not supported by entries in the other direction. | Use backtracking, add connector words with common letters, or reduce symmetry pressure. |
| All entries placed with a very open grid | The word bank fits, but the square may be larger than the list needs. | Try a smaller grid and compare fill density, crossings, and clue readability. |
| Many unused entries | The answer mix, grid size, or selected constraints are blocking placement. | Enlarge the grid, loosen symmetry, raise the attempt count, or revise the word bank. |
Time budget reached |
The backtracking search stopped when its allotted time expired. | Increase the budget only if the current leftovers or crossings are still unacceptable. |
| Strong symmetry match with weak crossings | The shape looks balanced, but the solving support is still limited. | Prefer crossings over appearance when the puzzle is meant to be solved rather than displayed. |
Use the interactive solver tab as a final sanity check. Enter a few answers, use the check and reveal controls, and confirm that clue numbering feels natural. If a clue list falls back to the answer text, or if an important entry appears under unused entries, fix that before sharing the exported puzzle.
Technical Details
Crossword generation here is a constrained placement problem. Answers are cleaned into letter-only forms, candidate positions are tested against the current grid, and the search keeps the layout that scores best under the selected settings. The result is deterministic when the cleaned entries, settings, and seed stay the same, but small changes can produce a different grid because each placement affects every later option.
The first important constraint is the answer text itself. The answer side is uppercased and reduced to A through Z, so spaces, digits, punctuation, accents, and symbols are not part of the placed grid. Lines without usable letters are ignored, and later duplicate cleaned answers are removed. The clue text after the first colon is kept for clue lists and exports.
Rule Core
| Rule | Effect on the grid | Why it matters |
|---|---|---|
| Answer cleanup | Only letters A to Z remain in the answer placed in the grid. | Phrases such as ice-cream become a continuous entry such as ICECREAM. |
| Duplicate removal | The first cleaned answer stays eligible; later copies are reported and skipped. | Duplicate answers do not compete for separate clue numbers. |
| Grid size | The chosen square limits where answers can be tested and compared. | Pick a side length that can comfortably hold the longest cleaned answer. |
| Letter agreement | Crossing cells are allowed only when both entries use the same letter. | Shared letters confirm answers instead of creating conflicts. |
| No stray side contacts | New letters cannot touch unrelated letters on the side and form accidental fragments. | The final clue list stays tied to real Across and Down entries. |
| Minimum length guard | Short entries and accidental fragments below the selected length are rejected or skipped. | Very small fragments are usually poor crossword fill. |
Greedy placement chooses the strongest visible candidate for each next answer and moves forward. Backtracking explores multiple candidate branches, ranks them, and keeps improving the best grid it reaches until the time budget expires. Both approaches favor crossings and central placement, while selected symmetry adds a penalty when a proposed letter makes the pattern less aligned with the chosen mirror or rotation.
Formula Core
The quality metrics and placement score are useful because they separate visual density from actual crossword support. The score below is a heuristic for ranking candidate placements, not an editorial grade.
| Symbol or term | Meaning |
|---|---|
N |
The selected square grid side length. |
| Letter cells | Cells that contain an answer letter in the winning grid. |
| Crossing cells | Filled cells with horizontal and vertical neighbours, meaning they support both directions. |
C |
The number of letters in a candidate placement that cross matching existing letters. |
D̄ |
The average Manhattan distance of the candidate's letters from the grid centre. |
M |
The number of candidate letters whose mirrored partner would remain empty under the selected symmetry mode. |
The accepted attempt is chosen by fill density first. If two attempts fill the same share of the grid, the one with more placed words wins; if that is still tied, the faster attempt wins. That rule makes the attempt log useful when tuning a word bank because it shows whether a setting changed the winning grid or only changed runtime.
Numbering follows the normal crossword scan: the grid is read from top left to bottom right, and a filled cell receives a clue number when it starts an Across answer, a Down answer, or both. Across and Down clue lists are then assembled from the placed answers. If no custom clue was supplied, the clue list uses the answer text so the entry remains visible during review.
Limitations and Privacy Notes
The generator does not certify publication-quality construction. It does not require every letter to be checked, does not guarantee connected sections in every unusual word bank, and does not edit clue wording for fairness, ambiguity, difficulty, capitalization, or style. The metrics help you find problems, but a human review still decides whether the puzzle is ready for learners, guests, or readers.
Generation, solving, previewing, and file assembly run in the current browser session. Export features may load public document-rendering libraries, so the browser can contact those library hosts, but the answer bank is not submitted to a crossword-solving service by the generation process. Avoid entering sensitive internal names, exam answers, or private event material on a shared or untrusted device.
Very long answers, rare letter patterns, many entries with few shared letters, and tight symmetry settings can all leave valid words unused. Treat the unused-entry tab as revision guidance, not as a failure message. Often the fastest fix is to add a few short connector terms that share common letters with the longest answers.
Worked Examples
Classroom vocabulary sheet
A biology teacher might enter CELL, DNA, ENZYME, OSMOSIS, MITOSIS, GENE, ATOM, and ORGAN, each with a short review clue. A 15 x 15 grid, three backtracking attempts, and a reproducible seed can produce a printable sheet quickly. The important checks are whether every required term was placed, whether the crossing rate is high enough for fair solving, and whether any blank clue has fallen back to the answer text.
Small word bank that looks fuller than it solves
A tiny grid using CAT, DOG, and ELEPHANT can show a respectable fill percentage while still placing only two answers. The unused-entry tab would expose ELEPHANT, and the crossing metrics would show that the puzzle is not well interlocked. A larger grid alone may not fix that list; adding terms such as TAIL, PAW, or TRUNK gives the search more shared letters to work with.
Pasted text that changes during cleanup
If the entry list includes RAIN, sun, snow day, ice-cream, another RAIN, and 1234, the cleaned answers become RAIN, SUN, SNOWDAY, and ICECREAM. The repeated RAIN is removed, and the numeric line is ignored because it has no letters. The warning block matters because the final grid is based on the cleaned list, not the raw pasted text.
FAQ:
Why did spaces, accents, or punctuation disappear from an answer?
The grid answer is cleaned to letters A to Z before placement. Punctuation and spaces are removed from the placed answer, while the clue text after the colon stays as written.
Why does a clue sometimes show the answer?
A blank clue is allowed while drafting. When no clue is supplied, the clue list uses the answer text as a fallback so the entry is still identifiable during review and export.
Does symmetry guarantee a newspaper-style crossword?
No. Symmetry influences placement scoring and produces a symmetry match metric, but it does not enforce every editorial convention used by major crossword outlets.
Why did an answer stay unused even though there is empty space?
Empty space is not enough. A placement also needs matching crossings, clear boundaries, no stray side contacts, and enough room for the whole answer in one direction.
Can I reproduce the same puzzle later?
Yes, keep the same cleaned entry list, settings, attempt count, and seed. Changing any answer, clue line, grid setting, or search option can change the winning layout.
Glossary:
- Across answer
- An answer placed left to right in the grid.
- Down answer
- An answer placed top to bottom in the grid.
- Checked letter
- A letter cell supported by entries in both the Across and Down directions.
- Fill density
- The percentage of the square grid that contains answer letters.
- Crossing rate
- The percentage of filled cells that have both horizontal and vertical support.
- Unused entry
- A cleaned answer that did not appear in the accepted grid.
- Seed
- A text value used to make shuffled placement attempts reproducible when the same entries and settings are used again.
- Symmetry match
- A percentage showing how closely the final filled-and-empty pattern matches the selected rotational or mirror rule.
References:
- Crossword User Guide, American Printing House.
- Crossword Grids, CrosswordGrids.com.
- Generating a Crossword Puzzle, Baeldung on Computer Science.
- Crossword Style Guide, The Michigan Daily.
- Crossword Puzzles Guide, Puzzler.