Skip to content

nmrugg/stockfish.js

Repository files navigation

Stockfish.js

Stockfish.js is a WASM implementation of Stockfish chess engine.

Stockfish.js is currently updated to Stockfish 16.

This edition of Stockfish.js comes in four flavors.

  • The full mult-threaded engine:
    • This is best version of the engine but will only run in new browsers with the proper CORS headers applied.
    • Files: stockfish-nnue-16.js & stockfish-nnue-16.wasm
  • The single-threaded engine:
    • This will run in most browsers but is not as responsive as the multi-threaded version.
    • Files: stockfish-nnue-16-single.js & stockfish-nnue-16-single.wasm
  • The mult-threaded non-SIMD engine:
    • Requires CORS headers but will run on older browsers that do not support SIMD (such as older Safari):
    • Files: stockfish-nnue-16-no-simd.js & stockfish-nnue-16-no-simd.wasm
  • The mult-threaded non-nested worker:
    • Designed specifically to workaround a bug in Chrome 109. Requires CORS headers.
    • Files: stockfish-nnue-16-no-Worker.js & stockfish-nnue-16-no-Worker.wasm

For older WASM engines or a pure ASM.JS engine, see the Stockfish.js 11 branch.

API

You can run Stockfish.js directly from the command line with Node.js 14.4+. You may need to add some command line flags to get it to run:

node src/stockfish.js

Stockfish.js can be found in the npm repository and installed like this: npm install stockfish.

If you want to use it from the command line, you may want to simply install it globally: npm install -g stockfish. Then you can simply run stockfishjs.

In Node.js, you can either run it directly from the command line (i.e., node src/stockfish.js) or require() it as a module (i.e., var stockfish = require("stockfish");).

Compiling

You need to have the emscripten compiler installed and in your path (tested with 2.0.26). Then you can compile Stockfish.js with the build script: ./build.js. See ./build.js --help for details.

Example

There are examples in the example folder. You will need to run the example/server.js server to view the client-side examples.

There are also example using Node.js.

Thanks

License

GPLv3 (see license.txt)