At a Glance
On October 18, 2026, we had each difficulty level play the others in all 7 Omokboard games that have an AI (Tic-Tac-Toe counted as two modes, Classic and Ultimate). In every game, Hard beat Normal and Normal beat Easy. In Reversi, Dots and Boxes, Ultimate Tic-Tac-Toe, and Chess, Hard did not lose a single game to Normal.
Some gaps were small. In Connect 4, moving first mattered more than difficulty (the first player won 19 of 20 Hard vs Normal games), and Yut Nori has so much luck that Hard still lost about 3 in 10 games to Normal.
How We Measured
- The real game code: We loaded the AI straight from the game files the site serves and had the AIs play each other without a screen. It is not a separate AI built for testing.
- Alternating first move: The two difficulty levels swap who moves first every game, so the first-move advantage doesn't pile up on one side.
- No repeated games: In Omok and Connect 4 the first 2 moves are placed at random near the center, and in Chess the first 4 moves (2 per side) are random, before the AIs take over. The other games vary on their own, through the AI's random choices or luck such as the yut throw.
- Chess adjudication: If a game isn't over after 200 moves (100 per side), the side ahead by 3 or more points of material (pawn 1, knight and bishop 3, rook 5, queen 9) wins; otherwise it's a draw.
- Win rate: A draw counts as half a win. For example, 12 wins, 1 draw, and 7 losses out of 20 is (12 + 0.5) ÷ 20 = 62.5%.
- Setup: Measured on October 18, 2026 on a laptop CPU (Intel Core i7-14650HX) with Node.js 24. Times are for this machine; on a phone they can be several times longer.
Win Rates by Game
The win rate of the level on the left against the level on the right. Actual wins, draws, and losses are in parentheses.
| Game | Hard vs Normal | Normal vs Easy | Hard vs Easy | Games each |
|---|---|---|---|---|
| Omok | 65.0% (13W 7L) | 100% (20W) | 100% (20W) | 20 |
| Connect 4 | 55.0% (11W 9L) | 90.0% (18W 2L) | 80.0% (16W 4L) | 20 |
| Tic-Tac-Toe | 76.3% (21W 19D) | 71.3% (24W 9D 7L) | 96.3% (37W 3D) | 40 |
| Ultimate Tic-Tac-Toe | 100% (20W) | 100% (20W) | 100% (20W) | 20 |
| Reversi | 100% | 86.0% | 99.5% | 200 |
| Dots and Boxes | 100% | 99.8% | 100% | 1,000 |
| Yut Nori | 69.4% | 75.3% | 84.6% | 4,000 |
| Chess | 100% (20W) | 100% (20W) | 100% (20W) | 20 |
Reversi, Dots and Boxes, and Yut Nori ran many games, so only the win rate was recorded. Dots and Boxes and Yut Nori cannot end in a draw.
Time per Move
Pure calculation time for the AI to pick one move. In the real game a short pause is added on top so you can follow the AI's move (in Omok: 1.2 s on Easy, 0.5 s on Normal, 0.1 s on Hard).
| Game | Easy avg | Normal avg | Hard avg | Hard, 95% within | Hard max |
|---|---|---|---|---|---|
| Omok | 0.2 ms | 14 ms | 241 ms | 746 ms | 2.1 s |
| Connect 4 | 0.1 ms | 5 ms | 82 ms | 191 ms | 267 ms |
| Ultimate Tic-Tac-Toe | 0.0 ms | 1.6 ms | 72 ms | 160 ms | 263 ms |
| Reversi | - | - | 20 ms | - | 258 ms |
| Chess | 73 ms | 12 ms | 616 ms | 1.0 s | 1.3 s |
Tic-Tac-Toe, Dots and Boxes, and Yut Nori were not timed. Chess Easy is slower than Normal because Easy scores every legal move with the rules library, while Normal and Hard use a fast calculator written just for the AI.
What the Numbers Show
- Tic-Tac-Toe Hard never lost in 80 games. It calculates every move to the end. Tic-Tac-Toe is a draw when both sides play perfectly [Source: Wikipedia], so against Hard a draw is the best you can do. Normal also calculates to the end on about half of its moves, which is why 19 of its 40 games against Hard were draws.
- In Connect 4, the first player almost always wins. The side that moved first won 19 of 20 Hard vs Normal games. Hard won all 20 games where it moved first (against Normal and Easy), but moving second it won only 1 of 10 against Normal and 6 of 10 against Easy. Against the AI on Omokboard you always move first, so an accurate double threat is enough to beat Hard. See the Connect 4 guide for how.
- Omok also favors the first player, but less than Connect 4. Against Normal, Hard won 8 of 10 games moving first and 5 of 10 moving second. In AI games the AI always plays White, which moves second. The History and Origins of Omok explains why moving first helps.
- In Yut Nori, skill shows less in the win rate. Over 4,000 games Hard beat Normal 69.4% of the time and Easy 84.6%. So Easy, which picks a legal move at random, still beats Hard about 15 times in 100. That's how much the yut throw matters.
- Chess Hard averages 0.6 s per move. It always reads 3 moves ahead, and 4 when that finishes within 1 second. We checked that the AI's calculator never gets the rules wrong with perft, the standard test chess programs use: it counted exactly 197,281 positions 4 moves deep from the starting position, and 97,862 positions 3 moves deep from a tricky test position (Kiwipete), both matching the reference values.
What the AI Actually Does at Each Level
The gaps above come from these settings, exactly as written in the game code.
| Game | Easy | Normal | Hard |
|---|---|---|---|
| Omok and Connect 4 | Random pick from the top 5 one-move scores (defense counts half) | Searches 2 moves ahead | Searches 4 moves ahead (12 candidate spots per step) |
| Tic-Tac-Toe | Random empty square | Half random, half calculated to the end | Every move calculated to the end |
| Ultimate Tic-Tac-Toe | Random | 25% random, otherwise searches 3 moves ahead | Searches 6 moves ahead |
| Reversi | Random legal move | Random pick from the top 3 one-move scores | Searches 4 moves ahead, to the end with 8 or fewer empty squares |
| Dots and Boxes | Random | Random pick from the top 4 scores | Best-scoring move plus endgame chain counting (the double-cross) |
| Yut Nori | Random legal piece | Highest score for finishing, capturing, and advancing | Also weighs the chance the opponent captures next throw |
| Chess | Random pick from the weaker 60% of moves | Searches 2 moves ahead | Searches 3 moves ahead (4 if done within 1 s), plus up to 8 more moves of captures |
What These Numbers Can't Tell You
- They aren't win rates against people. These are AI vs AI results, so they don't say how often Hard beats a human. People make long-term plans the AI misses, and also make mistakes the AI never would.
- Games with few rounds have a wide margin of error. A 20-game result can shift by a few games if measured again. Yut Nori (4,000 games) and Dots and Boxes (1,000 games) are fairly stable.
- Alkkagi and Sudoku Duel were not measured. Alkkagi would need the whole collision and sliding physics simulation, so we left it out this time. The Sudoku Duel AI's chance of a correct answer (Easy 50%, Normal 78%, Hard 95%) is fixed in the code, so there is nothing to measure by playing.
Reproduce It Yourself
All the measurement scripts are public. Clone the repository and run the commands below to measure the same way. Because of the random elements, the numbers will vary a little.
node scripts/ai-benchmark.mjs # Omok, Connect 4, Tic-Tac-Toe, Ultimate, Chess node scripts/yut-ai-check.mjs 4000 # Yut Nori node scripts/reversi-ai-check.mjs 200 node scripts/dots-ai-check.mjs 1000 node scripts/chess-ai-check.mjs # chess move generation check (perft)
Scripts: github.com/lys0318/Omokboard/scripts
FAQ
- Can I beat the Hard AI? Yes. These are AI vs AI results. In Connect 4 and Omok you always move first against the AI, and Connect 4 in particular favors the first player, so an accurate double threat can beat Hard. Tic-Tac-Toe Hard, however, is built never to lose, so a draw is the best you can get.
- Why does the number of games differ by game? Each game takes a different amount of time. Chess Hard needs about 0.6 s per move, so we played 20 games per matchup; a game of Yut Nori finishes quickly, so we played 4,000.
- Why does the AI take longer on screen than in these tables? The real game adds a deliberate pause so you can follow the AI's move with your eyes. The tables show only the calculation time.
- When will you measure again? Whenever the AI changes, we rerun the same scripts and update the numbers and the measurement date on this page.