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:
- This is strongest version of the engine, but it is large (>100MB) and will only run in browsers with the proper CORS headers applied. This engine is recommended if possible.
- Files:
stockfish-18.js&stockfish-18.wasm
- 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
- This is also large but will run in browsers without CORS headers; however it cannot use multiple threads via the UCI command
- 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:
- Same as the first single-threaded engine but much smaller (≈7MB) and quite a bit weaker. This engine is recommended for mobile browsers that do not support CORS.
- Files:
stockfish-18-lite-single.js&stockfish-18-lite-single.wasm
- 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.
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");).
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.
To learn how to use the engine in your own projects, see the examples folder.
- The Stockfish team
- exoticorn
- ddugovic
- niklasf stockfish.js, stockfish.wasm, and stockfish-web
- hi-ogawa
- linrock
- Chess.com for sponsering development of Stockfish.js
See AUTHORS for more credits.
(c) 2026, Chess.com, LLC GPLv3 (see Copying.txt)