Skip to content
Mobile/Web chess UI for
TypeScript JavaScript Shell
Branch: master
Clone or download

Latest commit

Latest commit 97c7579 May 8, 2020


Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/workflows add ci Apr 6, 2020
bin add publish script Feb 24, 2017
dist upgrade dependencies Jan 9, 2020
screenshot minify screenshots May 8, 2020
src replace forEach with for of loops Apr 6, 2020
.eslintrc.json more eslint Apr 6, 2020
.gitattributes Hide dist js files in git diff Jul 28, 2019
.gitignore libs should not track lockfile Apr 6, 2020
LICENSE relicense to GPL-3.0 (from MIT) Feb 24, 2017 tweak development commands Apr 6, 2020
gulpfile.js target es6 Jul 12, 2019
package.json bump eslint Apr 6, 2020
tsconfig.json Better typescript sourcemaps Jul 31, 2019


Continuous Integration npm

Chessground in 2D and 3D

Chessground is a free/libre open source chess UI developed for It targets modern browsers, as well as mobile development using Cordova.


Chessground is distributed under the GPL-3.0 license (or any later version, at your option). When you use Chessground for your website, your combined work may be distributed only under the GPL. You must release your source code to the users of your website.

Please read more about GPL for JavaScript on



Chessground is designed to fulfill all web and mobile apps needs, so it is pretty featureful.

  • Well typed with TypeScript
  • Fast. Uses a custom DOM diff algorithm to reduce DOM writes to the absolute minimum.
  • Small footprint: 10K gzipped (30K unzipped). No dependencies.
  • SVG drawing of circles and arrows on the board
  • Entirely configurable and reconfigurable at any time
  • Styling with CSS only: board and pieces can be changed by simply switching a class
  • Fluid layout: board can be resized at any time
  • Support for 3D pieces and boards
  • Full mobile support (touchstart, touchmove, touchend)
  • Move pieces by click
  • Move pieces by drag & drop
    • Minimum distance before drag
    • Centralisation of the piece under the cursor
    • Piece ghost element
    • Drop off revert or trash
  • Premove by click or drag
  • Drag new pieces onto the board (editor, Crazyhouse)
  • Animation of pieces: moving and fading away
  • Display last move, check, move destinations, and premove destinations (hover effects possible)
  • Import and export positions in FEN notation
  • User callbacks
  • No chess logic inside: can be used for chess variants


npm install --save chessground


const Chessground = require('chessground').Chessground;

const config = {};
const ground = Chessground(document.body, config);




Install build dependencies:

npm install

To build the node module:

npm run compile -- --watch

To build the standalone:

gulp dev  # build once
gulp      # build and watch
gulp prod # build minified
You can’t perform that action at this time.