How Solvedle puzzles are made
Solvedle publishes three puzzles every day: a 6×6 Tango-style sun & moon warm-up, an 8×8 medium and a 9×9 hard Star Battle. Every Star Battle goes through this pipeline:
- Place stars. A random valid layout: one star per row and column, none touching.
- Grow regions. Each star seeds a colour region that grows outward until the grid is filled. Regions have at least 3 cells (2 on small grids) and at most 1.8× the grid width.
- Make the solution unique. An exhaustive solver searches for a second solution. If one exists, region borders are adjusted to rule it out, and the search repeats.
- Grade by human logic. A second solver uses only the techniques people use, always trying the easiest first. Puzzles that can't be finished without guessing are thrown away. The hardest technique needed sets the difficulty.
- Verify again. Every accepted puzzle is re-checked by an independent exhaustive search before it enters the schedule.
Each daily Star Battle sits near the middle of its difficulty band. The benchmark below describes the generator's acceptance rate, rather than the probability that an arbitrary grid has a unique solution.
Star Battle generation benchmark: 12,000 seed attempts
Reported 2026-10-29: 2,000 seeds for each size from 5×5 to 10×10, using 8 workers after the region-repair upgrade. These are historical aggregate results transcribed from the generator's benchmark notes (source revision 8472433); this publication is not a new benchmark run.
| Grid | Attempts | Accepted | Acceptance | Easy | Medium | Hard | Expert | Wall time |
|---|---|---|---|---|---|---|---|---|
| 5×5 | 2000 | 1943 | 97.2% | 1732 | 211 | 0 | 0 | 0.3 s |
| 6×6 | 2000 | 1755 | 87.8% | 1434 | 310 | 11 | 0 | 0.8 s |
| 7×7 | 2000 | 1681 | 84.0% | 797 | 722 | 151 | 11 | 2.5 s |
| 8×8 | 2000 | 1692 | 84.6% | 565 | 791 | 293 | 43 | 9.3 s |
| 9×9 | 2000 | 1713 | 85.7% | 397 | 719 | 470 | 127 | 53 s |
| 10×10 | 2000 | 1705 | 85.3% | 298 | 602 | 534 | 271 | 486 s |
What acceptance means: a seed passes region repair, shape limits and the human-technique grader, then an exhaustive solver confirms exactly one solution matching the intended stars. The difficulty counts cover accepted puzzles only. The remaining attempts fail one or more checks; this summary does not break down rejection causes.
Difficulty score and limits
Score = Σ (steps at level × level weight). Levels 1–5 use weights 0, 0.15, 1, 2.5 and 4: single candidate, cell elimination, two-unit, three-unit and four-unit confinement. The grader always tries the easiest available technique first.
Easy uses levels 1–2. Medium reaches level 3 at most twice. Hard uses level 3 at least three times or level 4 once. Higher requirements are expert. These are internal difficulty labels, not ratings calibrated against player solve times; a different solving strategy can produce a different trace.
Limitations: this CSV contains six aggregate rows, not individual seed outcomes or a representative sample of all possible Star Battle grids. Wall times are for the original eight-worker run; the exact CPU model was not recorded, so they are not portable performance guarantees. To repeat the procedure with the same source revision, run node generator/batch.mjs 2000 5,6,7,8,9,10; seed values are grid size × 1,000,000 + 1…2,000.
Download the benchmark CSV. The published aggregate dataset is available under CC BY 4.0. Cite: Solvedle, “Star Battle generation benchmark: 12,000 seed attempts”, 2026-10-29, solvedle.com/about#star-battle-benchmark.
Tango puzzles start from a random balanced grid of suns and moons. Clues (given cells and = / × signs) are removed one at a time while an exhaustive solver confirms the solution stays unique, then a human-style grader checks the puzzle can be finished with pairs, sandwiches, signs and counting alone; clues are added back until it matches the target difficulty.
Your progress and streak are stored only in your browser. To show how many players finished and how your time compares, the game sends your solve times with a random anonymous ID; no name, email or account is involved, and there are no ads during play.