A fresh puzzle, whenever you want one.
Classic 9×9 sudoku in the browser. Press New Puzzle, fill in the blanks, and check your work as you go. Every puzzle is generated on demand by a small Rust program running at the edge. No accounts, no ads, nothing to install.
How a puzzle goes
One request for the puzzle, then everything happens in your browser. The board knows the answer, so checking your work is instant.

Start a puzzle
Press New Puzzle and a fresh board arrives in a blink, usually with 25 to 30 clues. Every one has exactly one solution.

Pick a cell, pick a digit
Tap an empty cell and its row, column and box light up. The buttons underneath offer only the digits that could still go there; x clears a cell.

Check, fix, finish
Press Check ? whenever you like. Wrong guesses are cleared and right ones stay. Get every cell right and the board tells you so.
Never the same twice
Each puzzle is generated when you ask for it: symmetric, minimal, and with a single solution, so logic always gets you there.
Only legal moves
The digit buttons leave out anything already in the cell's row, column or box, so you spend your time thinking, not scanning.
Check on your terms
Check as often or as rarely as you like. It quietly removes mistakes and keeps everything you got right.
Picks up where you left off
The puzzle and your checked entries live in this browser, so a reload or a closed tab doesn't cost you the board.
Rust, at the edge
The puzzle API started life as an Actix server on Heroku and went quiet when Heroku's free tier ended. Now the same Rust code is compiled to about 300 KB of WebAssembly and runs on Cloudflare Workers, next to the page that calls it. A puzzle takes well under a millisecond to generate, the Worker keeps no state at all, and anyone can call /api/puzzle directly.