Skip to content

Instantly share code, notes, and snippets.

@peterellisjones
Last active August 20, 2025 17:35
Show Gist options
  • Select an option

  • Save peterellisjones/8c46c28141c162d1d8a0f0badbc9cff9 to your computer and use it in GitHub Desktop.

Select an option

Save peterellisjones/8c46c28141c162d1d8a0f0badbc9cff9 to your computer and use it in GitHub Desktop.
Test positions for debugging chess engines. Formatted as JSON array of FEN strings
[
{
"depth":1,
"nodes":8,
"fen":"r6r/1b2k1bq/8/8/7B/8/8/R3K2R b KQ - 3 2"
},
{
"depth":1,
"nodes":8,
"fen":"8/8/8/2k5/2pP4/8/B7/4K3 b - d3 0 3"
},
{
"depth":1,
"nodes":19,
"fen":"r1bqkbnr/pppppppp/n7/8/8/P7/1PPPPPPP/RNBQKBNR w KQkq - 2 2"
},
{
"depth":1,
"nodes":5,
"fen":"r3k2r/p1pp1pb1/bn2Qnp1/2qPN3/1p2P3/2N5/PPPBBPPP/R3K2R b KQkq - 3 2"
},
{
"depth":1,
"nodes":44,
"fen":"2kr3r/p1ppqpb1/bn2Qnp1/3PN3/1p2P3/2N5/PPPBBPPP/R3K2R b KQ - 3 2"
},
{
"depth":1,
"nodes":39,
"fen":"rnb2k1r/pp1Pbppp/2p5/q7/2B5/8/PPPQNnPP/RNB1K2R w KQ - 3 9"
},
{
"depth":1,
"nodes":9,
"fen":"2r5/3pk3/8/2P5/8/2K5/8/8 w - - 5 4"
},
{
"depth":3,
"nodes":62379,
"fen":"rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1NnPP/RNBQK2R w KQ - 1 8"
},
{
"depth":3,
"nodes":89890,
"fen":"r4rk1/1pp1qppp/p1np1n2/2b1p1B1/2B1P1b1/P1NP1N2/1PP1QPPP/R4RK1 w - - 0 10"
},
{
"depth":6,
"nodes":1134888,
"fen":"3k4/3p4/8/K1P4r/8/8/8/8 b - - 0 1"
},
{
"depth":6,
"nodes":1015133,
"fen":"8/8/4k3/8/2p5/8/B2P2K1/8 w - - 0 1"
},
{
"depth":6,
"nodes":1440467,
"fen":"8/8/1k6/2b5/2pP4/8/5K2/8 b - d3 0 1"
},
{
"depth":6,
"nodes":661072,
"fen":"5k2/8/8/8/8/8/8/4K2R w K - 0 1"
},
{
"depth":6,
"nodes":803711,
"fen":"3k4/8/8/8/8/8/8/R3K3 w Q - 0 1"
},
{
"depth":4,
"nodes":1274206,
"fen":"r3k2r/1b4bq/8/8/8/8/7B/R3K2R w KQkq - 0 1"
},
{
"depth":4,
"nodes":1720476,
"fen":"r3k2r/8/3Q4/8/8/5q2/8/R3K2R b KQkq - 0 1"
},
{
"depth":6,
"nodes":3821001,
"fen":"2K2r2/4P3/8/8/8/8/8/3k4 w - - 0 1"
},
{
"depth":5,
"nodes":1004658,
"fen":"8/8/1P2K3/8/2n5/1q6/8/5k2 b - - 0 1"
},
{
"depth":6,
"nodes":217342,
"fen":"4k3/1P6/8/8/8/8/K7/8 w - - 0 1"
},
{
"depth":6,
"nodes":92683,
"fen":"8/P1k5/K7/8/8/8/8/8 w - - 0 1"
},
{
"depth":6,
"nodes":2217,
"fen":"K1k5/8/P7/8/8/8/8/8 w - - 0 1"
},
{
"depth":7,
"nodes":567584,
"fen":"8/k1P5/8/1K6/8/8/8/8 w - - 0 1"
},
{
"depth":4,
"nodes":23527,
"fen":"8/8/2k5/5q2/5n2/8/5K2/8 b - - 0 1"
}
]
@e3ntity

e3ntity commented Apr 28, 2021

Copy link
Copy Markdown

Some of the FEN notations are messed up. The order in which castling legality is specified must follow "KQkq": https://en.wikipedia.org/wiki/Forsyth–Edwards_Notation (In the german article this is explicitly stated). For example lichess won't recognize this otherwise.

@peterellisjones

Copy link
Copy Markdown
Author

Some of the FEN notations are messed up. The order in which castling legality is specified must follow "KQkq": https://en.wikipedia.org/wiki/Forsyth–Edwards_Notation (In the german article this is explicitly stated). For example lichess won't recognize this otherwise.

Fixed :)

@ajax333221

Copy link
Copy Markdown

8/8/8/2k5/2pP4/8/B7/4K3 b - d3 5 3 the pawn push that created the enpassant should have set the halfmoves to 0, my program was failing to load this position because of this (which I know is a problem in my end as my validator should be more relaxed, but just saying).

@peterellisjones

Copy link
Copy Markdown
Author

Thanks @ajax333221, fixed

@sictransit

sictransit commented Sep 20, 2022

Copy link
Copy Markdown

Thank you! Those helped me find and fix a couple of bugs in my engine.

@shuckc

shuckc commented Dec 20, 2022

Copy link
Copy Markdown

Very useful list, thankyou

@eikopf

eikopf commented Nov 21, 2023

Copy link
Copy Markdown

this is great, thanks so much!

for anyone using this for testing, the following commands will convert this into a comma-delimited list of string literals, so you can stick them in an array or something.

SRC="https://gist.githubusercontent.com/peterellisjones/8c46c28141c162d1d8a0f0badbc9cff9/raw/b11af5a3dd978724ac2d4a531217133b9a3ad9ba/Chess%2520Perft%2520test%2520positions"

curl $SRC | jq ".[] | .fen" | sed "s/\$/,/g"

@DuckyShine004

Copy link
Copy Markdown

Thanks, this was very helpful for debugging my chess engine!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment