Download links for Stockfish 12 C0:

This is a set of modified compiles of Stockfish 12 (“Stockfish 12 C0”) for Windows that makes some modifications useful for analysis.

These changes are:
(a) It sets the default contempt value to 0 instead of 24. Note that (1) dynamic contempt is unchanged, and (2) contempt is not really used in the NNUE version of SF 12.
(b) Two versions of SF 12 are included – a pure NNUE version and a pure ‘classical’ version. Currently SF 12 will switch between the two evaluative modes depending on internal heuristics. Using these versions, you always know which evaluation is in use, and whether you should trust it or not.
(c) I have compiled this with the .nnue network separate (not embedded) in the engine file. The embedding procedure was giving false virus warnings on a few anti-virus programs.

Because the file name and internal name are different from the official release, you should be able to install it in ChessBase / Fritz as a separate engine and without any problems.

Note that you have to put the .nnue file in the same folder as the .exe file to get the NNUE version to work properly.


Changes to the official Stockfish 12 source code are included in this compile:

o[“Contempt”] << Option(24, -100, 100);


o[“Contempt”] << Option(0, -100, 100);

in ucioption.cpp line 62

constexpr Value NNUEThreshold1 = Value(550);
constexpr Value NNUEThreshold2 = Value(150);


constexpr Value NNUEThreshold1 = VALUE_INFINITE;
constexpr Value NNUEThreshold2 = VALUE_INFINITE;

in evaluate.cpp lines 193-194

const string Version = “12”;


const string Version = “12 C0”;
const string Version = “12 NNUE C0”;

in misc.cpp line 68

#4: Classic version only:
o[“Use NNUE”] << Option(true, on_use_NNUE);


o[“Use NNUE”] << Option(false, on_use_NNUE);

in ucioption.cpp line 82

The official source code is available at:


Which version should I use? Generally this list proceeds from fastest to slowest.


Note that you have to put the .nnue file in the same folder as the .exe file to get the NNUE version to work properly.

stockfish_12_C0_nnue_bmi2.exe – Intel processors post-Haswell (i3, i5, i7 4xxx)
stockfish_12_C0_nnue_avx2.exe – Ryzen processors
stockfish_12_C0_nnue_modern.exe – Most modern 64-bit processors
stockfish_12_C0_nnue_ssse3.exe – older processors (post-Nehalem and Bulldozer)
stockfish_12_C0_nnue_x64.exe – generic 64-bit support


stockfish_12_C0_bmi2.exe – Intel processors post-Haswell (i3, i5, i7 4xxx)
stockfish_12_C0_avx2.exe – Ryzen processors
stockfish_12_C0_modern.exe – Most modern 64-bit processors, including Ryzen (avx / modern matters less with classic)
stockfish_12_C0_x64.exe – generic 64-bit support

These files were compiled using MSYS and GCC 10.2.0 on a Windows 10 machine with Ryzen 3700x processor. No warranty is made or implied with these engines – use at your own risk.

SF dev versions compiled under this setup work for normal analysis in ChessBase, Fritz, Blitzin, TarraschGUI, but do occasionally throw faults when used for automated analysis in Fritz, at least on one of my machines. Caveat emptor.

Virustotal links (0/64 detected):