Dev.to WebDev 🛠 Dev 👁 0 📖 2 min read

How I built a free crossword puzzle maker for classrooms

Every teacher I know has made a crossword by hand at some point: graph paper, a pencil, and an hour lost to fitting words together. I wanted to make that take about a minute, so I built CrosswordLabs, a free online cross

Every teacher I know has made a crossword by hand at some point: graph paper, a pencil, and an hour lost to fitting words together. I wanted to make that take about a minute, so I built CrosswordLabs, a free online crossword puzzle maker for teachers, parents and puzzle fans.

What it does

The workflow is deliberately simple:

  1. Enter your words and clues. Paste a vocabulary list, a spelling list or a set of review questions, one word and one clue per line.
  2. Get an auto-generated grid. The generator places the words so they intersect, numbers the entries and lays out Across and Down clues.
  3. Print or share. Every puzzle can be printed cleanly on a single page, or shared with a link so students can solve it on a phone or laptop.
  4. Use the answer key. One click gives you a filled-in version for grading.
  5. Browse ready-made puzzles. If you have no time to write clues, there are puzzles organised by topic, such as science, history and geography, ready to print.

It is free, and you do not need an account to try it.

Who it is for

Teachers use it for vocabulary review, exam prep and sub plans. Parents use it for rainy-day activities and homework practice. Puzzle fans like making a themed crossword for a birthday or a family group chat.

The stack

The app is built with Next.js and PostgreSQL.

  • Next.js handles server-rendered pages, which matters for ready-made topic puzzles that should be fast and easy for search engines to find. Interactive solving runs on the client.
  • PostgreSQL stores puzzles, clues and topics. Shared puzzles are plain rows with a short identifier, so share links are cheap to serve.
  • The grid generator is the interesting part. It is a backtracking placement algorithm: sort words by length, place the longest first, then try to cross each remaining word with letters already on the grid. It scores candidate placements by how many intersections they create and how compact the grid stays, and rejects placements that put two words side by side without a legal crossing.

What I learned

  • Generating a good grid is easy; generating a good-looking, compact one takes tuning. Scoring placements made a bigger difference than adding more randomness.
  • Print layout deserves real attention. Teachers judge the tool by the sheet that comes out of the printer.
  • Keeping the input form minimal beat adding features. Most people only want words, clues and a Print button.

Try it

If you teach, parent or just like puzzles, give CrosswordLabs a try and tell me what is missing. I am especially curious about which clue formats and topics would help most in the classroom.

📰 Read the original article on Dev.to WebDev

Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.