Notice: This software is dedicated to my wife and anyone who has been fighting breast cancer. All supports/help are welcome and highly appreciated!

This page is for downloading BanksiaGUI – a free chess GUI with beta versions, before officially releasing.

To run the app, just download, unzip and click the program. You need a 64 bit OS, either a Windows 7, 10, macOS, or Linux.

Bug reports, ideas, suggestions, feature requests… are highly appreciated! Please use some below ways:


Ver 0.43 beta (08 May 2021)


  • Fixed bugs:
    • After loading from storage, tournaments don’t arrange GPU games correctly
    • A synch issue may happen when displaying very fast games
    • Reinforced code for Lichess bots
    • Some small bugs
  • Some small improvements/adjustments such as improving Swiss pairing
  • New features:
    • Demo: create a simple, infinite, only-one concurrent tournament for one or multiple engines. It’s good for watching and/or making some quick tournaments for testing some new engines
    • New piece graphics (Kosal by Philatype)

Language packages

To use Banksia GUI with some languages, users can download language packages (extension .qm) and copy it into folder languages (it is located on the same folder with the runnable file of Banksia GUI. For macOS, it is in package, right-click on that to popup menu and select Show Package Contents)

You may help people by translating BSG into your languages by forking one of below repositories:

Version history


BanksiaGUI is built based on our opensource Banksia. You may visit, download and/or contribute:

486 thoughts on “Download

  1. Hallo,

    First i warnt to thank you for your Great work. I use this App on MacBook, iPad Air and iPhone 11. Since the Last update on iOS 14.5.1 i can Not get in the menues „Level“ and „Options“. They Show up for one second and then vanish again to the Right side.

  2. When clicking “clear all” in the Edit>Edit Board menu, the program crashes with:
    terminate called after throwing an instance of ‘std::out_of_range’
    what(): vector::_M_range_check: __n (which is 18446744073709551614) >= this->size() (which is 64)
    Version 0.41, Linux 64-bit

  3. When you have lichess bot online and then start a hyperbullet game against the lichess computer 1/4+0, program closes inmediately

  4. Lichess bot feature still does not work even in version 0.39. I also increased concurrency to higher values, but still without success. I still need to use older version 0.29. The version 0.29 is the last version, where Lichess bot feature works.

    1. Thanks a lot for the report. Do you mean the feature Challenge? It is strange since it works on my computer. BTW, I have been creating a new tutor video about creating/playing Lichess bots with BSG (publish within a few days). You may verify step by step.

  5. Hi…

    This one issue is still not resolved.

    Suppose I have 5 opening lines (A, B, C, D, and F). Then I will run a tournament with a total of 10 games (swap sides: ticked). This means that 1 opening will be played 2 times.

    Now, I want all of the openings to be played but in random order.

    So what might happen is:
    games 1 & 2 play the opening C
    games 3 & 4 play the opening F
    games 5 & 6 play the opening A
    games 7 & 8 play the opening; and
    games 9 & 10 play opening B

    In reality, there is no such option at BSG. I’ve tried various features (, but what happened is, there are always 1 or more opening lines that are played more than 2 times.

    What is expected to happen is like in the example above, but what happens at BSG is something like this:

    games 1 & 2 play the opening C
    games 3 & 4 play the opening F
    games 5 & 6 play the opening F
    games 7 & 8 play the opening; and
    games 9 & 10 play opening C

    There were 2 opening lines that were played more than 2 times, while there were two opening lines (A and B) that were not played at all.

    This is not the meaning of random. Random does not mean that it is completely random and has no rules. Random still has rules, that is, “one opening line can only be played more than 2 times if all existing openings have been played”.

    Thank you,

    1. I have been struggling to reproduce the issue. Could you please re-create the tournament (remember to set the opening select type to “All new in sequence”) and send me both banksiaplaying.json and that opening book (.PGN file)?
      Thank you very much again.

  6. Is it possible to make Lichess-bot separately, without the rest of the graphical graphical interface? You need “Lichess-bot” and “Engine info” in one window. One app (*. Exe) … I can’t figure out your codes. There are no comments on the program codes.

    1. Do you mean a stand-alone app for Lichess bot? Yes possible but the problem it will be harder to use, say, to install and configure engines, setup bots… when the benefit of the stand-alone app is not clear

      1. The whole program freezes … It is impossible to play normally … I think you give all the computing power to the engines, but the program itself does not have enough CPU time … Everything freezes for me. Especially when the engines find mat. I often lose because of this … Can you post the source code of Lychess-bot? I would remake them for myself …

        1. Oh, I see! I have been working on freezing issues and fixed some problems already and still continue. All my code, functions, libraries are integrated deeply to each other thus it’s not easy to separate. Definitely I will publish BanksiaGUI code but not right now

        2. BTW, if you are using Lc0 or its clones, try to turn off options LogLiveStats and VerboseMoveStats. They may create too much data, make BSG so laggy

  7. LiChessBot feature still doesn’t work via BanksiaGUI. This features works in 0.29 version. After version 0.29, LiChess Bot Challenges don’t work. They don’t appear to be working from Banksia GUI. I can start them from the LiChess web interface of any browser however.

    I have confirmed everything was set correctly (I checked on the names of players I want to challenge and verify other parameters). Even then Bot challengers are not sent via BanksiaGUI.

    1. Thanks a lot for the report. Could you increase the concurrent number (in the Lichess panel, to 3 or 4, e.g.) and try again? There is a bug when BSG considering that number. Thanks again.

  8. Good day,

    I apologize, the “Forums” link gives me HTTP ERROR 500 error, and the link to talkchess forum – 403 Forbidden, so I ask here:
    Is it possible to flip the board, so that black pieces are on the bottom and white ones on top, and if yes where I could find this option, please?
    Thank you.

  9. Hi! Banksia has been crashing for me for quite some time, back in the days when I first tried I remember it had something to do with how I placed each dock in the UI and I thought it was the PV window that was causing, however now even if it is switched off it crashes. Usually when I start a tournament and watch it on the main screen, concurrency set to 1, Around the third or fourth game it crashes.
    I can replicate it fairly easy if you want, just not sure what is causing it.
    I am on Windows 10. I was setting up a gauntlet tournament of two GPU engines vs a CPU. Works well on Cutechess, so I don’t think it has to do with the engines.

    1. Thanks for the report. Can you check if you turn on GPU engines’ options LogLiveStats and VerboseMoveStats? If they are on, just turn them off and try again. I realised those engines may create too many output and make BSG laggy too much and crash when processing them. I have been working on crashing issues too, fixed some already thus I hope the coming version may work better

  10. we need this report => “Live Rating” like TCEC =>

    suppose I run a tournament with 3 engines [A, B, C] and assign a rating to machine A = 0

    thus, every 1 game ends, the rankings are updated immediately with reference to the rating of engine A = 0

    if user does not assign a rating to one of the engines before the tournament starts, then system will randomly choose to assign a rating = 0 to one of these engines

    so the Tab will be like this…

    Initial Rating Live Rating Diff + –

  11. Tournament stopped at game 32 [], I think it’s not only me who has experienced something like this, a user on Talkchess also experienced the same thing

        1. Python is much easier than C++ for learning. It is also much easier when writing a new program due to it is a safer programming language (not easy to make mistakes), come with redundant libraries… However, C and C++ are better for creating higher performant programs. For the chess engine programmers, they almost talk in “C/C++ language” thus you are easier to discuss if using the same language with them.

  12. First I’d like to thank you for developing and sharing this truly amazing software! Hope you continue working and improving on it it.
    Re: BanksiaGui-0.37-win64
    Trying out the feature “Build Opening Books by Computing”
    My save to book name = BuildBook.bin
    Noticed while it is running that it creates a file “BuildBook.bin.tmp” and presently the size is 257 kb.
    When does it write to the BuildBook.bin?
    Let it run for sometime and then stopped it. It did not write to the file I mentioned and left the tmp one as it was when running. Later when I went back to it it asked me if I wanted to resume which is nice but when will it write to file and is there no way to force it to write the info it has collected to my BuildBook.bin?

    1. Perhaps that depends on the font and system. On my computer, the list length is changed clearly when the font changed, including font 9, 10, 11…

    1. Thanks a lot for the video and the suggestion. Yes, it is a very interesting feature. However, it is really a challenge for me to implement (that kind of re-acts depends much on the tool used to build the GUI)

    1. Could you give me the list of involving engines (or the file banksiaplaying.json) and configuration of that computer (CPU, OS)? I need to reproduce the crash. Thanks a lot

        1. Thanks, I got it and working on it. A bit hard for me at the moment to reproduce the issue since that computer has only a 2 GB RAM.

          1. yes, old computer, but other GUIs (Arena, Cutechess GUI, Fritz14, Hiarcs, Scid vs PC) all of them run well on that 2GB RAM computer

            and when running Tournament I only use 16 and 32MB of Hash, and let the computer run without the slightest interruption, I use another computer for work

            in my opinion, testing an application on a weak computer is very useful, it’s to ensure that the application works properly under any circumstances

          2. A clear difference between BSG and Arena/Cutechess is that BSG logs a lot. If you turn off some or all most all logs, especially the engine logs, the database log seems to be not good too, I guess BSG can run smoother on that computer

  13. I think you should start thinking of ways to integrate Ordo into BSG, because Ordo is currently used by a lot of people

      1. yes, Ordo only read from existent PGN, and Cutechess also use Ordo and implements it well… and I think BSG should too

        1. BSG has supported already the format of Cutechess computing info (three info items as we have discussed). I have been working on supporting TCEC’s format too

    1. Oh, do you mean to integrate the function to calculate Elo as Ordo? Elo calculation is one of my weak knowledge thus it is one of the weak points of BSG too. I have planned to solve that problem, just a bit… later because of being a bit lazy 😉

        1. Thanks a lot for the files!
          * CCC.pgn: not a standard data format, it used a mix between standard & TCEC-like such as +0.30/23 1.5s, ev=0.30, d=23, pd=c5, mt=00:00:01…
          * your computer.pgn: cutechess-cli. BSG can work well with that file
          * not a standard data format such as [%eval 206,19] 8.6s
          * TCEC.pgn: not a standard data format but BSG is supporting. I will fix some problem I have seen and may support fully later

          1. Normal users don’t care about standard or nonstandard, only programmers care about it.

            What normal users like me want is, the data from TCEC, CCC and SPCC are used as a reference in assessing the progress of a chess engine, so of course we want to read statistics from the data they present regardless of whether those datas are standard or not.

            It would be a added value to BSG if it can read statistics from TCEC, CCC and SPCC even though the data they present are not standard.

            I saw some persons starting to switch from Fritz to BSG, that’s because BSG has features that other GUIs don’t have, if BSG is not unique from other GUIs, then why would people use it?

            Being able to read statistics from TCEC, CCC, and SPCC is one of the things that makes BSG unique.

            I see BSG has started to have a place in the hearts of chess engine lovers 🙁

    1. Thanks a lot for the report. I can’t reproduce (on my Win10 pro). Can you try to expand the dialog, drag the bars between blocks/tables, drag the lines between columns of Participants table… add to add more spaces, just in the hope it appears again.

        1. Can you try to restart that computer as well as try on other computers? I have just tried on another computer Win7 but can’t reproduce either. Thanks

          1. on my new computer, no problem, this happen only on my old computer

            but I like to use a weaker computer to test an application, it aims to find out that an application is working properly

            and maybe the biggest cause is, because my old computer is using windows 8.1

          2. Thanks for the info. From that, I can reproduce now 🙁 It will be fixed for the next release

  14. Hi,
    First, Very nice piece of software. It is shaping up well. I found it by accident at LiChess (

    I have downloaded V.36b. I go to Tools / Download but nothing appears in tabs: Engines; Game Database; Opening Books; Syzygy. The download feature works well in previous version (v0.32). I am using Win 10 64 v1903

    1. Thanks a lot for your report and data.

      From the file logengines_behind.txt I found below info:
      1.20:21:07 Stockfish 200820 nn-82215d0fd0df> info depth 18 seldepth 24 multipv 1 score cp 54 nodes 495115 nps 332962 hashfull 247 tbhits 0 time 1487 pv c4d5 d8d5 f1g2 f8d8 b1c3 d5f5 c3a4 b8c6 d1c1 e7e5 d2d3 d8e8 h2h3 e5e4 d3e4 f5e4 e1g1 e4e2

      1.20:21:06 Stockfish 11> info depth 18 seldepth 29 multipv 1 score cp 20 nodes 1464685 nps 707235 hashfull 338 tbhits 0 time 2071 pv d7d5 f1g2 b8c6 d2d4 c8f5 e1g1 e7e6 b1c3 f6e4 c3e4 f5e4 d1d2 d8d6 a2a4 c6b4 f3e5 e4g2 g1g2 a8d8

      That info is matched to speeds of the first screen.

      1. I did retest, this time, the parameters are like this:
        -Engine: Stockfish 11
        -TC= movetime: 5s/move
        -I only took the data of the first move of Stockfish 11 from the starting position

        and here are the results:
        on the screen (nps=715) =>
        behind the screen (769) =>

        NPS Difference (in %) = (769-715)/769 = 0.07 * 100% = 7%

        maybe you can try it on your own laptop with the same engine (sf11), for 1 & 2 threads

        download link:

          1. yes, it is indeed a screenshot from the logengine

            I mean, they are logengines of the games being played on the screen and behind the scenes

  15. 1. I started a test game and the first thing I realized is that it is not possible to castle by moving the king into the tower square, which is good if you are playing bullet, as I usually do when playing online or in some other gui.
    2. It would be gratifying if reading in .si4 (scid) format were implemented, I know that banksiagui does not pretend to be a database manager, but scid is an open and documented format, in addition to being very widespread in the FOSS community, so to analyze games, even if it is “read only” would be very good.
    Thank you for reading.

    1. Thanks a lot for the feedback. 1) I will add that feature for the next release. Currently, users can move like that for chess960 only. 2) That is the issue of supporting a popular or not format. I am not sure about how popular Scid databases are since I am rare to see them. Thus I add your idea/request into my TODO list and will take some study first. Thanks again

  16. why are these 2 reports different?

    it seems that TOURNAMENT RESULT (above) makes more sense, because there is a difference of 1 depth at different NPS

    while on the report from RESULT and STATS (below), no difference in Depth for different NPS

    1. I guess some computing info may missing to write down to the PGN file thus the stats function collect and count a bit different between them. If you still have files of that tournament (banksiaplaying.json and the PGN file), please send them to me for checking. Thanks a lot

    1. They are JSON files (they all have extension .json). Since they all are text files, you may use any text editor to open and see as well as edit their contains. banksiamain.json contains all info about the general game configuration (not tournaments) such as timers, Syzygy path, book paths, adjudications… banksiadllist.json contains all information about downloading such as store folders, which ones are downloaded… banksiatour.json contains all info about tournaments such as selected engines, timers… They all are just information BSG needs to store for the next running and for the convenience of users – they don’t have to re-enter what they need. If those JSON files are missing or there is something wrong, BSG will ignore/discard and try to recreate them.

      1. So the json files that related to tournaments are only banksia engines.json, banksia playing.json and banksiatour.json ?

    1. Thanks a lot for the report. Bugs/crashing are always hard to find. I have been running many tests just to find them. If you can reproduce, please let me know. Thanks

      1. On high spec computers, Banksia GUI (latest ver) is running normally, but on computers with weaker hardware, thing like this can happen

        on my new computer, this does not happen, but on my old computer (Ivy Bridge) with only 2 GB of RAM, this happens

        but version 0.31, 0.32 and 0.33 runs very smoothly even on my old computer

        I started seeing this problem in versions 0.34, 0.35, and 0.36, 0.36b

        1. Thanks for the report! BSG has been found and fixed a few bugs thus I hope BSG could be back to “normal” in your weaker computer

          1. BSG suddenly stopped when the tournament was running, it is no longer happening in version 0.39. Thanks for your hard work.

    1. Cutechess stores only 3 computing info items, including score, depth, time such as { +0.49/15 0.37s }. BSG supports more popular 4-items-format: score, depth, time, node such as {-0.92/14 1.0 1816157}. That is why BSG ignored all computer info from Cutechess since it thought the data was wrong.
      I have been considering to support Cutechess 3-items-format or not. Node-info is one of very important ones anyway

      1. I think BSG should support Cutechess format, because this GUI is used widely

        besides, currently, only BSG supports this popular 4 item format, so if you use this standard, then none of the datas from other GUIs can be read by BSG, including Arena, Fritz and so on, because all GUIs only support the popular 3 items format

        1. Agreed! BSG will support 3-item-info and extract game stats as much as possible. Just ignore some node-stats such as speed, nodes/m…

    1. Look like the index column was scrolled too much to the left side and be hidden. You may need to scroll it manually back a bit. Not sure why that happens, I can’t reproduce on my computer

    1. Could you please send me the file banksiaplaying.json to me (via email), I need to reproduce the issue? Thanks a lot!

    1. Thanks for the report. That task is still on my TODO list. It is not straightforward for a quick fix. I will work on that later

    1. It is just a tool to run command lines – no more no less. Thus all depend on engines if they support what you need via command lines.

    1. Thanks for the report. Can you give me some more info:
      – Is it continuous tournaments, say, you run games from 1 to 41 without stopping, resuming?
      – At the crash point (game 41), which engines typically involve?

      If you could, please send me the file banksiaplaying.json (in configuration folder) which had that crash for further examination.
      Thanks a lot again

      1. -yes, it was a continuous tournaments
        -sf11 & stockfish_20080822_x64_modern

        I stopped the tournament in game 40. Then, about 10-15 minutes later, I continued the tournament, and in game 41 or 42 BSG stopped working. Because of this I closed BSG, then opened it again and continued the tournament and it ran well. Then a few moments later, BSG stopped again.

        I will run another tournament, and if it still happens, I will send you the file you requested.

    1. The score percent counts and calculates from scores of all players, not only one, thus we can understand/compare how good a player is by looking at how much percent he got.

      In that tournament, there are totally 5 wins and 30 draws, total score is 5 x 1 + 30 x 0.5 = 20. SF-Dark Horse got 1 win 4 draws, score = 1 x 1 + 4 x 0.5 = 3, so the percent of its score over the total score = 3 x 100 / 20 = 15%

      1. for example, SF-Dark Horse 0.1
        total games = 5
        wins = 5
        losses = 0
        draws = 0
        total score = 5
        in % = (5/20)*100% = 25% …never lose and only get a score of 25% ??

        I think, there should be another column that contains statistics about performance of each engine based only on the number of games they played.

        This 15% indicates relative performance to other engines in that tournament, not the actual performance of that engine.

        While this 60%, is the actual performance of that engine.

        So, there must be 2 different columns that show statistics based on the relative performance and the actual performance of those engines.

    1. BSG has supported partly that by understanding and parsing for information. However, that standard (probably by TCEC) is not as popular as the current one BSG supported (to write computing information as sequence numbers of score/depth time nodes)

        1. The problem is that it is a kind of (non-official) standard. If I add anything, other chess programs may get trouble to process that PGN file 🙂

          1. As an option. So there is an option (in the Tournament section), to add or not NPS into PGN

          2. Thanks, I may add later and/or consider to support fully TCEC format for engines info

    1. With the multi concurrency, the game in PGN file can’t be in the right order since BSB writes down immediately any game when it is just completed. However, the games may have different lengths/time periods, thus they may be completed not in order. That may make the next games be played (and then completed) not in order too and make the order be worse.

      To make those games be in the right order we need to post-process (after the tournament). However, that adds more complications (because BSG can start/stop/resume tournaments, quit/restart… at any time and the PGN file could be edited/modified by human/external programs at the same time) when the benefit is so little.

      1. “the game in PGN file can’t be in the right order since BSB writes down immediately any game when it is just completed” => but cutechess-cli can do that

        “when the benefit is so little” => it depends on what?

        If we want to test some Openings, then this becomes very important. Because we want to know how well an engine plays a certain Opening from the white and black side. If the order is not sequential, it’s certainly troublesome to find a second game from the same opening.

        1. I don’t know how cutechess-cli implements that. Perhaps it keeps some games in the memory and writes them down when they are in correct order. BSG can do the same. However, I don’t like that way since if the program crashes or be quitted/killed, some games may be lost. I consider saving games as a kind of logging: save immediately if have.

          When BSG creating a new tournament, all openings are probed/selected and embedded already into the games (you may look into the file banksiaplaying.json) before any engine starts. Thus they (openings) don’t be affected by the orders of starting nor completing games.

          1. If you use BSG to view PGN games, you can sort them easily!

            BTW, I am considering to let BSG export games at any time from the Tournament list, users will have PGN games in the tournament order, store it in any folder they want. That may make the PGN game log becomes less important

          2. “PGN game log” => you mean “results.txt” file ? I think this file is rarely opened by anyone

            but I think you have to provide this tool, then it’s up to the users whether to use it or not.

            I saw this tool is also in SCID, but there is only an option to sort games by ECO, not based on the tournament order

  17. Please make a step-by-step guide for running a tournament from CMD.
    Or at least provide a Script that can be directly pasted to CMD like this…

    cutechess-cli -recover -repeat -rounds 100 -games 2 -concurrency 7 -ratinginterval 1 -tournament gauntlet -pgnout D:\Chess\test3.pgn ^
    -resign movecount=5 score=500 ^
    -draw movenumber=50 movecount=10 score=9 ^
    -openings file=D:\Chess\Openings\SuperGM_2mvs_100.pgn format=pgn order=sequential plies=4 ^
    -tb D:\Chess\Tablebase\Syzygy\3-4-5piecesSyzygy\3-4-5 ^
    -tbpieces 5 ^
    -engine name=”Stockfish 11 64 POPCNT” cmd=D:\Chess\Engines\Stockfish\stockfish_20011801_x64_modern.exe option.Hash=32 tc=60+1 ^
    -engine name=”SF NNUE 190720 sv20200801-1515″ cmd=D:\Chess\Engines\StockfishNNUE\stockfish.sse41.halfkp_256x2-32-32.profile-nnue.2020-07-19.exe option.EvalFile=D:\Chess\Engines\StockfishNNUE\20200801-1515.bin option.Hash=16 tc=60+1 ^
    -each proto=uci option.Threads=1 timemargin=90

    This script is used to run Tournament at Cutechess-CLI.

    1. Sorry, there is a bug preventing BSG to run as a terminal/cmd program even it is designed to run that!

      For a temporary solution, you may download and run Banksia (not Banksia GUI) at It has a short guide which you may see by running banksia.exe -h

      Banksia is different from cutechess-cli since at the moment it requires some JSON files to run and can’t run with “pure” command line (without JSON files) only.
      I have planned to review and improve both banksia and BanksiaGUI about running in the command line but that will take a significant time/work.

        1. Yes, it is designed to be easier and can reuse/share JSON files between BSG and Banksia (no GUI). The main disadvantage (compared with cutechess-cli) is missing the way to run from pure command lines (without JSON files) only which I have considered to add later.

  18. I’ve tried various hardware, but it still shows that Engine Speed ​​on BSG is around 15-20% slower than in other GUIs like Arena.

    As I recall, this issue has occurred since Ver 0.11

    1. Thanks a lot for the report!

      Typically chess GUIs don’t affect engine speeds since they (GUIs) are just waiting for engines calculating then collect their stats. Engines are independent to take memory, threads from the system, calculating under the control (in terms of computing power) of the system, not BSG. Perhaps, the ways chess GUIs collect and display stats may be different.

      BTW, it is a good time to exam BSG more carefully and compares it with other GUIs. Can you give me the names of some engines, the OS, and the time controls you have used those tests? I will verify and fix BSG if something wrong. Thanks a lot again.

      1. SF11, SFnnue. Komodo 10, Houdini 1.5a
        win10 64-bit, win8.1 64-bit
        tc: 1m+1s, 3m+2s, 3s/move

        I suggest you to download Arena 3.5.1 (portable or installable), then do analysis (using 1 thread, then 4 threads, and 8 threads), and look at the Speed ​​reported by both GUI Arena 3.5.1 and BSG, you will see a pretty significant difference in Speed (about 15-20% slower).

        1. I have done a quick experiment on my computer WinPro 10 with Arena 3.5.1 and BanksiaGUI 0.34, using SF 11 and Komodo 11. The good news is that: speeds of an engine running under any chess GUI are the same and quite similar to that engine running directly in the console (command prompt) too. It means all those chess GUIs don’t affect/interfere speeds of chess engines.

          I have also noted that one factor we may miss when testing: those engines should be set carefully to the same hash size since the default hash sizes may vary from chess GUIs.

          I am going to do a few more tests with more engines and chess GUIs and writing a blog post about that.

          1. Can you help to do similar tests with 4-8 threads? My computer has only 4 cores thus I can’t make such that test at the moment. Engines on different chess GUIs should be run with the same thread number, same hash sizes. You may verify by looking into their logs to make sure they are set correctly. To reduce none-determined factors, you may turn off ponder, search to a fixed depth, test until their move replies become different. You may run that chess engine directly on a command prompt (without using a chess GUI) to verify too. Thanks.

          2. You can’t run a tournament via CMD since it is too hard to control manually: at least two engines involving, setups their options, start a new game for both, tell one to start computing, get its result then copy the result to the 2nd one and tell it to start computing…
            For testing speed, you just give an engine a given position, setup options and tell it to start computing. For example, after starting Stockfish from CMD, I type as following:

            setoption name Threads value 4
            setoption name Hash value 64
            setoption name Ponder value false
            postion startpos moves g1f3
            go depth 30

            BTW, I have managed to do one more quick test in which some engines run with 4 threads, 64 MB hash and computing for some different positions to fixed depth 30. The good news is that the speeds of engines are quite the same, regardless chess GUIs/none chess GUIs. A few more details were added to the blog post:

          3. I have noticed the NPS report in logresults, it turns out, the engine speed is the same as that reported in Arena.

            With this I conclude, the GUI reports different values ​​from the actual values ​​behind the scene.

          4. Yes, you are right! BSG usually displays speeds on the screen in short forms, say 12mN/s, without fraction when Arena may display in longer forms with fraction, say 12.321 mNPS. It is not a big difference nor big deal. The main factors that affect speeds are engines’ options – if they are different, speeds may become so different.
            BTW, BSG reports speeds in Tournament reports in the full format (N/s).

          5. that’s not what i mean, i mean like this…
            for example, Speed behind the screen is 1000 knps
            but somehow, BSG reports it is only 900 knps on the screen

    1. Thanks for the feedback. BSG sometimes has issues with resizing ComboBoxes. It depends on libraries and systems which may not work as well as we want. I have taken notes for this issue.

  19. why does it not let me play back? i cannot click the arrows back, then make a different move. it only sticks to one line. please add another setting where i can change the line in analysis. this is my first GUI i really like it.

    1. Thanks a lot for using and the feedback. The back-arrow button is for reviewing the previous moves but can’t take back. To take back you should click on the “Take back” button – the one in red color and in front of “go first” button. You may move the mouse over buttons to see their tooltips

    1. Thanks for the report. Could you help to check the log file if BSG has sent the command “setoption name Threads value 4” to the Stockfish? If not or different value, please check if the checkbox “Overall options” is checked or not and its “Cores” value (that value will be used to send as Threads if the box “Overall options” checked. Thanks

  20. Lichess bot feature does not work from version 30 and above. Lichess bot do not challenge anyone. It is really also hard to understand how to setup challenge in v30 and above. I have to use version 29 for Lichess bot feature, it’s working and much better and smooth experience.

    1. Thank a lot for the report. The challenge system is redesigned to have some advantages over the old one: 1) Bots can challenge multi-players instead of 1 only 2) Bots can repeat challenging, thus keep playing all the time.
      To use, there are some important steps: 1) Prepare: enter a list of players (create a list) for each bot 2) select one/some of them each time the bots want to challenge as well as other parameters.
      You may take care about the value of concurrency too. It controls the number of bots’ games that can play concurrently. If one of your bots challenges another your bot which is running on the same BSG, they will create two games when playing, thus the concurrency should be set from 2.
      I will add a wiki page about bot challenges.

      1. Lichess bot feature still does not work even in version 33. I setup everything you wrote in manual. I only see “challenging” but my engine do not challenge anyone.

        1. For checking, can you create two bots, add to BSG, log all in, then let one challenging the other?
          BSG can write all in/out of bots into logs, stored in BSG configuration folder. If you could, check them to see if one bot sent the challenge and the other received it and accepted or refused. You may also send them (log files) via email for checking too. Thanks

  21. Thanks so much for an update to the most awesome Chess GUI in development.

    In swiss, I notice that engines get paired again after having played earlier. In normal swiss rule, engines cannot get paired twice at any point of the tournament.
    Half of the games should be played by an engine with both white and black, I notice that some engines get to play white-only or black-only for most part of the tournament

    Cross table of results is bit confusing, it would be nice to see score % rather than win %, score percentage should be the total points from total games played measured in % terms

    Some engines (winboard/xboard/uci) don’t seem to get installed as their protocol is not being identified by the GUI. I am wondering whether it is a windows issue.

    Thanks for your work on this GUI, really appreciate it. Especially loved the parallel games feature.

    1. Thank a lot for the feedback/report!
      1) Typically BSG has always avoided pairing twice engines. However, when there is no choice and there are still rounds to go (e.g., at round 5, any engine vs already all other ones, but there are totally 10 rounds) BSG will continue pairing without regarding the previous pairs
      2) About unbalance playing sides: I can’t reproduce the issue. Can you send me some screen captures of the tournament list?
      3) You may see scores in percentage. Just tick the box “Use percentage for scores” at the top of the crosstable.
      4) Could you give me the names of those engines (which can’t install)?
      Thanks a lot again

      1. Thank you, with the new updates I don’t see aforementioned issues.
        However following engines don’t seem to be getting installed properly:
        Deep smash
        Faile 1.4.4
        DelphiMAX 2.9
        Zeta Dva 0210 64-bit
        PLP 1661571
        Dolphin 1.0 64-bit
        Honzovy Sachy 2 64-bit
        Parrot 07.07.22
        Cupcake 1.1a 64-bit

        1. I have done a quick check with the below result:
          – Deep smash 1.03a: can install well. Can you re-check that?
          – PLP 1661571 and Cupcake 1.1a 64-bit: I can’t download them since all links are broken
          – Honzovy Sachy 2 64-bit: has a space in the file path. You may rename to remove that space or put the whole path in a pair of quotes, say: “C:/Users/phhng/match/engines/HonzovySachy 2019-07-01/HonzovySachy x64.exe”
          – DelphiMAX 2.9 and Dolphin 1.0 64-bit: not chess engines, they have their own chess GUIs
          – Freyr 1.067: not a “standard” chess engine since it talks not in the standard way
          – Zeta Dva 0210 64-bit and Parrot 07.07.22: support protocol XBoard ver 1 which BanksiaGUI doesn’t really support. BanksiaGUI parses their replies for keywords. However, they “talk” too few, thus not enough keywords to be considered that they are working well.

  22. I want to make an 3-moves Opening Book from SuperGM_4mvs (, but I don’t want informations like Player, Date and Event ( to be lost, and also want that the order of every Opening in this 3-moves Opening Book does not change, could you provide such options?

    1. The problem is that one opening line may be played by multi-games thus we can’t store information about players/events/dates. Similar to the order, one line can be played in different games from the database, thus it has to discard order information.

      1. for the same Openings with different End Positions, then information for the first Opening must be kept

        for Example:

        1.c4 Nf6 2.Nc3 c6 3.e4 d5 4.exd5 cxd5

        Opening1435 =>
        1.c4 Nf6 2.Nc3 c6 3.e4 d5 4.e5 d4

        then informations of Opening1 must be kept, because They (Players, Date and Event) of Opening1 (Portisch, Lajos – Petrosian, Tigran V …) were the first players to play that Opening

    1. Thank a lot for the report. Those boxes are for setting up human name and country, not for engines. The bug will be fixed for the next release.

  23. Replay and Annotation Feature Request.
    This is request for a feature to allow the GUI to replay games and enter annotations to the game with comments and graphical annotations. Like highlight the squares with 5 different colors: Red, Green, Yellow, Blue and Purple, and draw arrows with 5 different colors: Red, Green, Yellow, Blue and Purple. Also, to enter a character in the top right corner of the square: X, O, 1, 2, 3, 4, 5, 6, 7, 8, 9. Also in the variation, to have the ability to enter a NULL move, that is, White makes a move, and Black “passes his turn” (NULL MOVE), White makes another move, and Black plays a move, White ‘passes his turn’ (NULL MOVE), and so on.
    Also, it would be nice if the screen could be split into 2 views when entering the variation board, The main board would be shown as a small screen and the variation board becomes the main view. The moves listed in the variation list be bolded, because there is a possibility of multiple variations, thus it would make easier for the user to identify the variation or line which he or she is studying. This feature would allow chess instructors to create chess videos much easier for the students to follow the logic of the game.

  24. Hi 😉

    I have recognized another strange Thing..if i want to load eman 5.62 in Banksia Gui..following failure occured….

    Error The Engine doesnt support the selected protocol, i have also send you an email with a picture….. in Fritz or arena eman runs very well………

    Also in Automatic detection……

    Any hints ?

    Keep up the amazing work i love your gui ….

  25. I would like to notice an issue that lichess bot is hangs in task manager if opponent lose on time. It affects all engines.

    There is also another bug in lichess bots feature. Lichess bots feature absolutely ignores all my settings in Banksia GUI for current engine. For example I set 8 cores for my Komodo engine, but Lichess bot uses 16 threads and it also ignores other settings. It would be nice if Lichess bot will use all settings I have set for my engine in Banksia GUI.

    Why Banksia GUI does not show all engine’s settings? For example I do not see all options for Shredder 13. There are no options like Limit UCI strength, UCI strength ELO etc. It would be nice if Banksia allow us to set all engine parameters like we can do this in Lucas Chess GUI which always show all engines parameters.

    I use Windows 10 x64 Pro and Banksia GUI 0.29 64 bit.

    1. Thanks a lot for the report. Just a few questions to get more info:
      – Can you check the engine log (the path is in Settings dialog -> Engines tab) to see if BSG sent “quit” commands every time the game (of Lichess bot) completed?
      – Did you turn on Overal options (Settings -> Engines tab) and set Cores to 16? If yes, try to set it back to 8

      BSG has supported some but not all specific options (with prefix UCI_) yet. We plan to support them all in the coming time

      1. 1) If lichess bot lose on time, then “quit” command is not send.

        2) Yes I have overal settings turned on – ponder is set to “on”, cores are set to “8”. When my engine plays via Lichess bot feature, it uses 16 threads instead of 8.

        1. Thanks again for the feedback
          1) I am working on that and do some improvement
          2) I have been struggling to reproduce. Can you give me the name of the engine? Usually, BSG can control the thread number of an engine if it uses a popular name such as “threads”, otherwise, users need to set manually

  26. I use Banksia on lichess to play as a bot and I noticed a bug: after every game my engine hangs in task manager, so I have to turn it off manually. Otherwise I run out of memory, because multiple instances of engine eat all system memory. I use Windows 10 x64 Pro.

    1. Thanks a lot for the report. Can you give me the name of your engine? If it is not published/popular, just few questions: which protocol does it support? if you run that engine in a tournament, how frequently it hangs in memory (not quit even game ended)? if you close BanksiaGUI, is it closed or still hanged in memory? Thanks

      1. It happens after EVERY game. The engine works via UCI protocol. If I close Banksia, engine shuts down too.
        It happens with both public or private engines.

        1. Thanks again for the report. Can you help to verify: 1) what is your OS (Windows) and is BSG the latest version (.28)? 2) check if that happens with some “good” engines such as Stockfish, Komodo 3) check the engine log file if BSG does send the command “quit” to engines?

          1. Windows 10 x64 Pro, Banksia GUI v0.28, all engines affected, command “quit” not sent.

  27. It seems the tech stats from games in a PGN file are only calculated by the last game. But the stats from tournaments are correct. Can you verify this issue? Thanks.

    1. All tech stats should calculate from all games, not only the last game. Can you show me that stats (from the last game only)? Thanks

      1. For example, I set a tournament between Stockfish 10 and Stockfish 11 with only two games, and I saved the PGN file. Then I loaded the PGN file from “Database”. The tech stats are different:
        From the term “moves/game” it seems the tech stats on “Database” are only calculated by the last game. Maybe I did something wrong?

        1. Thanks for the explanation! BSG calculates average numbers in a bit different way, not from displayed numbers but from overall numbers. For example, to calculate average NPS, BSG will take the total nodes then divide into the total consumed time of all engines. It means engines who use more time actually contribute more to the average than the ones use less.

          1. the calculation of average NPS as you explained is correct, because the same nps can produce different nodes.

            but I don’t understand about the calculation of npm (nodes / move) you use, isn’t it divided by the number of ply?

            for example…

            Engine A (white):
            move1: n=1100
            move2: n=1101
            move3: n=1108
            total nodes of Engine A = 3309
            total ply=3
            average npm of Engine A = 3309/3 = 1103

            engine B (black):
            move1: n=2200
            move2: n=2203
            move3: n=2206
            total nodes of Engine B = 6609
            total ply=3
            average npm of Engine B = 6609/3 = 2203

            average npm of the two engine:
            (average npm of Engine A + average npm of Engine B)/2
            (1103+2203)/2 = 1653

            another way to calculate this average npm:
            (total nodes of Engine A + total nodes of Engine B)/total ply
            (3309+6609)/6 = 1653 => is the same

            so this calculation => (8184 + 1001)/2 = 4592.5, not 4476 is correct

          2. For npm the formula is quite similar: the total of nodes / the total of made moves. Suppose 2 engines played 2 games with total nodes of each engine each game are 1000, 2000, 1500, 1200 (the total = 5700) and game moves (move = 2 plies since one engine makes move in half of the number of plies only) are 50, 51, 45, 45 (the total = 191). npm = 5700 / 191 = 29.8

        1. Thanks for downloading and using!
          Can you give me more information: what is your computer (type, macOS version)? What the size of the download file? Did you give run-permission? What did it say when you run it?

          1. Thank you for the info. Look like your computer, macOS… all are good for running BanksiaGUI (BSG). Let check step by step:
            1) Did you allow the program to run? If it is the first time, you should press control-click to the BSG to popup the menu, then click on “open” to run it. An alternative way, open System Preferences -> Security & Privacy -> General tab -> click on the button “Open Anyway” if it is asking about BSG
            2) Now click on the BanksiaGUI program, did you see anything happen?

          2. I have just downloaded your zip file, unzip, and run. It can run as usual on my iMac with Catalina. It is still fine for my computer! Can you try to delete BSG config folder as following steps:
            – run Terminal
            – type below command and enter (change yourname into your login name in your computer):
            rm -rf /Users/yourname/.config/
            Then run BSG again.
            If it still fails, please try on another computer.

          3. Very strange! On my other (older) mac with catalina it run’s. I have no idea whats wrong. I try to analyze deeper and inform you if i,ve foubd some things! Thank you for your help! with regards, Thomas

          4. I can’t guess the reason either. Once the computer can install Catalina, it should run all software for that OS. I will try on some other mac computers when I can.

          5. One thing is differently: The Mac where it`s fault, is formatted with case sensitive and is crypted. The old mac is formatted without case sensivity and is not crypted. But i can’t believe that this is the reason.

  28. Hello, is there a possibility to use Lc0 without any learning? So that Lc0 can learn “from scratch” on my computer.

      1. In BanksiaGUI, is it possible to change the Notation for moves from “Coordinate” to either “Algebraic”, “Long Algebraic”, OR “Figurine Algebraic”?

        1. BSG support 2 notations: coordinate and SAN. To change: menu -> File -> Settings (open Settings dialog) -> General tab, select notation from drop down Notation (Move list section)

  29. where i can find a walkthrough to connect Lichess with Banksia? I dont know how to do it.

  30. Very to nice chess GUI and with a Linux version too, thank you!
    I don’t run engine matches, I only play against the computer and occasionally on FICS, so far I’ve encountered no issues, everything work as expected.
    The feature I love the most about this GUI and also what sets it apart from the myriad others I’ve tried is the innovative book move bubbles, it’s hugely useful 🙂
    One thing, is there a way to increase/control book randomization when playing against an engine?
    Anyways thanks for providing this wonderful software for free, your hard work is much appreciated!!

    1. Thanks a lot for the report. That feature (randomization openings for normal games) is one of the missings. It should be similar to one for tournaments (several ways to set up randomization). I will implement it soon.

  31. Engine take a lot of time to move when the calculation shows “Mate in 4, 3 & 2” still happen in this Ver 0.23 beta

    1. Thanks a lot for the report. It turns out it is hard to fix since I have tried several times. It is the problem of updating the viewing board when the game has been finished and removed already. That issue does not affect the tournament. I will be back to that issue later.

  32. I played a tournament with the following format…
    Engine 1, TC = 5000 nodes/move
    Engine 2, TC = 1000 nodes/move

    but why did the report look like this? =>
    Engine 1, TC = 4000 nodes/move
    Engine 2, TC = 0 nodes/move

    1. Thanks a lot for the bug report. I have used 1K as 1024 instead of 1000. Fixed for the next release!

  33. Some small improvements/adjustments: such as showing PONDERHITS???

    if I want to use this feature (PONDERHITS), I will use it from here =>
    …and the worse, you set this feature by DEFAULT, so there is no way to disable it

    how can you set this “very optional feature” as default ??? it’s so funny, because it seems like you don’t know what PONDER really is and what it is used for?

    and if this feature is also applied by default in Tournament (and it seems like it is), then it’s really really BAD

    1. That stats based on ponder moves which an (UCI) engine usually sends at the same time with its bestmoves, regardless it is allowed pondering. Thus with the current implementation of BSG, ponderhits measure how good that engine guesses the bestmoves from its opponent and that stats don’t link to ponder mode, don’t need the engine to ponder to have. IMO, it is quite similar to tbhits, hashfull… just some stats to help users/programmers understanding more about their engines.
      I may add a new option to turn on/off that showing from the next release 🙂

      1. but the way it works is the same as the ponder mode, because it also uses the CPU to guess the best moves from its opponent

        for sparring against the engine, it’s oke, but for the Tournament, of course this is a big problem, because in the Tournament you must not think on your opponent’s time

        Normally, we leave ponder off when playing engine vs engine tournaments.

        1. For any kind of game, normal or tournament, regardless the status of ponder mode, engines still send ponder moves. It means if you don’t allow engines to think in opponent’s time, they won’t think but still send ponder moves, thus that statistics are still valid. That stats just means how good the engines guess the best moves of opponents, but doesn’t mean the engines have to think in opponent’s time to get it.
          I think the better names and less confused maybe “guessinghits”, “ponderguessinghits”…

        2. I knew what you mean now: there is a bug thus BSG runs engines with ponder always on (not because of the stats ponderhit). Sorry for that and the new version will be released within 24h (it is considered as a serious bug).

      1. for example…
        ply range = 5
        and we have these:
        -7.1, +8.8, -8.3, +7.2, -9.6
        for the “Two sides”, this is correct
        but for the “Last side”, this is wrong, because for the “Last side”, +8.8 & +7.2 are not counted… so, for the “Last side” this is still read as 3 ply range (3 consecutive moves)

        …in this Ver 0.21 beta, “Two sides” is correct, but “Last side” is wrong

    1. Thank you very much. This bug is similar to the above bug (BSG counted ply range as the total moves of both sides)

  34. Engine take a lot of time to move when the calculation shows “Mate in 5, 4, 3, 2 & 1” happens again in this Ver 0.20 beta

      1. Engine take a lot of time to move when the calculation shows “Mate in 5, 4, 3, 2 & 1” still happen in this Ver 0.21 beta

  35. You are right, Komodo 10 has a bug in node mode,
    When I replace Komodo 10 with Houdini, tournament runs normally

    1. Thanks a lot for the report. It is a bug about remember new adjudication settings and will be fixed for the next release.
      Last side: check scores of only one engine who did the last move. For example, Stockfish vs Komodo and then Komodo does a move, BSG will check scores of Komodo but ignore Stockfish scores. Two sides: check if scores of both sides satisfy conditions (one resigning, one winning). In the example, check if Komodo scores are in the resigning range and Stockfish scores are in the opposite-resigning/winning range. That makes sure both sides have an “agreement” on resigning.

    1. Thanks for the report. How can I reproduce that problem? Also please note that for the current version the concurrency number may be set to zero, equal a pause

        1. I am still struggling to reproduce the problem and confused about some details. Can you confirm:
          – if the tournament’s games are playing: green lines moving, games are completed after a while. If you double click on a green one, it should be opened in a new tab and you can see engines computing and moving pieces
          – when you click on the button Playing games (as your above image) do you see the popup dialog “Playing games”?
          – if you can open Playing games dialog: can you see normal games? (tick on Normal checkbox first)? Do you see any tournament games? How about change values of some boxes (show, games/row)
          Thanks a lot again.

          1. this was apparently due to Time Control with the following details…

            time control: Depth, Tournament is running normally
            time control: Move time, Tournament is running normally
            time control: Standard, Tournament is running normally
            time control: All moves, Tournament is running normally
            time control: Nodes, Tournament is NOT WORKING AT ALL

          2. It turns out Winboard engines don’t support the Nodes mode of time control thus they stop forever. I will improve the warning message in that case. Can you help me to verify (check if you have used Wb engines when the problem happened)? Thanks

    1. Thanks a lot for the report. Could you send me the image of those duplications and/or post them here, please? Thanks again

        1. I can’t reproduce the bug. Could you please send me (via email or download links) both your game database (.bgdb) and PGN opening book for checking? Thanks a lot

    2. Thanks a lot for the report and files. I got them and understood the problem (I misunderstood before). The duplications of some last positions are actually not a bug since their sequences of moves are still different. Different lines of openings but leading to the same positions are normal. BTW, for the new release, I have added a new option to the building-opening-dialog to accept or not those duplications.

  36. Include Help.pdf manual with instructions for user
    Make the program portable with all settings saved in the same folder
    The best example to follow: Arena GUI

  37. could you optimize it for Windows 8.1 too?

    because there is a decrease in Engine Speed when this GUI runs on windows 8.1

    windows 7 & 10, no problem

    1. Thanks a lot for the requirements. I have just added it to my TODO list. Please wait for me a bit since I am struggling to find a computer with Win 8.

      1. After reading comment from this Guy, I just realized, on my old computer (2014 computer), Engine Speed ​​was slower, it might be because my old computer was running Windows 8.1

        1. I even can’t remember if I have ever used a Win 8 😉 Sometimes I work with Win10, very rare to work with Win7, most time I work with a macOS. That is why I have missed more bugs, problems for Windows than macOS and the help from Windows users is very important! 🙂

    1. Thanks a lot for the report! 1 & 2 are fixed for the next release. However, your images of 3 & 4 look strange, look like they are from an old version since they are missing the second line of controllers for searching (such as Player, Limit score boxes). Can you verify it? Thanks again

        1. Oops, so sorry, I have messed up with the view for BSG databases (.bgdb). Those bugs will be fixed soon. Thanks

  38. 1. Please include an option (tickbox) in the “New tournament” window to exclude comments and stats from the move list when saving a tournament game in a pgn file. The resulting pgn file would then be much smaller. As a comparison, a BanksiaGUI pgn file with (only) 4,300 games already takes up about 17 Mb while an Arena tournament pgn file with more than 26,000 games only takes up about 33 Mb of disk space. With BanksiaGUI allowing concurrent games, running tournaments with a lot of engine participants (162 engines in the Arena tournament, for example) would be common place. However, the resulting pgn file would be too large if the comments and stats aren’t excluded.

    Also, some ELO calculation software (Bayeselo, for example) are unable to process a BanksiaGUI pgn file without the pgn file being ‘cleaned’ first.

    2. Please also include the Berger table as one of the shuffle options for round robin type tournaments. It is supposed to be the most common round robin scheduling method and would result in a more uniform result table and crosstable. With the current shuffle options in BanksiaGUI, as the tournament progresses, some participants always show up as having more games played than others, which makes it difficult to determine at a glance which engines are actually leading the tournament.

    3. Please also consider allowing the removal or the addition of an engine in the middle of a tournament. Some engines just plain misbehave and there are no workarounds. With Arena, you can simply remove such engines and continue with the tournament. You also have the option of replacing the removed engines with other engines. Of course the failed games will still need to be (manually) removed from the pgn file, but the crosstable will correctly reflect the results based on the current list of participants.

    1. Thanks a lot for the suggestions!
      1) To stop saving computing info with games, you may edit the file banksiatour.json (open Settings -> Configuration files to see its path). There is a tag name “rick info”, just set it to false. I am struggling about Elo calculating, thus I have added it into TODO list and will come back later
      2) I have read on the wiki that Berger is the Serbian name of the round-robin! 😉 Just added it into my TODO list
      3) In BSG you can remove any games (played or not played) from the playing list of a tournament – just right-click for the popup menu. Furthermore, all info of a tournament is stored on file banksiaplaying.json – it is a text file and editable. You can edit to remove, change engines, results… for any games or add some new games… then run BSG to continue. I think this (edit manually json file) is the most convenient and the easiest way since there is no limit for users

        1. It depends on your system. It is in the same folder with other json/data files such as banksiaengines.json, banksiagui.ini… To find that folder, from BSG open the Settings dialog (for Win, menu->File->Settings), tab General. You will see a button for Configuration files at the bottom. Click that button to open another dialog, click the first button named “Browser” to open that folder

    1. Thanks a lot for the report. The broadcast function is still in development. I have done some improvements in the hope it is better but not sure if the problem is fixed yet since the whole system (BSG + server) is complicated. Broadcasting ignores timer in purpose thus it does not display it (timer).

        1. I guess Arena has asked permission to use it. Arena can use means its users can freely use it for their private purposes. However, that does not mean other programs can freely use that font since copyright still restricts. All fonts, stuff I have used and published with BSG are freeware, published on some websites which say clearly about copyright.

  39. please add:
    humans in tournament!! very fun to play in tournament with engines for me, and i believe for many other people
    resign! labeling the pgn correctly is extremely important, just closing the game is not good enough.
    these two would make me use your program much more

    1. Thanks for the suggestion. For the current version, human can play vs computer in a tournament via a local network (when the tournament is playing a computer, human should be on another computer, connect and play via network playing functions)

        1. Hi, you need two computers, connecting via your local network. Run BSG on both computers and turn on their Local Network panels. Suppose you set the name for the first computer is CompA and similar, CompB for the second computer. Now press the button ‘Connect’ to connect BSG on both computers. You should see CompA and CompB on the Name lists. Suppose you – the human will play on CompB, from Local Network panel just check for ‘Select’ then chose Human from the drop-down box. The setup is done with CompB. From CompA just create a tournament as usual. You will see a special name CompB:Human from the available engine list, pick it. Start the tournament and back to wait on CompB until the games are auto opened and you will play as a human for one side.

          1. doesn’t work for me 🙁
            I selected from the dropdown but it still just shows the engines

          2. Oops, sorry, there is a bug thus we can’t select a single-engine/human. It will be fixed for the next release

  40. this ( is crearly wrong
    and this ( is correct

    and all the GUIs that I have ever used, all of them use 1/2-1/2, not 0.5

    actually, 1/2-1/2 is meaningfully different from 0.5

    1/2-1/2 means that each of the two sides get 1/2 or 0.5
    and 0.5 is the result of 1 divided by 2, meaning that one side gets 1, and the other gets 2

    so, if you write like this…
    sf11 vs komodo13

    …then this means that sf11 wins 1 and komodo wins 2,

    but if you write it like this …
    sf11 vs komodo13
    0.5-0.5 => then this is correct

    0.5-0.5 is the same as 1/2-1/2
    but 0.5 is not the same as 1/2-1/2

    1. Thanks for the report. I knew it is not standard. However, I did it in purpose to make it a bit shorter – just for beauty. All data which users can copy or save down should show that result in the standard way.

      1. please don’t make a new rule that you think is right but it turns out to be wrong

        The generally accepted rule is that it should be written as 1/2-1/2 and not 0.5, so it’s not the time to talk about beauty here, because this relates to data, not appearance

  41. I saw a very good analysis tool from HIARCS GUI, maybe it could be your consideration…

    -for every inacurracy move, will be marked with “?!”
    -for every mistake move, will be marked with “?”
    -and for every blunder move, will be marked with “??”

    here for the details…
    => (Lichess Analysis)
    => (HIARCS analysis)

    -Lichess did not mention the engine that used to analyze, but HIARCS did
    -HIARCS did not provide these information, “inaccuracy, mistake or blunder”, but Lichess did

    so, combining these 2 types of analysis will be awesome

    1. Thanks a lot for the suggestion. In the tech view, it is not hard to implement: the GUI will assign annotations to move based on the difference between current and previous scores. However, it is hard for me since I don’t know which score’s difference (threshold) to assign which annotation. If someone knows (thresholds) and can share he will help us much.

    1. Thanks a lot for the suggestion. As I have understood, Windows (at least old versions) has its timer resolution about 15ms (its clock is called 64 times per second), far above 1ms – the unit if we use millisecond. Thus let a whole game played under a second and measure all elapsed time in millisecond has a high risk of having large errors

      1. not under 1 second, but I want to make a Tournament with fixed TC = 50ms/move, if the number of moves is around 60 moves/game, then 1 game is 6 seconds, unfortunately, I can’t make a Tournament with this format in BSG, but in Arena 3.5.1 this feature is available (

        what I mean is that BSG should have a feature that allows us to make a Tournament with fixed TC less than 1 second/move, not less than 1 second/game

    1. Thank you very much for the report. 1, 2, 3 will be fixed for the next release. 4) time/m = time per move. It is the name of a column

  42. -Engine take a lot of time to move when the calculation shows “Mate in 5, 4, 3, 2 & 1” happens again in this Ver 0.17, in Ver 0.16 this problem has been fixed

    -Score in white view is not working =>

    -when we change “Piece”, BSG stop working =>

    -when we tick “Shadow”, BSG also stop working =>

    -too close, not good to see =>
    -too close =>
    -too close =>
    -not in the center =>

  43. Draw adjudication should follow this rule: “Both engines have an evaluation between +/- 0.09 cp for 10 consecutive moves with NO PAWN MOVES or CAPTURES”

    in BSG, “Both engines have an evaluation between +/- 0.09 cp for 10 consecutive moves” has been implemented well, but why are “pawn moves” and “captures” also counted?

    …this rule means that when there is a “pawn moves” or “capture”, then the rule must be reset from the beginning

    1. Wow, you checked so deeply. I had a bit different thoughts about draw conditions. However, I have changed my mind. Will fix it as your suggestion. Many thanks

      1. This rule (called Rule X) is a TCEC and CCC rule, so I don’t think it needs to be modified, because this rule is really safe

        You can change it according to your mind, but it must be based on data, I mean like this:
        -Create a Tournament with 10,000 games without “Draw Adjudication”
        -Then, create another Tournament with 10,000 games as well with “Draw Adjudication” as you think (called Rule Y)
        -If the results are the same, then this “Rule Y” can be applied

        I have tested this Rule X for many times, and the results are the same between games that using and not using this Rule X

      2. The “no pawn moves or capture” rule should be optional. In cutechess, it’s always on for draw adjudication, and I actually find it annoying as many dead games end up lasting much longer because of it.
        I can think of more complicated rules that would allow optimizing even more the amount of time saved while keeping incorrect adjudication low, but they would likely be considered too much for implementing. In particular, adjusting draw adjudication aggressiveness in relation with the number of pieces left on board.

  44. Could you please change how the score is indicated? I’m very used to seeing an engine’s eval score (For example, Leela would output +1.23) I don’t want to have to constantly convert the scores in my head, that is just rather silly.

    1. Thanks for the feedback. Banksia GUI can display engines’ scores in two units: pawn and centipawn. To change unit: menu->File->Settings to open Settings dialog, select the first tab then tick on “Pawn unit” or “Centipawn”

    1. Thanks a lot for the report. I have tried some optimized algorithms to speed up displaying but look like they did not help but created some messy instead. It will be fixed for the next release

  45. BSG’s resignation adjudication is 3 consecutive moves, I think, 5 consecutive moves is safer. TCEC uses 5 consecutive moves.

  46. for example I want to know how much the strength of SF 11 increases if using “Cerebellum Leela Net T40.T8.610

    for this, I will make a Tournament with the following format…

    Engine 1: SF11
    Engine 2: SF 11 + Cerebellum Leela Net T40.T8.610

    the problem is, at BSG, when we use Polyglot (, then the Polyglot is used by both engine, while in this Tournament, I want Polyglot to only be used by Engine 2

    1. Thanks a lot for the report. All bugs will be fixed for the next release.
      For temporary fix for changing piece style and shadow, just close BSG the reopen.
      For tournament creating, an engine can be selected several times (it will be displayed in ping color as a warning but it is still accepted), thus engines are still shown in the right box after being selected.

        1. It is from my experience: sometimes I need tournaments of one engine only. Sometimes I need tournaments in which one or some engines play more frequently than the rest. Note that after creating a tournament I may quickly edit by deleting some matches, change their orders thus I can have a new tournament as I need.

          1. then you have to make 2 releases, for yourself, and for the public.

            because, if we want to play Tournament using the same 2 engines, then the two engines must be separated, not only playing one engine from the same Path… this is to prevent the engine from using the previous analysis.

  47. Hi. I have been testing this wonderful GUI since version 0.14 (currently testing 0.16).

    1. Is it possible to allow logos of up to 200 pixels wide ? The current logo size is too small and a lot of the details can’t be seen clearly. The GUI already allows adjustment of the height, but the width can’t be adjusted. With a maximum width of 200 pixels, the GUI wouldn’t have to scale down the logo (unless the width exceeds 200 pixels).

    2. I also observed this behavior when using a polyglot book:
    The polyglot book used has the following distribution (as seen in Scid vs PC):
    d4 – 38, e4 – 27, Nf3 – 18, c4 – 13, g3 – 2, b3 – 1
    When the “Top” is set to 0%, all the tournament games started with d4. When the “Top” is set to 100%, there is a preponderence of King’s Gambit games for games that start with e4. When the “Top” is set to 50%, there is a preponderrence of Giuco Piano games for games that start with e4. In both 100% and 50% settings most of the games started with Nf3 or c4. In all “Top” settings (0%, 50%, 100%) none of the games started with g3 or b3. With several thousand games already played, there should have been several g3 or b3 games already.

    What should happen is that when the “Top” setting is set to 0%, the GUI should just follow the book’s default distribution. Then as the “Top” setting is increased towards 100% that’s the only time that the GUI would modify the move distribution until all moves in the book would have equal chances of being played (“Top” setting = 100%). It might even be simpler if you remove the “Top” setting altogether and just allow the default distribution set in the book, as what other chess GUIs do.

    1. Thanks a lot for the very-detail reports
      1) I have added the suggestion into my TODO list
      2) The design of BSG when picking up moves from polyglot books for a given position: a) it takes tops % (by weights) moves; b) if there are multi-moves, pick up randomly a move. Thus, the top 100% means BSG picks up move totally random. Top 0% means it picks up the best. If there are few best moves (same weights), it picks randomly between them. BSG always tries to use random whenever it sees some equal choices, just to make games/tournaments be more interesting. You don’t want that (random factor), do you?

      1. Thank you for the reply. Regarding item 2, randomizing for moves of equal distribution is ok, but there should be an option to bypass this randomization and just allow the book’s default distribution to be used. As my testing shows, “In all Top settings (0%, 50%, 100%) none of the games started with g3 or b3. With several thousand games already played, there should have been several g3 or b3 games already.” , so the default distribution in the book is not being followed at all, no matter what “Top” setting you use.

  48. This GUI is amazing, has many features that other GUIs don’t have, but unfortunately, the engine speed is about 15% lower in this GUI compared to Arena 3.5.1

    1. Thanks a lot for the report. Could you please give me more information to reproduce: which engines, what is your computer (CPU, memory) and how did you observe that speed (tournament, play vs computer or run some tests)?

      1. -My laptop: Asus X441UB (Intel Core i3-7020U/4GB RAM)
        -i play vs computer using sf11 with tc=5 seconds/move, Then I see the engine speed reported by the both GUI, Arena 3.5.1 and your GUI

    1. Thanks for the report. I have redesigned a bit for pairing and selecting openings. If you want a pair of engines to play one opening, please select “One for each pair” in Select type box.

      1. I chose this setting ( in Tournament. The result is that Opening is played sequentially, but each Opening is only played once, not twice, so when Game 1 is finished, Game 2 uses Opening 2 and this is clearly wrong, because Game 2 must use Opening 1, not Opening 2, Opening 2 is for Game 3 & Game 4

        it should be like this (x):
        Opening 1 => game 1 & game 2
        Opening 2 => game 3 & game 4
        Opening 3 => game 5 & game 6

        and not like this (y):
        Opening 1 => game 1
        Opening 2 => game 2
        Opening 3 => game 3

        but if I don’t tick “Swap sides”, then the correct order is (y)

  49. Author: Stéphane Nicolet
    Date: Sat Jan 18 01:44:37 2020 +0100
    Timestamp: 1579308277

    Stockfish 11

    Official release version of Stockfish 11.

    Bench: 5156767

    …and we estimate that on a modern four cores CPU, Stockfish 11 could give 1:1000 time odds to the human chess champion having classical time control, and be on par with him…

    this means, if I want to play Stockfish 11 at Carlsen’s level, then I have to play Stockfish with Time Control: 0.18 second / move

    Standard Time Control: 3 minutes / move = 180 seconds / move
    180/1000 = 0.18

    But in BSG, we can’t play Stockfish with TC = 0.18 s / move, because in BSG, the minimum Time per Move is 1 second / move (

    1. I have just used easy algorithms to generate tournament games without carrying about their order (it is actually a revert order). By popular situations, users will sort those games anyways.

      1. Actually, there is a reason why this thing is important. for example I make a Tournament like this:

        100k vs 200k nodes
        200k vs 400k nodes

        then the sequence in the PGN file should be like this…

        100k vs 200k nodes
        1. 100k nodes vs 200k nodes
        2. 200k nodes vs. 100k nodes

        200k vs 400k nodes
        1. 200k nodes vs 400k nodes
        2. 400k nodes vs 200k nodes

        and not like this…

        100k vs 200k nodes
        1. 200k nodes vs 100k nodes
        2. 100k nodes vs 200k nodes

        200k vs 400k nodes
        1. 400k nodes vs 200k nodes
        2. 200k nodes vs 400k nodes

        with this, our database will be neat and more comfortable to look at

    2. I have checked my algorithms for generating a tournament matches. Actually they generate games based on the order of players. However, I have added a random factor to swap players for each game. That makes sure that all players can play white and black equally even users set games/pair is an odd number.
      In multi-timer mode, timers will be attached to players, thus a given player will play with a given timer, regardless of his side or order.

    1. Thanks for the report! Yes the bug has been fixed already. However, there is a reason why the number of moves in Tech tab may be smaller than the games’ moves. If you put the mouse pointer over the tech table you may see a tooltip explaining that: “Stats based on computing moves only, ignored moves with zero node” (there is a line with a similar explanation too in Plain text tab). That means all opening moves, as well as moves without node-reporting from engines, won’t be counted here. The reason for ignoring is that some stats of averages per move (such as NPS, time/move) may be significantly smaller than what engines report if we count all no-node-reporting moves.

      1. oke thanks for the explanation 🙂

        after reducing the number of moves in the PGN file by the number of moves from the Opening Positions, the result is the same as the number of moves in the Tournament Result report

  50. A tip: an option to be able to stop a tournament between engines after finishing a game and then be able to continue it in the future

    1. Thanks a lot for the suggestion. Do you mean when a user stops the tournament, BSG should wait until finishing all playing games? I am just wondering that is mot much time the user may save.

      1. Is there a way to save the ongoing Game Data in a temporary file? so when the Tournament is resumed, the game that was stopped will resume from the position when the game was stopped?

        1. Theoretically, we can. However, I have seen some discussions about saving playing games, stop then resume them. There are some problems: 1) we almost can’t save/load the internal data of involving engines (such as hash, pawn tables) thus when resuming engines may play totally different ways (compared with playing uninterruptedly); 2) the majority of tournaments nowadays are fast ones. Saving time for a few half-games is not much and not worth, compared with having much more complexity of both using and implementing.

          1. 1) thus when resuming engines may play totally different ways
            I think that’s not a problem, as long as the engine starts from the last position when the Tournament is stopped, then the results will be the same. Because the engine takes different moves (usually up to 7 different moves) from the same position is common… it’s the same as we enter a FEN of certain position, then tell the engine to analyze it.


    Hello again! I see you are making good progress on BanksiaGUI stability issues. Although it is much better than before, I believe you still have at least one major memory leak. The good news is I can now tell you where to look for the leak!

    I finally thought to run a somewhat long tournament (272 games) with the chessboard display turned OFF (uually I like to watch at least some of the games). Well, that was the solution to the memory problems and overall sluggishness. The memory used remained within “normal” limits (about 85mb – 105mb) for the whole tourney with board display OFF. But if I run the same tourney with board display ON, memory usage zooms from 85mb to about 220mb!

    So the memory leak must be somewhere in the board display routines. I sure hope this helps you chase it down!

    I will post this here (forum) and on your download page.

    Good luck and thanks for all of your work on BanksiaGUI!

    -Ken (kenpchess)

    1. Thanks a lot for the report. I have known that issue (memory leaking) and still working on that. Perhaps it is one of the hardest issues for me with BSG thus I am not sure when I can fix it. Hope the leak is not too bad and BSG can keep working on all systems.

  52. Ver 0.15
    -Sequential Openings work well.. Good job 🙂
    -in this version (ver 0.15), no draw games ended with “adjudication by engine ‘score”), out of 1000 games, all draw games are only in these adjudications (adjudication by egtb, repetition, fifty move… these adjudications have been available in previous versions), So I want to say that this feature “Draw adjudication by engine score” has not been implemented yet

    1. Thanks a lot for the report. I have found a bug (it was created when I cleaned the code) to disable that function. It is fixed for the next release.

    1. I was wrong, after I tested using another GUI, it turns out that at nodes = 100000 & 200000, sf 11 always make the same moves

  53. Thank you for the great work you’ve been putting into this!
    A few things to note:
    1. Tournament Stats.
    On the tournament results pane, the tech stats sometimes do not update. I noticed this after I tried to open the PGN of a different tournament which I had published the results and then to see they had changed. I checked again for another tournament, and I see that NPS and average Node per move info had changed. – By the way, this is a great feature, as NPS count and average nodes are quite important for NN engine testing.
    2. Sequential Openings.
    It is important to have this, as I am facing issues when it comes to engine testing. In order to get a fair and trustworthy result of a test, I need all engines to play the same openings. For example, I just played a Gauntlet tournament of 2 LC0 networks vs Stockfish. The first network played one set of openings, while the second played different openings. I used a 500 opening book but played 400 matches each. I cannot trust the results, as one network played King’s gambit games, while the other played different ones. The best thing would be for the engines to play the same opening sequence. Network 1 plays white and black against SF, QGD. And then Network 2 plays against SF black and white as well the same opening: QGD.
    3. Game adjudication.
    Move counter for resign and draw. It would be great to have draw adjudication added. It would drastically improve the speed of resolution of games, which speeds up testing. Some games last for far longer than they should, because there is no draw adjudication. Also, we need to have a move count for these adjudication results. For example when using Cutechess we can define the move number to make the adjudication start being true. Let’s say DRAW Adjudication: On move number 50. Move Count = 5, Score = 10. This will ensure that the adjudication rule starts only on move 50 >=(or any other user defined move) and it will count it for 5 moves in a row that the score has to be <= than 10. Move number and move count should be added to resign adjudication as well.
    4. Rounds vs Games.
    I notice on the PGN that it only counts the games and not the rounds. And this probably has to do with the issue with sequential openings, and also the way Banksia sees what a game is.
    In Cutechess, when I want to start a tournament of 2 engines to play 200 games. I put it as Games=2 and Rounds= 100. This way, I am certain that the engines will play 100 openings twice (both black and white). Maybe I am misusing Banksia and I haven't found the right way to count the rounds and use sequential openings. But I really can't see the options for the number of rounds there.
    Think of it this way. Tata Steel Masters has 14 rounds, with 1 game for each pair. That means that each player will play 1 game against each opponent and nothing else. If it was 2 games and 14 rounds. Each player would play 2 games against each opponent (black and white) to a total of 28 games per player, while it is still 14 rounds. Each round, 2 games.

    I hope these comments help!

    1. Thanks a lot for your suggestions/report. 1, 2, 3 have been added to my TODO/verify lists. 4) BSG has only rounds for Round robin but not other tournament types – that is why you won’t see round info. I have added a note about it anyways and will come back later.

    2. 2 & 3, I have suggested these many times, but it looks like the BSG TEAM thinks that it’s not important, because it has been updated 3 times (Ver 0.12, Ver 0.13, & Ver 0.14) but these feature is not available yet

        1. what I recommended (especially 2 & 3) are BASIC feature that must be owned by a modern GUI, these are as important as the Tournament feature that a modern GUI must have. So at the beginning of the GUI development, these features (2 & 3) should be available and not put in the back queue in your TODO list

          …and for (2. Sequential Openings) this is a very very BASIC feature, without this, the Tournament result will not be accurate. We need a different opening for every 2 games, and if 1 opening is played more than 2 times, then the Tournament result will be inaccurate. That’s why at TCEC or CCC, they use 50 different openings for 100 games, and 100 different openings for 200 games, the purpose is that they get accurate Tournament results

      1. Your and others’ suggestions are very important for us and they help to make BSG be stronger and better. Thanks again.
        I have just implemented both 2 & 3 for the coming release ver 0.15. Please help us to test them

  54. this is what i mean =>

    “Use Percent” Box is ticked, but the score is still “1”, it should be 100

    it also the same here =>

    how could the score be more than 100??

    156 is the Total Score, or if in Percent it should be 52
    (156/300) * 100% = 52%

    So, when the “Use percent” Box is ticked, the value in the box must change from 156 to 52


  55. ver 0.14 …
    – the report of Tournament Results ( shows that the length of the game is only 38 moves, but in the PGN file, the length of the game is 48 moves =>

    -the Tool X i requested before did not work at all =>

    -there is still no option to use Starting / Opening Positions in sequence yet

    -Engine take a lot of time to move when the calculation shows “Mate in 5, 4, 3, 2 & 1” has not been fixed yet

    -“Open PGN from URL” also doesn’t work =>

    1. Thanks for the very details and easy-to-reproduce report!
      1) The bug will be fixed for the next release
      2) It is Ongoing tournament to load/save tournaments. To enable buttons, just select a line.
      To see statistics of a PGN file, just drag and drop it into BSG, then click on the button “Stats” on the popup dialog
      3), 4) still in my TODO list
      5) The link you load is not a pure PGN, it is an HTML format content

    2. in this Ver 0.16, this problem “Engine take a lot of time to move when the calculation shows “Mate in 5, 4, 3, 2 & 1” has been fixed. and i want to say that Ver 0.16 is much more smoothly than ver 0.15, GOOD JOB 🙂

  56. in the Tournament results (, the “Score” parameter doesn’t seem to work in real time

    when the Tournament is running, the number shown is inaccurate, it’s only accurate after the Tournament is over

    and for “los%” parameter, what exactly is this? I do not understand

    …and for “time / move” it also seem inaccurate

    I run a 1m + 1s Bullet Tournament, and the Tournament Results shows that the average move is 48.5 moves/game (

    so I counted like this…

    Bullet 1m + 1s = 60 + 48.5 = 108.5 seconds
    Total number of moves / game = 48.5


    time / move = 108.5 / 48.5 = 2.237 seconds or 2237 ms
    Move overhead for Brainfish = 30 ms

    so i get…

    2237 – 30 = 2207 ms = 2.2 seconds / move and not 2.0

    1. Thanks a lot for your long report!
      1) I can’t reproduce the issue with scores, can you capture another image in which score is inaccurate?
      2) LOS = Likelihood of Superiority. You may read at
      Frankly speaking, I am not good at that knowledge and plan to come back to improve it later.
      3) time/move average: the result depends on the way we sum up, divide and round up. Basically I use some simple tricks: sum as many items as possible, keep dividing and rounding up as late as possible. Some numbers are reported when their sums are done earlier than the others. It means their results are less accurate than others. However, their results are still in reasonable and acceptable ranges.
      If you or anyone wants to look/help me to verify at code, it is from banksia open source (

      1. 1) I don’t have time to play Tournament right now, maybe in a few days I will give you the screenshot
        2) Thank you, I have understood
        3) I think this parameter (time/move) is correct, I was wrong before because I did not count the amount of time left after the game ended

        …btw, I feel happy with this GUI, because this is the only GUI that anyone can give suggestions for development

        I also think about a Tool that I think is really very important

        for example I have 50 Starting Positions / Opening Positions (OP) to be played on 100 games

        We can’t just take any Opening from the Grandmaster Games and use it directly to Engine Match, we must ensure that the SP is balanced from both sides

        A good OP is an OP that has a Score in the range of +/- 0.44 at the “End Position”, so I have to do analysis at the end of each position using Engine to see the Score.

        the problem is, I have 50 OPs to analyze and I don’t have time to analyze them one by one

        but with this tool, I just need to open a PGN file that contains 50 OP using this tool, and let this Tool analyze itself and issue the “Score” for each end position of the 50 OP

        and after I get the “Score” for every OP, I just need to download it, and in the “Download Section” there must be an option, for example I only want to download OP with a score in the range of +/-0.44, or +/-0.60, in this way I don’t have to delete the OP manually with a score that is not in the range I want


        1. Thanks for suggestions. I have added them to my TODO list. However, OP tools are always hard. I have seen many discussions on Talkchess and other forums with some methods/ways but almost none is really successful.

          1. okay let’s make it clear …

            for example, i have 3 OPs as you can see in this screenshot =>

            OP 1 is the OP that I want to use in Engine Match, but I can’t just use it, I have to make sure that the white position is not much better than black and vice versa

            therefore, I analyze the End Position of this OP 1, if the Score is in the range of +/- 0.44, then I will use it, because the Score +/- 0.44 shows that this position is balanced for both sides (white and black)

            but if the score is out of this range, let’s say +1 for white (which means -1 for black), then it is very likely that any Engine that plays White will always win … OP like this certainly cannot be used in Engine Match

            from these 3 OPs, I just need to analyze them one by one using engine and the Score will appear in the “Score Box” as you can see in the screenshot

            now, if there is a Tool that can do it (which will be very very helpful)… i mean this Tool works by analyzing OP 1 (for example 3 minutes/OP), then displaying the Score in the “Score Box”, after that the Tool continues to analyze OP 2 and so on…

            The parameters used can be … time/OP, nodes/OP, or Depth/OP => for example: 180 seconds/OP, 1,000,000,000 nodes/OP, or depth 50/OP


          2. There are still many questions to create an opening book, for example here are some quick ones in my mind: 1) until which length the book will take? 2) you said about scores in ply at n. How about moves before? If they conflict (says, the last one is good but previous ones are bad) how to take and use them?
            The opening book of the page is built by computing. I think the authors have use a complicated method, plus a lot of running time. However, the quality of that book is still a question and needs someone to prove, evaluate.

  57. hi,

    I’ve tested your GUI, very good interface, but the engine Speed (nps) 21% SLOWER in this GUI compared to other GUIs

    1. Thanks a lot for the report!
      21% is much larger than normal. 1) Can you give me some information: a) what is your hardware (cpu, cores, mem) b) how many engines you used for that test c) what is concurrency?
      2) Can you rerun the tournament with all logs turned off (when creating a new tournament, uncheck all logs checkboxes) then run the test again? Many thanks again.

      1. 1) Laptop: ASUSTeK COMPUTER INC. X450CC (Ivy Bridge)
        core: 2, threads: 4
        used for testing: 1 thread
        concurrency: 1
        Engines: sf 10, komodo 10, houdini 1.5a
        2) Still happen

        maybe this gui dosen’t work well for Sandy Brdige or Ivy Bridge processors, maybe it only work well for haswell, broadwell, or the latest processors

        1. Thanks a lot for the report. Look like BSG does not work well in a bit old/weak computers. I guess it may take more resources than older GUIs. I will optimize BSG in the hope that it can run better in those systems.

          1. I’ve tried installing the Scid GUI, it’s 133MB in size and runs smoothly, while BSG is only 49MB, so there should be no problem

            there are still many people who use computers with Ivy Bridge Processors, and actually this processor is included in Modern Computers, so it’s a bit strange if someone makes any App and doesn’t optimize it well on these systems

          2. Frankly speaking, I don’t know the reason. Theory, when engines + GUI run far under 100% CPUs, engines are almost independent and have enough space to run. Thus the GUI should not affect to speed of any engines since it mainly catches output only. I suspect: 1) the ways BSG and Scid GUI calculating speeds are different. Say, BSG reports speed based on engine’s report and calculate only if it does not receive speed information from engines; other GUIs may calculate based on nodes report and elapse time; 2) BSG may affect to engines’ speed in mystery ways (I means unknown yet bugs). All need time. I will focus on this issue a bit later.

  58. Please add the CPU Speed ​​report (kN/s) to the Tournament results

    Maybe it can be placed between Nodes & Depth



    and also… if you can, please add this Tool (called Tool X) to BSG, the purpose is so that we can get data about Nodes, kN/s, Depth, time / move & time from any PGN file that containing engine games

    for example, I have a PGN file containing 100 games between Engine X vs Engine Y as a result of Tournament in another GUI

    well, now I want to get data about Nodes, kN/s, Depth, time/move, & time of the two engines

    so I just need to open the PGN file using this Tool X, and these Data come out

    I think this is a very good TOOL to be added to BSG

    1. Hi, I would like to second this request, as I believe that when testing Lc0 networks, we need average speed of an engine measured in nodes per second for a tournament in order to quantify the strength.
      Adam, what is Tool X, and where can we find it?

        1. There is a tech problem: BSG has saved information about nodes into PGN. However, it is not popular. Some GUIs/software stores only score, depth and elapse time for each move. It means I may not retrieve any information about nodes, speeds… when working with general PGN.
          BTW, I will postpone this feature a bit (to ponder)

    2. That tool is completed for the next release. It is in the form of dialog for getting statistics from games in a PGN file. The information is quite similar to one in the tournament result of BSG.

    1. Thanks for the report. The buttons on move-list panel are designed small sizes (they are extra buttons). You may use buttons on the toolbar which much larger sizes. BTW I have added a note about them and will take a review.
      Showing material is added to my TODO list.

    1. Thanks for the report. Do you have the engine log of that game? If yes, please send to me (via email). BTW, which time control did you use? As I have understood, Stockfish is not optimized for none-standard/traditional time controls. Can you re-test with the new version (0.13). Thanks again

        1. Thanks a lot. Unfortunately, I did not receive it after waiting for a while. Can you resend to banksiagui at gmail . com. Thanks

  59. I want to report that “Starting Positions” (called “Openings” in BSG => on Tournament are not played all

    for example, I made a small Test with 50 Starting Positions in 100 games

    this means that every Starting Position must be played twice

    but the Tournament Result showed that not all Starting Positions were played, some were played more than twice (4 to 6 times) and some were not played at all

    1. Thanks again for the report. At the moment, BSG picks up the opening positions randomly but not in sequent. Thus it is not guaranty all positions from a book will be used.

      1. Thus it is not guaranty all positions from a book will be used… Exactly! …but only if the number of openings are more than the number of games

        for example, the number of Openings are 50, and each Opening is used a maximum of 2 times (once for White and once for Black). Now, I make a tournament of 50 games, then of course only 25 openings will be chosen randomly

        But if the number of games are 100, then all Openings must be used a maximum of 2 times

        And if the number of games are more 100, then out of the 50 Openings, of course there are several Openings will be used more than twice

        …I think there must be an option to pick up the Opening Positions sequentially

  60. Bug report on v12:
    * Crashes when opening certain games in database. Trying to figure out which games. Or it may be on order of selecting. Double click one game to load. Then double click on second game, and it crashes.
    * Crashes when creating new database. Tool>Create Database. Fill in various fields then select Process. Crashes.
    * When doing analysis, countdown (eg. 0 of 38) never increases. closed down banksiagui and when reopened the whole game was analyzed.

    Config: Mac OSX, Mojave, Mac Air 2018

    1. Thanks a lot for the report. I have taken a note and tried to reproduce. However, I am struggling to reproduce (all 3 issues using an iMac) at the moment thus I will come back to those issues later. If you know how to reproduce steps by steps please let us know. Thanks again.

      1. I reproduced on my other laptop, Windows 10.

        Result: Crash when creating new database.
        Steps to reproduce (assume creating empty new db):
        1. Click New Database icon.
        2. On new db form, fill in:
        3. On Game folder, click Browser and select Documents Games folder.
        4. For Database file field, put in “simpletest”.
        5. Click Process.
        6. Crashes.

        Result: Crash when creating new database from PGN.
        Use Alekhine PGN downloaded from
        Steps to reproduce (assume creating empty new db):
        1. Click New Database icon.
        2. On new db form, fill in:
        3. On Game folder, click Browser and select Documents Games folder that has Alekhine.pgn file.
        4. For Database file field, put in “alekhine”.
        5. Click Process.
        6. Crashes.

        I’ll try the other reports too when I get a few more minutes.

      2. v.12 More Test Cases

        Result: Crash when opening games in database.
        Steps to reproduce (assume existing game database gm2001.bgdb):
        1. Click Database icon.
        2. Database file is gm2001.bgdb location
        3. Click on first game (on mine Kramnik v Leko 2001-1-2). Game is opened in game window but focus remains in db listing.
        4. Select next game in list (on mine Kranmik v Leko 2001-1-4). At this point it crashes.
        5. If not crash on step 4, select another game. By this time it will crash if not on previous step.
        Note: sometimes it crashes on first game selected.

        Report: No UI update when doing analysis, countdown (eg. 0 of 38) never increases.
        I am not able to reproduce this as it seems to be working correctly now. I’ll test some more to see if I can reproduce, but it was probably some strange config or state that I was in.

        **New bug report: mispelling of Medium on Preferences>Book/egtb tab>Bubble Size

        1. Thanks a lot for the reports. All those bugs are (hopefully) fixed for the next version 0.13. Please help us to verify.

  61. Thank you for another informative site. Where else could I get that kind of information written in such a perfect way? I have a project that I am just now working on, and I’ve been on the look out for such great information like yours. Thanks!

  62. Really liking your program. I think it will be a hit especially for Linux and Mac users.
    1) Is there a way to lower the playing strength of an engine? For example on stockfish it shows level 20 but no option to change it.
    2) When bringing up a game from the database list, it defaults to showing the last move. It would be nice to start at the beginning of the game (like chessbase, fritz, scid, arena, etc others I’ve tried). Not a huge deal to scroll to top to first move, but still.
    3) It would be nice to have a Resign button to record the proper PGN
    4) Is there way to edit PGN Information (player names, event, etc)

    1. 1) For Stockfish, you go to its options (open Settings->Engines tab-> select Stockfish, scroll screen of Engine options to see Skill Level, double click on the number -> change it to what level you need
      2) Thanks for the suggestion, I have added to my TODO list
      3) BSG used to have Resign button but then I have removed it since it is not really useful. I took a note about this and maybe reimplement
      4) It is in my TODO list. Thanks again

  63. Hello Pham! I have 2 problems with Banksia gui:
    1) I cant read a pgn file. Can you post the process i have to follow to read a pgn file ?
    2) I cant force installed engines to use a specific bin book and play automatically the first opening moves.
    Thanks for your hard work…

    1. 1) Just drag and drop the PGN file into Banksia GUI. Other way is to press Control-O or open menu File -> Open Game -> select your PGN from that dialog
      2) Look like there is a bug on the opening book for game human vs engine. Thanks for the report

      1. 1) Just drag and drop the PGN file into Banksia GUI. Other way is to press Control-O or open menu File -> Open Game -> select your PGN from that dialog.
        Seems that not help either! No game list appears. Only one game from entire pgn file.

        1. You are right. At the moment BSG reads and shows only a game from a PGN file (even it can read all games when creating databases). Support PGN database (multi games) is on my TODO list (I may implement it within 2 weeks).

  64. Some suggestions:
    Add human to tournament
    Resign button (in Human vs Comp)
    Human has Elo and is updated after playing games against Comp
    Add WhiteElo BlackElo to created PGNs

    1. Thanks a lot for the suggestion!
      1) Add human to tournament: interesting idea. However, we confuse since human players usually don’t want to wait for playing vs software. Human vs human matches are no point since we are using only one offline-computer.
      2) Resign button: BSG used to have that button. But we removed it since the human can easily stop the game and/or close program instead 😉
      3) Elo update: We don’t know how to update Elo after a game. If you know please send us the method/document, thanks

      1. 1) It’s quite common to do that, I loved to play fake tournaments in Chessmaster way back. Watching your opponents play is fun. I don’t know how hard that would be to add, but I’d really enjoy that feature.
        2) It’s just so the game gets correctly scored in the PGN as LOSS, I know that ending it is quite easy, but what if I want to save it and take a look at it later? Or use it in a database?
        3) There’s an example here:
        It’s not too hard, basically a single exponential function and some addition and multiplication.
        4) Any update on this? [WhiteElo] and [BlackElo] tags in PGN should contain the player’s Elo rating.

      2. For some reason my reply doesn’t show up so I’ll write it again:
        1) Playing a tournament against (weak!) engines was one of my favourite features of Chessmaster. That coupled with 3) would make it very fun! If it’s not much work, I’d love to see it added.
        2) The main use of resign would be so the PGN files get labeled as LOSS/WIN correctly, I save all my games so it’s very annoying to have to manually change the Results in the PGN.
        3) Updating Elo is quite easy, it’s just a couple of additions and multiplications (and one exponential function). If you google ‘The Math Behind ELO’ you should find a blog post that even has sample code.
        4) Any update on this? WhiteElo and BlackElo in the PGN would be very useful, and it seems like a simple addition.

  65. Hi,
    Thank you very much for the very cool Chess GUI.
    Is there a way to run an engine gauntlet tournament where one engine will always play as white (without swiping sides) and using a pgn as an opening -opening order sequential?
    Could you please increase the maximum number of games per tournament from 10000 to 250000.
    Any assistance you can provide would be greatly appreciated

    1. For the current version, BSG can lock engines to a given side. However, it is a bit complicated (and maybe buggy) since users have to edit JSON files. Thus, we are working to improve and hope users can do easily in the next release.
      The idea about using PGN in order sequence looks good, we put it in TODO list – thanks. The increment of the limit is ready for the next release.

  66. Is there a way to analyze a played game, or have the engine show move ratings on a played game? When I bring up games from the database, it seems the engine is not turned on at all.

    1. Analyze a played game is a task in my TODO list – not available at the moment. When you load a game (from PGN or database) BSG will match players’ names with engine-name list, if a name totally matched, the engine of that name will be invoked.

    1. Thanks a lot for the report and the log. I have just uploaded new binaries to fix (hopefully) the problem. Please try.

      1. Hello again. Thanks for the quick turnaround. V .010b seems to run fine now. I think the GUI is also a little more responsive. I particularly like the “score meter” and some of the other small UI improvements (the button to edit the interface files is also good!). You are definitely making progress. I did not update this issue again, but I am fairly sure you still have a “smaller” memory leak. When I run my “test” 144 game tourney the banksia app still grows to about 250mb, (but it was about twice that or 500mb until you worked on it with version 0.9). Mac Activity Monitor is a good way to look at the size of the app over time.
        You have done very good work and this GUI is showing great promise. Just needs some more polishing and stability tweaking! Thanks for such a fine app addition to the chess community!

  67. Hello again. Sorry, but version .10 (14 Dec) doesn’t startup (no UI screen) and then immediately crashes (with no error msg) on my old Core 2 Duo 2 mini 64 bit. All previous versions ran fine. Maybe a bad build? Thanks in advance.

  68. Thanks for the arrow keys and OSX support.
    Small edit: On Settings screen, General tab, next to Move stat bubbles, Medium is misspelled. Same with Book/Egtb tab.
    And for Database Viewer, can you tighten up the game list. It seems that there is too much space between lines.
    Also when selecting a game from the DB Viewer, it always brings up the game with the last move shown instead of showing the initial game ready to play move 1 (which seems different from other GUI’s I’ve used).

  69. One more thing, on another Mac: can you enable making moves with arrow keys instead of having to use buttons on toolbar?

  70. One more thought. I did have logs, etc. enabled on these tournies. Are you maybe putting them in memory before Banksia writes them out and then maybe not releasing the memory, etc! Just a thought!

  71. Hello again. Well, it is good that you are at least aware of the problem. It does make sense that the “slowdown” is probably worse on an old slower processor like mine, but NOT desirable on any machine. I am not a C++ programmer (mostly pascal and flavors of basic), but you should probably ask around on TalkChess for some suggestions. There are lots of sharp folks on that forum. Good luck. If I can be of any further help, let me know.

  72. I sent you the following email (with attachments) to banksiagui gmail com.

    Hello again. I have a bit more info on the “freezing” behavior. I am now using version 0.8alpha which seems somewhat better. But it still slows down and the apparent memory usage is “bloated” (much larger) about halfway through a tourney. I have attached several screenshots that show memory usage growing steadily as my tourney progresses. Banksia memory started at a modest 88mb (even though I forgot to take a screenshot at start). But the images (look for Banksia process at bottom of each image) show the memory steadily increasing with the last memory image being about halfway through a 144 game round-robin tourney (but Banksia has not “frozen” at this point, just slowed down). Surely this memory increase in the Banksia process is not normal? I would bet that some data structure is constantly being allocated memory that often does not get released. I did see the memory usage dip a bit for short periods but always ends up increasing steadily. I hope this info helps!

    By the way, I really like the tournament info tabs in v0.8. The “tech” info is very useful. All in all you have done a very good job with Banskia! I hope it continues to progress!


    P.S. – I use cutechess (both cli and GUI) and several other chess GUIs on a constant basis. You already have some features in Banskia that they don’t have!.

    1. I got your email. Thanks a lot!

      Yes, it looks like BSG has trouble with the memory leak. I have been fighting on this issue. It is not clear how hard the leak since BSG keeps some info of completed games, thus memory must increase after each game. In my computer (16 GB memory) BSG can play continuously thousands of games. BTW, I will focus on this issue now.

  73. Hello! Very promising GUI. I really like the general layout with the tourney schedule, tables, multi-games, etc.
    I am using v0.7 alpha on an old circa 2010 Mac Mini Core 2 Duo 2 under 10.13 High Sierra. It seems to freeze about 20-30 games into a tourney (round-robin or gauntlet, concurrency set only to 1). I have to force quit the app. I have 16gb memory and lots of disk space and was only running a browser in the background. I do not know whether this is a slow memory-type leak or something else. Sorry I cannot report more info at this time. I have lots of experience with other engines and other Chess GUIs so I thought I should report this.
    Thanks for this very promising GUI. I will definitely follow its progress.

    1. Thank you for using Banksia GUI. I don’t have mac mini to try, thus I need your help to check further. Can you do the following steps:
      – run the app Activity Monitor to check frequently computer’s memory
      – pick up 1 or 2 “good” chess engines. That is for making sure they are not the problem. Stockfish is usually a good one. Don’t try Lc0 since it is not good for macOS and may freeze the screen
      – now run Banksia GUI, create a tournament with above engines, first set Games/pair small, say 4, then increase later, turn off almost all things, don’t use opening books, no log, no syzygy… Set time controller to very fast (say, standard 10 seconds per games) -> you can try fast
      – start the tournament
      Just observe if BSG can complete the tournament and check memory if it becomes exceeding your physic memory.
      If the tournament completed well, try to double the number of games by double the games per pair…
      Please report here your experiments. Thanks

      1. I don’t think the “mac-mini” itself (type of processor) would make any difference. I think the freeze would probably happen on ANY Mac processor. I have 16gb of physical memory for just these type of applications and rarely use more than 50% (as reported by menu-bar stats). I did indeed use all known good engines (Stockfish 10, Komodo 13.2.5, etc.) that I have used before. I think you may have a pointer or memory-structure leak somewhere. I will run some more tests and note the CPU and memory usage. When it froze several times before Mac OS simply reports (“BanksiaGUI has become non-responsive”). I was using eight well-known engines with a 3-minute+1sec time control. I will of course test the new version 0.8 alpha. Very promising GUI when it becomes stable.

        1. Thanks for the reply and help. The problem (for me) I can’t reproduce that issue on my iMac (2017, it has a similar 16 GB memory but quad-cores and using Catalina). I will do some more tests too.

  74. I would like to have a 4th option for tournament mode: gauntlet. As I test for CCRL that is the mode I use almost exclusively with all other GUI’s.

      1. I also use gauntlet a lot. If you can program the player running the gauntlet to choose his color for all rounds, that would be a first. All the gui’s I know play White in the first pass.

        1. BSG doesn’t have an interface to do that. However, you may edit manually the file banksiatour.json to lock some engines to a given side as the following text. Please try and tell me the result.
          “inclusive players” :
          “guide” : “matches are counted with players in this list only; side: white, black, any”,
          “mode” : true,
          “players” : [ “crafty”, “stockfish 10” ],
          “side” : “black”

Leave a Reply to admin Cancel reply

Your email address will not be published.