Welcome to the EmacsChess home page! This project is called chess.el, after the file it originally began as.

See our SourceForge Logo project site!

chess.el is currently at version 2.0b4. It is fully playable against crafty, gnuchess (5.0 or higher) and with other chess.el Emacsen over the network. There is no support yet for editing annotations and variations, or direct chatting.

Come back for further updates as the work progresses. chess.el only works with Emacs 21 at the present time.


Emacs Chess is also an object-oriented library for manipulating chess objects (games, plies, positions, etc), and for displaying them. It supports a wide range of engine objects to use as move sources. This what allows chess.el to act as a chess client.

chess-announce.el announces your opponent's moves verbally, such as "knight takes at f4" — provided you have "festival" installed.

chess-sound.el is similar to chess-announce, but uses specific WAV files for each sound used. It takes up much more disk space, but is nicer to listen to. Available in English only at the moment.

chess-irc.el provides a tiny IRC bot, allowing you to play games over IRC so long as your opponent enters moves in short algebraic notation. If they don't have chess.el, all they need is a regular chessboard, and a knowledge of SAN (short alegebraic notation).

chess-ics.el lets you to play on Internet Chess Servers, using chess.el as your chessboard display (which means chess-announce works with it, etc). It has only been tested with FICS so far.

chess-crafty.el, chess-gnuchess.el and chess-phalanx.el let you play against the Crafty, Gnuchess and Phalanx engines.

chess-random.el will create Fischer Random positions to play against. Note that this feature only really works against opponents who are also using chess.el. Simply type "S" in the chessboard display buffer to setup a Fischer Random starting position.

chess-network.el lets you play against other chess.el users directly, over a single open port on the server side. To be a server, you must have "netcat" installed, or be using Emacs 21.3 or higher (which supports server side network sockets). To be a client, all you need is Emacs 21.1 or higher.

chess-link.el lets you tie two engines together, so that events from one are responded to by events from another. This can let you run a chess bot on your computer over any of the transport, or you can use it to pit two computer chess engines against each other.

chess.el can even export chessboard display to other X servers, allowing you to play against people in your meeting room, even if they don't have Emacs installed!


The current beta version can be downloaded from the sourceforge project's download page. Click on the various tar.bz2 links on that page in order to download them.

Note that there is a separate download of piece images (for Emacs 21 installations that have XPM support built-in), also a separate download of .WAV files, for use with the chess-sound.el announcing module. (Note: If you have "festival" installed, you can still get voice announcing without these files. They just sound better).

Chess Puzzles

M-x chess-puzzle makes it very nice to play through puzzle collections. Here are two that work well with it, taken from the books 1001 Brilliant Ways to Checkmate and 1001 Winning Chess Sacrifices. Just hit the spacebar when you've solved one to go on to the next, selected randomly!

Special thanks!

Special thanks to Mario Lang (delYsid on #emacs) for sponsoring this release financially. He is now also the project maintainer!