Skip to content

nmrugg/stockfish.js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4,104 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Stockfish.js

Stockfish.js is a WASM implementation by Nathan Rugg of the Stockfish chess engine, for Chess.com's in-browser engine.

Stockfish.js is currently updated to Stockfish 18.

This edition of Stockfish.js comes in five flavors:

  • The large multi-threaded engine:
  • The large single-threaded engine:
    • This is also large but will run in browsers without CORS headers; however it cannot use multiple threads via the UCI command setoption name Threads. This engine is recommended if CORS support is not possible.
    • Files: stockfish-18-single.js & stockfish-18-single.wasm
  • The lite mult-threaded engine:
    • This is the same as the first multi-threaded but much smaller (≈7MB) and quite a bit weaker. This engine is recommended for mobile browsers when CORS is available.
    • Files: stockfish-18-lite.js & stockfish-18-lite.wasm
  • The lite single-threaded engine:
  • The ASM-JS engine:
    • Compiled to JavaScript, not WASM. Compatible with every browser that runs JavaScript. Very slow and weak. Larger than the lite WASM engines (≈10MB). This engine should only be used as a last resort.
    • File: stockfish-18-asm.js

The WASM Stockfish engine will run on all modern browsers (e.g., Chrome/Edge/Firefox/Opera/Safari) on supported system (Windows 10+/macOS 11+/iOS 16+/Linux/Android), as well as supported versions of Node.js. For slightly older browsers, see the Stockfish.js 16 branch. The ASM-JS engine will run in essentially any browser/runtime that supports JavaScript. For an engine that supports chess variants (like 3-check and Crazyhouse), see the Stockfish.js 11 branch.

API

In the browser, it is recommended to use the engine via Web Workers. See examples/loadEngine.js for a sample implementation.

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 emscripten 3.1.7 installed and in your path. Then you can compile Stockfish.js with the build script: ./build.js. See ./build.js --help for details. To build all flavors, run ./build.js --all.

Examples

To learn how to use the engine in your own projects, see the examples folder.

Thanks

See AUTHORS for more credits.

License

(c) 2026, Chess.com, LLC GPLv3 (see Copying.txt)

About

The Stockfish chess engine for web browsers

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 59