Skip to content
The Stockfish chess engine in Javascript
C++ JavaScript Makefile Other
Branch: master
Clone or download
Latest commit 9f42967 Aug 2, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
example update example Jun 26, 2019
src make loading Stockfish from a module easier Aug 2, 2019
.gitattributes Updating to Stockfish 8 Oct 19, 2017
.gitignore update example Jun 26, 2019
.npmignore npmignore Dec 17, 2018
.travis.yml Updating to Stockfish 8 Oct 19, 2017
AUTHORS update to Stockfish 10 Dec 17, 2018
Copying.txt Updating to Stockfish 8 Oct 19, 2017
Top CPU Contributors.txt Updating to Stockfish 8 Oct 19, 2017
bench.js committing miscellaneous old changes Oct 19, 2017
build.js update to Stockfish 10 Dec 17, 2018 More debugging stuff. Mar 9, 2015
create_branch_at.js Some notes. Mar 16, 2015
engine-interface.txt Updating to Stockfish 8 Oct 19, 2017
license.txt Updating to Stockfish 8 Oct 19, 2017
load_engine.js Remove duplicate cmd stop check May 8, 2019
package.json 10.0.1 Aug 2, 2019 update to Stockfish 10 Dec 17, 2018
rolling_merge.js Display proper command. Mar 9, 2015
startup_tester.js Very simple start up tester. May 26, 2015
stockfishjs Follow symlink so that it can be installed globally. Apr 12, 2015
test_load_engine.js Updating to Stockfish 8 Oct 19, 2017
tester.js remove outdated checking from the tester May 4, 2019


Stockfish.js is a pure JavaScript implementation of Stockfish, the world's strongest chess engine.

Stockfish.js is currently synced with Stockfish 10.


You can run Stockfish.js directly from the command line with Node.js.

In a web browser, Stockfish.js can be run in a web-worker, which can be created like this:

var stockfish = new Worker("stockfish.js");

The output of the engine is again posted as a message. To receive it, you need to add a message handler:

stockfish.onmessage = function onmessage(event) {

Input (standard UCI commands) to the engine is posted as a message to the worker:

stockfish.postMessage("go depth 15");

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");).

Note about pondering

The code has been refactored to allow for pondering. However, it can take a long time for Stockfish.js to process the "stop" or "ponderhit" commands. So it could be dangerous to use in a timed game.

In the future, it may be improved upon.


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


You can try out Stockfish.js online here.

There are also examples in the example folder. You can either open the example/index.html directly in a web browser or run a small static server to try it out. If you have Node.js, you can start a simple web server in that directory like this: node server.js.

There is also a simple example using Node.js (example/simple_node.js).

Alternatively, you can also run Stockfish.js from the command line via ./stockfish.js or node src/stockfish.js.



GPLv3 (see license.txt)

You can’t perform that action at this time.