Chessko: play jelly chess against Stockfish in your browser
A free chess game with seven levels. The gentle ones are a small engine that wobbles on purpose; the top two hand the move to Stockfish 19, compiled to WebAssembly and running on your device. No sign-up, and your moves never leave the page.
jelly chess against a trained brain, or Stockfish running as WebAssembly in your browser
loading the jelly brain…
squishiness
chessko's opinion
waiting for the model
moves
jelly brain
—
—
—
your jelly record
lab
pieces squish with a small synthesised blip — no audio files, no libraries.
How Chessko plays
Click a piece, then a square, or drag it. Pick a level under squishiness: levels 1 to 5 use Chessko's own search and get steadily less wobbly; level 6, Gelatitan, is Stockfish held to a 2000 Elo cap; level 7, Set in Stone, is Stockfish at full strength. The hint button always asks full-strength Stockfish. The bar under chessko's opinion shows who the trained evaluation thinks is ahead.
Everything is explained in short articles, with the real numbers from the code:
- How Chessko works: a chess engine that runs entirely in your browser A tour of Chessko, a free browser chess game: the rules engine, a home-grown search, Stockfish in WebAssembly, Web Workers and a small PHP backend.
- Chess engine basics: alpha-beta search, quiescence and evaluation How a chess engine picks a move: negamax, alpha-beta pruning, move ordering, transposition tables, quiescence search and evaluation, with examples from Chessko.
- Machine learning in a chess engine: logistic regression, a k-NN book and a UCB1 bandit What machine learning does in a small chess engine: a 16-feature logistic-regression evaluation, a k-NN opening book and a UCB1 bandit, with real numbers.
- Running Stockfish in the browser with WebAssembly and Web Workers How Chessko runs Stockfish 19 (a 1.8 MB WebAssembly build) in a Web Worker: UCI over postMessage, lazy loading, Elo limiting, stopping searches, and the GPL.
- How Chessko's difficulty levels work: temperature, slips and Stockfish limits The seven Chessko levels explained: move sampling and deliberate slips weaken the jelly engine; Stockfish is capped at UCI_Elo 2000 or runs at full strength.
Chessko FAQ
- Is Chessko free to play?
- Yes. Chessko is free, needs no account or download, and runs in any modern browser with JavaScript and WebAssembly.
- Does Chessko send my moves to a server?
- No. The rules, the search and Stockfish all run in your browser. When a game ends, only its result, the level, the side you played and the number of moves are stored, under a random anonymous id kept in your browser. No IP address is stored.
- How strong is the computer?
- It depends on the level. Levels 1 to 5 are a small home-grown engine that is made to wobble, from very beatable to always playing its best move. Level 6 is Stockfish 19 limited to UCI_Elo 2000, and level 7 is Stockfish 19 at full strength.
- Can Stockfish really run in a browser?
- Yes. Chessko runs a 1.8 MB single-threaded WebAssembly build of Stockfish 19 in a Web Worker. It downloads only when you pick a Stockfish level or ask for a hint.
- What if my browser does not support WebAssembly?
- Chessko falls back to its own search at full effort and tells you Stockfish could not start.
- Why is it made of jelly?
- The look comes from the name of the game: translucent lime and strawberry squares, and milk and blackcurrant pieces that wobble when they move. Everything that animates reflects something real, such as your turn, the engine thinking, or the level in effect.
Credits and licences
- Stockfish 19 via stockfish.js, GNU GPL v3 (licence text). Unmodified lite single-threaded build.
- canvas-confetti (ISC) for the win celebration.
- Baloo 2 and Nunito, SIL Open Font License, served from this site.
- The chess rules engine, search, evaluation and jelly are written for this project. The page stores a random id in your browser's local storage so your record survives a reload; nothing else is stored.