Chess Second
Get started

Research · Game database

Anyone can own a chess database. Keeping it clean is the job.

Every game database online gives you a number. Here is ours, where it came from, what we threw out, what we fixed, and what is still wrong.

One rule runs through all of it. We are not trying to have the most games. We are trying to have zero false positives: a game goes to a player only when the proof is strong enough. The strongest proof is FIDE’s own pairing: that player, that opponent, in that event. A name and a rating that match are weaker, and we use them only under strict conditions. When the proof is not there, we do not attribute the game, even if nothing looks wrong. Sometimes that is too strict. We accept it: an incomplete record is better than a wrong one.

Every number about our own base was measured on 10 October 2026, with read-only queries on our production database. Source volumes come from the import log of 1 October 2026 and from earlier counts.

The base9.36Munique over-the-board (OTB) gamesThe real size of the base, after cleaning: 12.3M raw records → 9.36M. Plus 14,094 online games kept apart, not yet tied to player records: 9.37M in all.
For your repertoire804Kmaster OTB games, both players rated 2400+Every one played between two players rated 2400 or more at the time of the game. No master games, no repertoire.
For scouting240,944FIDE players with at least one proven gameAcross 7.2M OTB games with at least one proven player. Scouting lives in the long tail: see who is covered.

Every database announces a number. Here are some, as each one states it today:

None of them is the same base. Each one imports its own events on its own schedule, with its own rules. The headline number says how many games went in. It does not say what was done with them.

So what does it mean to own a chess database? Not much. A base is clean on the day you clean it. It changes with every new import, week after week, and after a few months it’s a mess again. The base is not the asset. The process is. This page is the process, step by step, with the real numbers.

01 · The inputs

A game database alone cannot clean itself. It takes FIDE’s records.

A game file tells you what its source believed: a name, a date, a result. To check any of it, you need something independent. For us, that is FIDE’s own data: every rating list since 2001, the rated tournaments and the pairings FIDE publishes. Collecting it and checking its dates is most of the work.

FIDE rating lists224 lists, January 2001 → October 2026
Who existed, under which ID, with which rating, month by month. That is how a name becomes a player, and how a rating in a game file is checked against the real one.
FIDE tournaments442,118 rated events since 2001
Name, place, dates. That is how a game gets its real tournament and its real date.
FIDE pairingsround by round, from September 2005
Who played whom, on which day, with which result. The strongest proof there is: FIDE itself says the game happened.

Merging game databases is harder than it looks, because FIDE does not give everything. These references have an edge. FIDE’s own rating lists start in 2001; for 1990 to 2000 we use the FIDE lists kept in an archive. FIDE pairings start in September 2005 and are near-complete from 2008; for events since 2025, we hold them for 84,471 of 96,381 so far. Before 2001, a game can still be attributed, but only when the name and the exact rating in the game point to one player, and one only, on the list of that month. We tested that rule on 2006-2010, where pairings give the answer: 0 errors on 626,391 sides. The further back you go, the less a game can be proven.

FIDE’s data has its own errors, so we check it too. Some arbiters’ software writes round dates day first: “08/09/25” is 8 September 2025, not 25 September 2008. In 4,267 tournaments, we re-read 442,908 round dates that way, and marked 556,623 whose year was wrong as unknown rather than guess one.

02 · The perfect game

What a game looks like when everything about it is proven.

We call a game perfect when both players are identified by their FIDE ID through FIDE’s pairings, the game is matched to its FIDE tournament and its official pairing, and its date is known to the day. Then FIDE itself confirms who played whom, in which event.

Share of perfect games by period, over-the-board games
OTB gamesPerfect
All games, 1500 → 202645.0%
Since 200163.1%
Since 201082.4%
Last five years (since October 2021)79.7%
Last twelve months (since October 2025)83.7%

On recent games, about four in five are perfect, and more than nine in ten have at least one proven player. The perfect game is the ideal, and what a repertoire built on master games should aim for. For scouting, one proven player is enough: you prepare against your opponent from their own games, whoever sat across the board. 7,154,789 OTB games (76.4%) have at least one proven player: 92.9% over the last five years, 94.5% over the last twelve months.

Before September 2005, a perfect game is impossible with our data: FIDE pairings were not published. That is the history of the sources, not a defect. The rest of this page is about closing the gap, game by game.

03 · What it covers today

A base of masters only is useless for scouting. Here is the long tail.

Your next opponent is more likely rated 1900 than 2700. So we measure coverage by rating band: among active players rated in standard on the October 2026 FIDE list, how many have at least one proven OTB game with us, and how many games the typical one has.

Coverage of active FIDE players by standard rating band
RatingWith gamesMedian games
2700+100%1,779
2600–2699100%1,583
2500–2599100%1,076
2400–249999.9%601
2200–239998.8%221
2000–219991.5%62
1800–199966.7%18
1600–179936.9%7
Under 160018.1%5

The top is complete. Below 2000 it thins out: 37% of active players under 2000 have at least one game with us, typically nine. That is 72,344 players a masters-only base would not have at all, and it is where most of the work still is.

Online games count too. A Titled Tuesday would say a lot about a player’s openings. Today we keep 14,094 online games from our sources, apart from the OTB base, but they are not yet tied to player records. That is the next step for scouting.

The base grows in batches: there is no live feed yet, we import and check each batch ourselves. Over the last six months, our sources published about 7,700 unique over-the-board games a week that we kept, about 450 of them between two players rated 2400+, with about 360 FIDE players appearing for the first time each week.

04 · Where it starts

Three sources, 12.3 million records, a lot of them the same game.

8,907,118 kept. 1,417,758 correspondence games and 30,612 online games set aside at import.
815,627 of them are also in the Complete base.
Lichess broadcasts1,072,278 records
509,613 of them were already in Lumbra.

Masters index after July 2026. Lumbra’s Elite selection stops on 6 July 2026. From July 2026 on, a game also enters the Masters explorer when it was played over the board and both players are rated 2500 or more in the game header, at any time control. Example: Keymer – Caruana, Sinquefield Cup 2026, round 8. 2,124 games from July to October 2026 are added this way (measured on 22 October 2026).

  1. 12.29M

    records in the sources

  2. 9.51M

    games stored once the copies two sources share are merged. Most correspondence and online games are already out; 58,588 are still in at this stage

  3. 9.36M

    over-the-board games, once the last correspondence and online games, engine games, simuls, forfeits and duplicates are set aside. That last number is the base.

05 · Sources and credits

Where the games come from, and under which terms.

The base is built on the work of others. Most of the 9,511,818 games we store reach us through Lumbra’s GigaBase (opens in a new tab), which merges many collections and labels each game with the one it came from. The labels below are Lumbra’s. Where a source states a licence, we give it. Where we found none, we say nothing about it.

Some of the collections, by games stored (October 2026):

Codekiddy2,706,579
Lumbra's GigaBase (own collection)2,033,406
PGN Mentor1,987,143
TWIC520,391
MillionBase516,774
BenBase231,783
Lichess broadcasts178,571
Britbase131,428

Other labels make up the rest, and 557,096 games (5.9%) carry no source label. Several of these collections are themselves compiled from public archives. Counts are rows in our games table, measured on 12 October 2026.

06 · What we cleaned

Fourteen ways a game goes wrong. One real game for each.

None of these are hypothetical. Each one is a game you can find in the source files today. They are ordered from the most serious, a game given to the wrong player, to the least, a date that is only approximate.

  1. 01 · The wrong playerDing Liren – Kramnik, Alekhine Memorial 2013
    In the source.
    Ding Liren is entered as “Dessaules, Peter”, with the FIDE ID of a different player. 1,665 games in the base carry that name and that ID.
    What we did.
    We do not trust the name or the ID written in the file. We check who FIDE says played that round, and give the game to that player. Ding gets back the 804 games FIDE confirms. Most of the others stay without a player until there is proof: we do not guess.

    338,948games where the file named the wrong FIDE player

    14,386FIDE players affected

  2. 02 · The namesakeTal – Botvinnik, World Championship 1960
    In the source.
    In the file, Botvinnik carries the FIDE ID of another Mikhail Botvinnik, an Israeli player born in 1983. 1,595 games carry that ID; 1,424 of them no longer go to him.
    What we did.
    We spotted the error. That ID is no longer enough to give a game to this player: only FIDE pairings can.

    499,254games no longer given on the file’s ID alone

    17,676players whose ID no longer attracts games on its own

  3. 03 · The wrong boardLooi Xin Hao – Larkin, Isle of Wight 2025, round 1
    In the source.
    A live broadcast put the moves of one board under the names of another. The copy reads “Looi – Greet, 1-0”: wrong opponent, wrong result. FIDE pairings say Looi played Larkin and lost, 0-1. Greet was playing Freeland.
    What we did.
    The wrong copy is set aside, only when FIDE pairings prove it wrong. When they cannot tell which copy is right, both stay, and the game page says “Attribution uncertain”.

    38wrong copies set aside · 461 games kept despite a conflict

    905FIDE players affected

  4. 04 · The duplicateKramnik – Svidler, Linares 1998
    Both copies end here.
    In the source.
    Two copies: “Linares ESP” starting 1.Nf3 e6 2.c4 Nf6, and “Linares” starting 1.Nf3 Nf6 2.c4 e6. Same game, transposed. Counted twice, it would count twice in the opening statistics and in both players’ scores.
    What we did.
    One copy is kept, the other set aside. Copies do not always look alike. A live broadcast is often dated the day it was created, not the day of the round. Another stops after 11 moves while the full 40-move game sits next to it (Reykjavik Open 2024, round 6). We merge those only when FIDE confirms the same event, round, players and result: 1,079 copies dated another day, 9,584 cut-off broadcasts, 1,702 copies with a wrong date and 2,534 misdated copies with an empty side (next card), each set aside behind the copy FIDE confirms.

    79,258copies set aside

    28,606FIDE players affected

  5. 05 · The misdated copy with an empty sideYu Shi – Gao Muziyan, 4th Binhai Cup 2024, round 7
    In the source.
    Two copies of the same 84 half-moves. One is dated 22 August 2024, the day FIDE has this pairing, and both players are identified. The other is a live broadcast dated 9 October 2025, a year later, with neither player identified. The identified copy was not recognised as the same game, so the game stood twice.
    What we did.
    The misdated copy is set aside behind the one FIDE confirms, only when the moves, the result and the players’ names are identical, every empty side is identified on the kept copy, and FIDE has no other meeting of the pair near the set-aside date. No identified player loses a game.

    2,534misdated copies set aside, included in the total above · 640 of them were in the masters tree

    2,161FIDE players affected

  6. 06 · The wrong tournamentKothari – Adams, Kingston Invitational 2026, round 9
    In the source.
    A live broadcast dated 4 September 2026, the day before the Fareham Congress. The same two players met there, in round 5, and White won. This game is 0-1. FIDE pairings have the same players, the same colours and the same result in round 9 of the Kingston Invitational on 21 August, the tournament of 73 other games of the same broadcast.
    What we did.
    The game is no longer linked to Fareham. When a game falls outside the dates of its FIDE tournament, no round of that tournament confirms its colours and result, and another tournament does and holds more games of the same broadcast, we unlink it and leave it without a tournament rather than guess. A game whose only disagreement is its result stays in its tournament.

    46games unlinked from the wrong FIDE tournament

    70FIDE players affected

  7. 07 · The result the board contradictsMaghsoodloo – Gabuzyan, Karen Asrian Memorial 2025
    White to move. No legal move, no check.
    In the source.
    Recorded 1-0, in the broadcast and on the official crosstable. The game ends in stalemate.
    What we did.
    We do not know why, so we do not guess: the game is marked as a contradicted result and kept off every screen.

    771contradicted results

    about 1,050FIDE players affected

  8. 08 · Two results, no proofCarlsen – Abdusattorov, Norway Chess 2023, armageddon
    In the source.
    Two copies of the same 184 half-moves. One says ½-½, the other 0-1. In armageddon a draw is a win for Black, so 0-1 is probably right. Probably is not proof.
    What we did.
    Nothing proves which result is right, so we keep both copies and record the disagreement. Nothing is removed. The result stays on screen, with a discreet “Result uncertain” note next to it. When a longer copy of a stored game arrives with another result, we do not graft its extra moves onto the stored game: they would contradict its result.

    22games in 11 unresolved conflicts

    15FIDE players affected

  9. 09 · The forfeitGiri – Dubov, Tata Steel 2022, round 7
    The whole game.
    In the source.
    “1.d4 1-0”. Dubov did not play: a forfeit, stored as a game.
    What we did.
    A forfeit is real: it happened, and it counts in the tournament standings. But no game was played. So it counts in no opening statistic and in no player statistic. It should still appear in both players’ records, marked “won by forfeit”. Today it is hidden; showing it that way is in progress.

    4,943forfeits

    about 5,500FIDE players affected

  10. 10 · The enginesStockfish – Reckless, TCEC Season 29 Superfinal, 2026
    In the source.
    Games between two programs, stored in the same files as human games, as if two players had played them.
    What we did.
    Marked as engine games, out of every human statistic.

    2,500engine games

    0players: no human was involved

  11. 11 · The simulKasparov – Movsesian, Eurotel Trophy Simul 2001
    In the source.
    One player against many boards at once, stored as a tournament game. Kasparov alone has 484 of them.
    What we did.
    Marked as a simul and kept out of the player records.

    4,724simul games

    587FIDE players affected

  12. 12 · The online gameCarlsen – Sarana, Airthings Masters 2023
    In the source.
    Played online, stored as over-the-board.
    What we did.
    Moved to online games: kept, but counted apart from the over-the-board base.

    14,094online games

    about 1,160FIDE players affected

  13. 13 · The blindfold gameCarlsen – Anand, Amber Blindfold 2011
    In the source.
    Played blindfold, stored as a normal classical game.
    What we did.
    Marked as blindfold and taken out of the master opening tree.

    2,282blindfold games

    117FIDE players affected

  14. 14 · The fake dateKasparov – Karpov, game 24, Seville 1987
    In the source.
    Dated 1 January 1987. The match was played from October to December. A file that does not know the day often writes the first day of the year, or of the month. It looks precise. It is not.
    What we did.
    The date is brought back to what is actually known: here, 1987. Kasparov alone had 554 games with a fake 1 January.

    797,426fake dates (661,386 on 1 January, 135,500 on the first of a month, 540 placeholder or future dates)

    14,239FIDE players affected

And 1,342 games show a player facing themselves, the trace of a name attached to both sides. They are kept out too.

Our own rules get the same treatment. When two copies of one game named different players for the same side, FIDE now decides: in the first pass of 9 October, 1,390 sides went to the player FIDE confirms and 14 were left without a player (a second pass that day moved 126 more and withdrew 12). Where we had extended a proven player to the rest of a tournament under a different surname, we now ask for a game FIDE confirms in that event: 17,619 sides were withdrawn. Before 2001, when the rating list of the month shows the rating in a game belongs to someone else, the game is taken back: 570 sides, 532 of them games that had gone to Aloyzas Kveinys’s record.

When FIDE shows a player had a single game on a given day, we used it to name their opponent. Since the second pass of 11 October, we no longer do in two cases. The first is when our source gives that player several opponents that day: at most one of those games can really be from that day. The second is when the two sides of a game point at each other and disagree. Carlsen – Caruana was played on 30 December 2025, game 4 of the World Blitz semi-final, but the broadcast dates it 18 December, a day it gives Caruana 19 opponents. FIDE knows one, Gukesh, in the Global Chess League, so Carlsen’s side had gone to Gukesh. Vidit – Dominguez Perez, Global Chess League 2026, is dated 10 September by the broadcast and 11 September by FIDE. On 10 September, FIDE paired Vidit with Mamedyarov and Dominguez Perez with Aravindh: each side had been given the other’s opponent of that day. 2,277 sides lost that deduction: 775 kept their player on other proof, 1,003 went to another player, Carlsen, Vidit and Dominguez Perez among them, and 499 are left without one.

The impact

About 70,000 of the roughly 240,000 FIDE players with proven games have a record these rules corrected or completed (count taken before the thirteenth rule, so a floor). That is more than one in four.

“Corrected” means a wrong game was taken out of the record, or a game of theirs was given back, or a date fixed: about 60,000 players, roughly one in four. “Completed” adds the players who gained games the source left without a FIDE ID. A rule that touches 22 games out of nine million looks anecdotal. Together, the fourteen touch more than one player in four.

Apply these fourteen rules and you get a baseline: 9.36 million unique games. 7.2 million of them have at least one proven player, enough to scout an opponent. About 4.2 million were perfect in our quality check of 8 October.

07 · What keeps it clean

Cleaning once is easy. The next import brings the same problems back.

Every import is checked. New games arrive in batches that we import and check ourselves. After each import we run the same check, and it also runs every Monday: one counter per family of defect, from fake dates and players facing themselves to engines, forfeits, simuls and results the final position contradicts. Each counter has a baseline or a fixed threshold, so a jump shows up at the next check.

A name is never enough. A game goes to a player’s record only when FIDE data backs it up: the rating list, the pairings, the tournament. A matching name alone proves nothing.

Only proven games are put forward. The Top and Recent games of the opening explorer show a game only when FIDE data proves both players. After 1.Nf3 Nf6 2.c4 g6 3.g3 Bg7 4.Bg2 O-O 5.O-O d6 6.d4, three of the ten Top games used to show “Dessaules, Peter”, a name the file also gives Ding Liren, against Caruana, Mamedyarov and Grischuk. Every game still counts in the move statistics; 600,143 of the 804,804 master games played over the board can be put forward.

Every odd game has an explanation. For any game in the base, one command tells which source it came from, what was changed and why. When a reader reports a strange game, that is where we start.

Bulk corrections are rehearsed first. Our practice is to run every bulk correction of game data dry first, read-only on the live database, and to read its count before writing. In the code, only duplicate marking must be handed that exact count: if it finds a different number, it writes nothing. The other corrections (engine games, reclassification, self-play marking, and the scripts that rebuild historic months, women’s timelines and round dates) are given the dry-run count as a ceiling: fewer rows go through, more are refused. The attribution pass and the import are not under this rule yet: they only take the lock below.

Corrections are fenced. On production, duplicate marking, engine-game marking, reclassification, self-play marking and the three scripts above must name their exact target, carry an explicit go-ahead, and stay under a ceiling of rows actually written. The transaction that crosses the ceiling is rolled back; transactions already committed stay. The attribution pass has no such ceiling yet.

One write at a time. Imports, duplicate marking, attribution passes and most other bulk writes on the games table take the same lock. While one of them writes, a second one refuses to start; it is relaunched by hand once the first is done.

The count check, and the lock extended to attribution passes, come from a mistake. On 9 October, an attribution pass started between the dry run and the real run of a duplicate check. The dry run had announced 2 groups of duplicates; the real run, which now saw new FIDE IDs, set aside 1,045 copies. Same rule, and no wrong data came out of it, but nothing had stopped two writes from overlapping. Now something does.

08 · What is still wrong

A clean database is not a perfect one. Here is the gap.

Measured against the perfect game, here is where the 9,360,184 OTB games stand.

  • 4,210,94045.0%perfect games.
  • 36,5910.4%both players proven and matched to the FIDE pairing, but the source only gives the month or the year.
  • 1,074,21011.5%both players proven, but no FIDE pairing to match: most of them (994,240) not matched to a FIDE event, or played before pairings were published.
  • 1,833,04819.6%only one player proven. The other is a name we cannot tie to a FIDE ID with enough certainty.
  • 2,205,39523.6%no player proven. 1,221,841 of them were played before 2001, before FIDE’s own rating lists and long before its pairings (September 2005): a name with its rating is all there is to go on.

483 games are also kept on purpose despite a conflict: 22 with two results and no proof either way, 436 on boards FIDE data cannot settle, and 25 copies FIDE shows to be wrong, kept because no other copy of the game is confirmed. And 3,565 games could belong to two FIDE events with nothing to choose between them: we link them to neither, and keep the list.

What we are working on now:

  • FIDE rating lists before 1990, for the oldest games.
  • Showing forfeits in both players’ records, out of every statistic.

Each one will move the numbers on this page. We will measure them again and publish them when they do.

09 · The number

From 12.3 million records, 9.36 million unique over-the-board games remain. 804,000 of them are between masters. 240,944 FIDE players have proven games. Since 2010, four games in five are perfect.

Even a copy of this base would have moved by the next import. What we keep is the process, and that is what this page is for.

Measured on 10 October 2026. Spotted a wrong game? Report it