CoolFace
Datasetpublic

ziadatalabs/FreeChessGames25M

Free Synthetic Chess Games (25M) A synthetic dataset of 25,003,202 individual chess moves across 92,733 fully legal games, generated move-by-move with real chess-rules validation (every move is legal, every game is genuinely playable from start to finish, and every move is recorded in standard algebraic notation). Important note on play quality: these games are fully legal but NOT master-level play — each move is chosen uniformly at random from the set of legal moves available… See the full description on the dataset page: https://huggingface.co/datasets/ziadatalabs/FreeChessGames25M.

sourceHugging Facecc-by-nc-4.0updated 1mo agoView on Hugging Face
1likes12downloads
Dataset Card

Free Synthetic Chess Games (25M)

A synthetic dataset of 25,003,202 individual chess moves across 92,733 fully legal games, generated move-by-move with real chess-rules validation (every move is legal, every game is genuinely playable from start to finish, and every move is recorded in standard algebraic notation).

Important note on play quality: these games are fully legal but NOT master-level play — each move is chosen uniformly at random from the set of legal moves available at that position, not selected by a chess engine or drawn from human games. This makes the dataset well suited for move-legality checking, board-state encoding, position/move parsers, and engine or tooling test harnesses — not for learning strong chess strategy. As a result of random play, draws are common (insufficient material, repetition, and move-limit draws all occur naturally).

No real player games, PGN databases, or copyrighted game records were used — every game here was generated from scratch.

Schema

ColumnTypeDescription
game_idstringUnique identifier for the game this move belongs to
move_numberintFull-move number (increments after each pair of White/Black moves)
plyintHalf-move index within the game (1 = White's first move, 2 = Black's first move, ...)
playerstringWhich side made the move — white or black
move_sanstringThe move in Standard Algebraic Notation (e.g. Nf3, exd5, O-O)
piecestringPiece type that moved — pawn, knight, bishop, rook, queen, or king
from_squarestringOrigin square (e.g. e2)
to_squarestringDestination square (e.g. e4)
is_captureboolWhether the move captured an opposing piece
is_checkboolWhether the move put the opposing king in check
game_resultstringFinal result of the game this row belongs to — 1-0, 0-1, or 1/2-1/2

Format

Single Parquet file, Snappy-compressed. One row per half-move (ply), so each game spans multiple consecutive rows sharing the same game_id.

Quick start

python
import pandas as pd
df = pd.read_parquet("chess_games_25M.parquet")

# Reconstruct one game's move sequence
game = df[df["game_id"] == df["game_id"].iloc[0]].sort_values("ply")
print(game[["ply", "player", "move_san"]])
python
# Or with duckdb for larger-than-memory queries
import duckdb
duckdb.sql("SELECT game_result, COUNT(DISTINCT game_id) FROM 'chess_games_25M.parquet' GROUP BY game_result")
python
# Or with the datasets library
from datasets import load_dataset
ds = load_dataset("ziadatalabs/FreeSyntheticChessGames25M")

Notes

  • Games are generated with uniform-random legal-move selection, not engine or human play — see the play-quality note above before using this for anything strategy-related.
  • Every move is validated for legality at generation time, so full games replay cleanly from the move_san sequence.
  • Draws are more frequent here than in typical human or engine games, which is an honest consequence of random play (not a data quality issue).
  • This dataset is part of a growing collection of free synthetic datasets across security, finance, healthcare, retail, geospatial, and other domains.

License & Usage

Licensed under CC BY-NC 4.0 (Creative Commons Attribution-NonCommercial 4.0). Free to use for personal, research, and educational purposes with attribution. Not licensed for commercial use.


Published by Zia Data Labs. More free synthetic datasets at huggingface.co/ziadatalabs.

Want more free datasets? Hit the ❤️ and follow. And we take requests — tell us what synthetic data you need, and we'll build it.

Contact: zia.data.team@protonmail.com