Belofte  version 2.1.14
A promising chess program using the UCI or Winboard interface
About belofte

An overview and general introduction of the belofte chess program

This is the about belofte file for belofte, a promising chess program released under GNU - GPL v2.0.


Belofte is a promising chess program. Belofte is a Flemish word that can be translated as 'a Promise' or 'someone with potential'. In this context, the latter is the intended meaning. The most correct translation would be 'A promising chess program'. It is pronounced as 'b-euh-loft-euh'.

The added value of Belofte is that it can be beaten by a human opponent. The program is a perfect companion of beginning chess players. Please note that this advantage might fade away in upcoming versions.

Belofte is cross platform and requires a graphical user interface. The pogram can also be run on the command line. Most users will want to use a graphical user interface. See the supported programs section below.

The chess program is compatible with xboard and UCI (universal chess interface). This means, it can be used as a plug-in for almost all commercial and free chess programs. At this moment, it has been tested on Mac OS X, Windows, UNIX, Solaris, Linux and Android. Binaries are available in 32 and 64 bit versions on Mac OS, Windows, Linux, Android and Raspberry. The C++ (11) source code is also available if one would like to create a version for another platform.

Version 2 is a rewrite in C++11 of the program from scratch.

Playing a game

Launching the program from the graphical user interface

Please note that the program is not intended to run clicking from a graphical user interface. On Windows, a command line will be presented, on all other platforms, the program will run in background needing to be killed manually. Please configure a UI as explained below.

The program interfaces according to the UCI protocol or the Xboard protocol *(also known as the CECP or Winboard protocol)*. It works fine as well with any interface implementing the UCI or Xboard protocol.

Supported programs

Virtually all chess interface programs will work out of the box, and this on all platforms. (Linux, Windows, Mac, iOS, Android).

This section is far from complete, it just gives some ideas about the possibilities. Please search the internet on xboard/winboard/uci compatible programs to get a full list. A good starting point can be this list, this list and this list.

Please refer to the user manual for more details on configuration options.

Launching the program on the command line

Please open a terminal or command prompt and launch the program. The program accepts different optional command line parameters as shown below:

  • Linux, BSD Unix, Mac OSX, Unix, Solaris Windows 10 with WSL or WSL-2.
./belofte [script]
./belofte --help
./belofte --uci [script]
./belofte --version
./belofte -xboard [script]
  • Windows 95, 98, Me, Vista, 7, 8, 8.1, 10, 11

Replace ./belofte with belofte.exe.

  • Android, Arduino, ...

To be completed.

Typical game on the command line

After having started the program, issue the following commands:

id name Belofte 2.1.4
id author Yves De Billo√ęz
... further option lines ...
>position startpos
>go depth 1
... wait for engine to play its move ...

Configuring belofte

The UCI protocol has support for runtime configuration that can be activated through the UI.

Possible UCI configuration commands (default in bold):

  • alg Random|StaticEval|BruteForce|SearchIterativeBF| AB |ABFS|ABFH
  • evaltype PiecesOnly|StaticBoard| PositionalBoard

After reading eventual command line parameters, belofte will parse a file passed on the command line. If none is passed, Belofte will start reading a file consisting of its program name and a .rc suffix. This can be useful to read e.g. an opening book or to configure the algorithm.

e.g. One could rename belofte-2.1.4 into belofte-2.1.4-random and supply an rc-file with the name belofte-2.1.4-randcom.rc with the alg Random command in order to force this version to play with the ramdom protocol.

# configuration script
echo Reading configuration script belofte-2.1.4.rc
alg Random

At runtime, after playing a move, one could undo the move and issue an alg BruteForce command to search again with the brute-force algorithm.

When compiling, it is possible to tweak how belofte works. Please refer to the compiling instructions.

Playing against other engines

Belofte can be tested against other engines. Please edit the test/engines.json file to include your engine. You can edit the test/ script to organise a tournament in between different engines. Make sure to extend the path in the script to include all engines you want to use. Use symbolic links if required.

cd test
./ -debug -concurrency 2
./ -concurrency 8

Following an ongoing match.

cd test
./ tour-nextversion

Belofte can be used with cutechess[-cli], BanksiaGui and Arena.

Testing positions, benchmarking, finding mates

Belofte supports epd to test a position. Launch epd pos, epd file commands with valid epd strings. Please refer to the documentation for more information.

cd test
./ belofte bmi2 2.1.4
belofte>epd file epd/test.epd

Run benchmark against specific compile (GCC only):

cd test
./ belofte popcnt 2.1.4 --bench

Run windows (32/64 bit) executable from linux through wine:

cd test
./ wine 64 2.1.4 --version

Belofte also supports executing commands from a command file. Use exec to run a test.

cd test
belofte>exec testcase/perft01.rc


The current strength of Belofte is about 1200 elo at in in Lightning and 750 in Blitz. Version 0.2.8 has 751 on GURL. Version 0.9.0 has 692 on CCRL. Version 0.9.3 has 989 on CCRL. Version 0.9.12 has about 1200 elo. Version 2.0.8 has about 600 elo. Version 0.9.18/.20 should be the strongest version. Unfortunately, version 0.9.18 has some issues on windows and did not make it in the public elo lists.

Evolution of strength

The version has undergone some enhancements over the different versions. Some were not always correct. For a history of the different versions, and their reflection on the ELO obtained, please consult the list below.

Version CCRL Comment
2.1.3 1218 Alpha-Beta + Positional Evaluation
2.1.2 1027 Alpha-Beta Fail Soft + Static evaluation + QS
32 bit version tested (bad compile)
2.1.1 1007 Alpha-Beta + Positional evaluation + QS
2.1.0 1045 Alpha-Beta + Static evaluation + QS
2.0.8 798 Iterative BF + QS
2.0.6 BruteForce + QS
2.0.4 StaticEval + QS
2.0.0->2 Pure random player
Version Estimate Comment
0.9.13->20 1300 **Not stable**
0.9.12 1198 (CCRL: 1195) QS search fixed
0.9.3 989 (CCRL: 1045)
0.9.1 **Not stable**
0.9.0 692 (CCRL: 675)
0.2.8 950 (CCRL: 1195) (GURL-2: 751) (Freechess: 742)
0.2.7 1130
0.2.6 1190 Added opening book. (freechess: 6600 games)
0.2.5 1038
0.1 680

Rating lists


CCRL Blitz Rating List - Custom engine selection
2583293 games played by 3089 programs, run by 22 testers
Ponder off, General books (up to 12 moves), 3-4-5 piece EGTB
Time control: From Jan 2020, equivalent to 2'+1" on an Intel i7-4770K. See the "about" page.
Computed on August 14, 2021 with Bayeselo based on 2'583'293 games
Tested by CCRL team, 2005-2021,
Rank Engine Elo + - Score AvOp Games
1 Belofte 2.1.3 64-bit 1218 +26 -26 50.1% -2.0 526
Belofte 0.9.12 1195 +27 -28 40.7% +68.7 497
Belofte 0.9.3 64-bit 1043 +127 -95 91.6% -501.4 367
Belofte 2.1.0 64-bit 1043 +105 -95 42.8% +40.9 459
Belofte 2.1.2 1025 +121 -113 35.9% +104.1 524
Belofte 2.1.1 64-bit 1006 +140 -133 32.7% +140.6 639
Belofte 2.0.8 64-bit 797 +349 -341 15.3% +332.4 264
Belofte 0.9.0 674 +469 -464 53.6% -41.9 3237


To get its current rating in the ##chessprogramming channel, type the following command: !rating belofte 40/4

Version 0.2.8: position 1207
CCRL Blitz Rating List - Custom engine selection
2205595 games played by 2595 programs, run by 22 testers
Ponder off, General books (up to 12 moves), 3-4-5 piece EGTB
Time control: From Jan 2020, equivalent to 2'+1" on an Intel i7-4770K. See the "about" page.
Computed on March 7, 2020 with Bayeselo based on 2'205'595 games
Tested by CCRL team, 2005-2020,
Rank Engine Elo + - Score AvOp Games
1 Belofte 0.9.12 1205 +28 -28 42.0% +58.5 460
Belofte 0.9.3 64-bit 988 +162 -132 93.3% -497.3 360
Belofte 0.9.0 691 +433 -428 53.6% -42.7 3237

Finger of Belofte(C):
rating RD win loss draw total best
Blitz 742 50.9 11 70 0 81 827 (30-Nov-2004)
Lightning 1164 305.0 0 2 0 2
Total time online: 14 hrs, 11 mins
% of life online: 13.0 (since Sun Nov 28, 01:43 CET 2004)
Timeseal : Off
1: I am a computer, running on a Dual G4 1.25 Ghz
2: I am not strong though, rated around 700 elo but improving
3: You can find more on
4: I do not have opening books, no endgame knowledge, no nothing....
5: I play regular chess. Other variants will be added later.
6: I will not play against abusers.... and only rated games. For now.

Beware of Elo levels

There are as many elo levels as peer groups. Elo levels can be compared to IQ. They give a relative indication how persons compare to each other but they cannot be used to compare a person of group A to a person of group B. FIDE elo at the 1900 range is comparable to USCF in the 2000 range, and FIDE 2500 is comparable to USCF 2650. The score obtained for a program should more or less be the average of all different tests, but is no absolute indication. For each test set, the elo level for a 50% and 100% score is given, together with the standard deviation. When scoring less than 50%, the results should no longer be representative.

Project structure

  • doc contains all the documentation;
  • src contains the source code and include files;
  • dist contains subfolders per platform where the compiled binaries will be found;
  • project contains the makefile and subfolder for each project environment;
  • test contains different test scripts.

Platform specific notes


Compiled with incomplete support for C++11. Compiled with #define INCOMPLETE_C11.

Mac OS Apple silicon


Mac OS x86 32

The latest supported version is 10.5. Binary available as 0.2 till 0.2.8 and >2.0.1.

Mac OS X (before Tiger 10.0, 10.1, 10.2, 10.3)

Minimum requirement is a G3 with 32 MB ram plus the requirements of X11.


Versions 0.2 till 0.2.8 are the only binaries available. The latest supported version is 10.5 through a universal binary.


When compiling for Android, xboard mode is disabled and an implicit uci command is issued upon program start. Compiled with #define BELOFTE_UCIMODE. Version 2.0.8 and higher available for both ARM and x86 in both 32 and 64 bit.


No Unicode supported. Compiled with #define BELOFTE_NOUNICODE and #define _WIN32 (also for 64 bit).

Windows 3.11

Version 0.2 till 0.2.8. Higher versions have not been tested. Make sure you have Win 32 installed.

Linux PPC

The latest version for which the source code has been tested is version 0.2.8.




Version 0.2.2 is the only binary available. SPARC only. Compile with #define __LITTLE_ENDIAN__.


Version 0.2.2 is the only binary available. Itanium only. Compile with #define __LITTLE_ENDIAN__.

Other platforms

Version 0.2.8 used to run in the past on freechess. Missing platforms are: DOS, Windows CE, Windows PE, Palm, iOS.