Integrate a Third NNUE Network in Wordfish (FalconFile)
0) What you’ll need
- A recent Wordfish binary built with NNUE support.
- The NNUE weight file you want to use as the third network. In this guide we call it
3.net(you can use any filename;FalconFilelets you point to it). - File system access to place the network near the engine or anywhere readable.
Note: There is no
3.netin the Wordfish repository. You must obtain an NNUE weight from a trusted source (e.g., official Stockfish network releases). Then either keep its original filename or rename it to3.netif you like the convention.
1) Obtain the network file
Windows (PowerShell)
# Example: download to current folder and name it 3.net
Invoke-WebRequest -Uri "<ACTUAL-NETWORK-URL>" -OutFile "3.net"
Windows (CMD)
curl -L "<ACTUAL-NETWORK-URL>" -o 3.net
Linux / macOS
wget "<ACTUAL-NETWORK-URL>" -O 3.net
# or
curl -L "<ACTUAL-NETWORK-URL>" -o 3.net
- Replace
<ACTUAL-NETWORK-URL>with the real link to the NNUE weight you want. - If the file doesn’t naturally end with
.netor.nnue, it’s fine—Wordfish only needs the correct path. The name3.netis just a practical label.
(Optional) Verify checksum
If the source publishes a checksum:
# Linux/macOS
sha256sum 3.net
# Windows PowerShell
Get-FileHash .\3.net -Algorithm SHA256
Compare the output with the published hash.
2) Place the network file
You have two common choices:
- Same folder as the engine executable (simple, portable).
- Anywhere on disk, and you’ll pass an absolute path to
FalconFile.
Examples:
C:\Engines\Wordfish\wordfish.exeandC:\Engines\Wordfish\3.net/home/user/engines/wordfish/wordfishand/home/user/engines/wordfish/3.net
3) Tell Wordfish to use the network (UCI FalconFile)
A) Plain console (quick sanity check)
Start the engine, switch to UCI mode, set the option, and verify readiness.
Windows (CMD / PowerShell):
wordfish.exe
uci
setoption name FalconFile value 3.net
isready
Linux / macOS:
./wordfish
uci
setoption name FalconFile value 3.net
isready
- If
3.netisn’t in the same directory, pass a full path:setoption name FalconFile value C:\Engines\Wordfish\networks\3.netorsetoption name FalconFile value /home/user/engines/wordfish/networks/3.net - After
isready, the engine should respond withreadyok. Many builds also print aninfo stringindicating the network file it loaded. That’s a good sign you’re using the intended model.
B) CuteChess-CLI
cutechess-cli \
-engine cmd="C:\Engines\Wordfish\wordfish.exe" option.FalconFile="C:\Engines\Wordfish\3.net" option.Hash=256 option.Threads=8 \
-engine cmd="C:\Engines\Other\opponent.exe" option.Hash=256 option.Threads=8 \
-each tc=10+0.1 -rounds 50 -concurrency 8
Tip: In CuteChess-CLI, engine options are specified as
option.<UCIName>=<value>.
C) FastChess
fastchess.exe ^
-engine cmd="C:\Engines\Wordfish\wordfish.exe" option.FalconFile="C:\Engines\Wordfish\3.net" option.Hash=256 option.Threads=8 ^
-engine cmd="C:\Engines\Other\opponent.exe" option.Hash=256 option.Threads=8 ^
-each tc=10+0.1 -rounds 50 -concurrency 8
Important: Use the
option.<UCIName>=<value>form in FastChess (e.g.,option.FalconFile=3.net). Don’t useinitstr; FastChess does not accept that parameter.
D) Common desktop GUIs
- BanksiaGUI / Arena / Cute Chess GUI / Fritz / ChessBase:
Add Wordfish as a UCI engine → open Engine Options → findFalconFile→ set to your3.net(or browse to an absolute path).
Save/apply and (re)start the engine.
4) Make it persistent
Most GUIs remember engine options after you set them once. For CLI usage, keep the option.FalconFile=... clause in your scripts so future runs automatically load the same network.
5) Verify the network is actually in use
- On engine start (after
uci), setFalconFile, then run:isready ucinewgame position startpos go depth 1Engines commonly print aninfo stringon load or fail loudly if the file is missing. - If you maintain multiple networks, deliberately point to a nonexistent file once to ensure the engine throws an error—this confirms the option is active and not ignored.
6) Typical directory layout (portable)
Wordfish/
├─ wordfish.exe
├─ 3.net
├─ books/
│ └─ mybook.bin
└─ logs/
This keeps the network alongside the binary so FalconFile value 3.net works without absolute paths.
7) Troubleshooting
Q: FalconFile is not listed in UCI options.
A: Update to a Wordfish build that includes the option and NNUE support, then check again with uci. (Some forks expose EvalFile or similar; Wordfish exposes FalconFile per this guide.)
Q: The engine ignores my file or falls back to another net.
- Ensure the path is correct. Quote paths with spaces:
option.FalconFile="C:\Users\Me\Desktop\nets\my third net.nnue" - Prefer an absolute path for testing.
- Confirm file permissions (readable by your user).
Q: “File not found” or “cannot open.”
- Double-check the filename and extension.
- Place the file next to the executable and try just
3.netto rule out path issues.
Q: Crash or “invalid network” errors.
- The file may be corrupt or not a supported NNUE format for your build—download again from a trusted source and verify hash.
Q: Performance seems unchanged.
- Confirm the engine actually loaded the requested file (watch for load messages, or point to an obviously wrong name to provoke an error).
- Some GUIs cache options—close the GUI, delete its engine profile, re-add Wordfish, then set
FalconFileagain.
8) Ready-to-use command snippets
Windows – test quickly in place
cd /d C:\Engines\Wordfish
wordfish.exe
uci
setoption name FalconFile value 3.net
isready
ucinewgame
position startpos
go depth 10
CuteChess-CLI – 1v1 match (Windows)
cutechess-cli -engine cmd="C:\Engines\Wordfish\wordfish.exe" option.FalconFile="C:\Engines\Wordfish\3.net" -engine cmd="C:\Engines\Other\opponent.exe" -each tc=10+0.1 -rounds 50 -concurrency 8
FastChess – 1v1 match (Windows)
fastchess.exe -engine cmd="C:\Engines\Wordfish\wordfish.exe" option.FalconFile="C:\Engines\Wordfish\3.net" -engine cmd="C:\Engines\Other\opponent.exe" -each tc=10+0.1 -rounds 50 -concurrency 8
Linux/macOS – quick check
cd ~/engines/wordfish
./wordfish
uci
setoption name FalconFile value ./3.net
isready
9) (Optional) Keep multiple nets and switch on demand
You can store several nets and point FalconFile to the one you want:
nets/
├─ 1.net
├─ 2.net
└─ 3.net
Then:
setoption name FalconFile value /absolute/path/to/nets/3.net
If your GUI supports engine profiles, create one profile per network for one-click switching.
10) Safety & provenance
- Only use trusted NNUE weights (verify checksums when provided).
- If you distribute your engine bundle, do not assume you’re allowed to re-host third-party nets—link to the source and include licensing/attribution as required by the network’s publisher.
TL;DR
- Download your desired NNUE → save/rename as
3.net. - Put it next to
wordfish.exe(or note its absolute path). - Set
FalconFileto that file:
setoption name FalconFile value 3.net
- Verify with
isreadyand a quickgo depth 1. - In CLI tools, pass it as
option.FalconFile=....
You’re done—Wordfish will now evaluate with your third network.

Jorge Ruiz
connoisseur of both chess and anthropology, a combination that reflects his deep intellectual curiosity and passion for understanding both the art of strategic chess books

Good morning,
Unfortunately, I can’t install this third version, but I don’t think it makes much of a difference…
It would be more interesting if in the next versions they included this third nue already integrated into the engine like the two they already have.
I would like to point out that I test all new engines in PlayChess in the engine room. This version must have some error, as it has lost several games and has the same configuration as the previous version. Please check.
I hope this has helped. Best regards!
hello Chacal, thank you for you words. Today after revise the code and test in playchess, fixed the bug of evaluation and integration of third nnue correct:Wordfish v. 2.40 120925 avx by Jorge Ruiz Centelles and the Stockfish developers (see AUTHORS file)
Compiled by : clang++ 20.1.8 on MinGW64
Compilation architecture : x86-64-avx
Compilation settings : 64bit SSE41 SSSE3 SSE2 POPCNT
Compiler __VERSION__ macro : Clang 20.1.8
uci
id name Wordfish v. 2.40 120925 avx
id author Jorge Ruiz Centelles and the Stockfish developers (see AUTHORS file)
option name Debug Log File type string default
option name NumaPolicy type string default auto
option name Threads type spin default 1 min 1 max 1024
option name Hash type spin default 16 min 1 max 33554432
option name Clear Hash type button
option name Ponder type check default false
option name MultiPV type spin default 1 min 1 max 256
option name Skill Level type spin default 20 min 0 max 20
option name Move Overhead type spin default 10 min 0 max 5000
option name Slow Mover type spin default 100 min 10 max 1000
option name nodestime type spin default 0 min 0 max 10000
option name Minimum Thinking Time type spin default 20 min 0 max 5000
option name UCI_Chess960 type check default false
option name UCI_LimitStrength type check default false
option name UCI_Elo type spin default 1320 min 1320 max 3190
option name UCI_ShowWDL type check default false
option name SyzygyPath type string default
option name SyzygyPremap type check default false
option name SyzygyProbeDepth type spin default 1 min 1 max 100
option name Syzygy50MoveRule type check default true
option name SyzygyProbeLimit type spin default 7 min 0 max 7
option name Book1 type check default false
option name Book1 File type string default
option name Book1 BestBookMove type check default false
option name Book1 Depth type spin default 255 min 1 max 350
option name Book1 Width type spin default 1 min 1 max 10
option name Book2 type check default false
option name Book2 File type string default
option name Book2 BestBookMove type check default false
option name Book2 Depth type spin default 255 min 1 max 350
option name Book2 Width type spin default 1 min 1 max 10
option name Experience Enabled type check default true
option name Experience File type string default experience.exp
option name Experience Readonly type check default false
option name Experience Prior type check default true
option name Experience Width type spin default 1 min 1 max 20
option name Experience Eval Weight type spin default 5 min 0 max 10
option name Experience Min Depth type spin default 27 min 4 max 64
option name Experience Max Moves type spin default 16 min 1 max 100
option name Experience Book type check default false
option name Experience Book Max Moves type spin default 100 min 1 max 100
option name Experience Book Min Depth type spin default 4 min 1 max 255
option name Experience Concurrent type check default false
option name MCTS by Shashin type check default false
option name MCTSThreads type spin default 0 min 0 max 512
option name MCTS Multi Strategy type spin default 20 min 0 max 100
option name MCTS Multi MinVisits type spin default 5 min 0 max 1000
option name MCTS Explore type check default false
option name Adaptive Style type check default false
option name EvalFile type string default nn-1c0000000000.nnue
option name EvalFileSmall type string default nn-baff1ede1f90.nnue
option name FalconFile type string default nn-c01dc0ffeede.nnue
uciok
info string experience.exp -> Total moves: 0. Total positions: 0. Duplicate moves: 0. Fragmentation: 0.00%)
go depth 1
info string Available processors: 0-23:24-47
info string Using 1 thread
info string NNUE evaluation using nn-1c0000000000.nnue (133MiB, (22528, 3072, 15, 32, 1))
info string NNUE evaluation using nn-baff1ede1f90.nnue (6MiB, (22528, 128, 15, 32, 1))
info string NNUE evaluation using nn-c01dc0ffeede.nnue (6MiB, (22528, 128, 15, 32, 1))
bestmove a2a3 ( new release is avaible into the last post) Best regards, Jorge Ruiz.