- Blind mode tutorial
lichess.org
Donate

Suspicious Chess App Idea?

ChessSoftware Development
Suspicious Games, Engines, and Paranoia

Over the past few years, chess has experienced a remarkable resurgence. The release of The Queen’s Gambit, combined with the global disruption of COVID, brought millions of new players into the game. Online platforms grew rapidly, streaming audiences exploded, and chess quietly re-entered popular culture in a way few would have predicted a decade ago.

But alongside this growth, something else has emerged.

With more games being played online than ever before, and with competition increasingly shifting to digital environments, a low-level paranoia has crept into the chess world. Accusations of cheating surface regularly. Players scrutinise move accuracy graphs, engine correlations, and sudden rating jumps. Conversations that once focused on ideas and improvement are increasingly replaced with a quieter question in the background: Was this game clean?

I’ve been doing a lot of work recently around chess position analysis, game evaluation, and modelling decision-making patterns. That work led me to an idea I want to explore more openly: building a suspicious game detector. Not as an anti-cheat system, and not as a tool to accuse or label players — but as a way to provide context after a difficult or confusing game.

The goal would be simple. You analyse a game and see whether it contains patterns that might be considered unusual. Importantly, “suspicious” would not mean “cheating”. It would mean that something about the game stands out statistically or stylistically. In many cases, the result might even be reassuring: confirmation that a painful loss was well within the bounds of normal human play. If nothing else, the tool could help alleviate the frustration or doubt that sometimes lingers after an unexpectedly strong performance from an opponent.

Before writing a single line of code, I wanted to put these thoughts on paper. This blog is not a proposal for a finished system, nor a claim that such detection can be definitive. It’s an attempt to think out loud — to explore what cheating actually means in modern chess, and to get feedback, ideas, and criticism before anything concrete is built.

What Is Cheating in Chess?

To talk meaningfully about suspicious games, we first need to acknowledge how fundamentally the chess landscape has changed.

Since the 1990s, computer chess engines have improved at a staggering pace. What began as tactical calculators capable of beating strong amateurs evolved into systems that could challenge world champions. Today, that contest is long over. Modern engines are not just stronger than humans — they are categorically stronger. Even relatively shallow engines, running on consumer hardware, consistently outperform the best human players in almost any position.

This has important consequences.

If you take a random middlegame position and ask an engine for the best move, that move is almost always stronger than what even elite grandmasters would find over the board. The gap is no longer subtle or theoretical; it is decisive. The chess engine on a mobile phone, running with modest depth and limited resources, would defeat the vast majority of grandmasters in a match. Strength is no longer rare, specialised, or expensive.

At the same time, access to this strength has become trivial.

Websites, browser tabs, mobile apps, and even lightweight browser extensions can analyse a position instantly. There is no need for specialised knowledge, powerful hardware, or deep preparation. Anyone with an internet connection can consult an engine mid-game, in real time, with almost no friction. From a purely technical standpoint, cheating in online chess has never been easier.

This combination — engines that vastly exceed human ability, and tools that make those engines universally accessible — is the foundation of today’s unease. The problem is not simply that cheating exists. It’s that the line between human play, assisted play, and engine-driven play has become increasingly difficult to reason about, especially when judged after the fact.

That ambiguity is where my interest lies.

If we want to talk about suspicious games responsibly, we need to be precise about what we mean, cautious about what we claim, and honest about the limits of any automated judgement.

My Design: Signals, Not Verdicts

Before talking about implementation details or thresholds, I want to sketch out the signals I believe could reasonably contribute to identifying a suspicious game. The emphasis here is deliberate. This is not about proving cheating or delivering verdicts. It’s about combining multiple perspectives on a game and asking a more modest question:

Does this game fall within the realm of what we would reasonably expect from a human player?

My working assumption is that no single metric is meaningful on its own. Strong play exists. Preparation exists. Lucky streaks exist. What becomes interesting is when several independent signals begin to align. With that in mind, the design I have in mind relies on five core factors.

1) Engine Evaluation and Principal Variation Alignment

The first component is the most obvious: running a strong engine over the entire game.

By analysing each position with Stockfish, it becomes possible to obtain an objective evaluation of the game state and to extract the principal variation — the engine’s preferred line of play. This allows us to measure not just how strong the moves were, but how often the player followed the engine’s top choices, particularly in complex or unclear positions.

On its own, this tells us very little. Strong players find strong moves. Endgames can be technical but straightforward. However, persistent alignment with top engine choices across difficult middlegame decisions is still a signal worth observing — not as evidence, but as one dimension of behaviour.

2) Opening Theory and Book Coverage

Early-game accuracy is especially deceptive.

A player may play “perfectly” for the first 15 or 20 moves while doing nothing more than following known opening theory, a personal repertoire, or a memorised Chessable course. Without contextualising those moves, engine agreement in the opening can easily be misinterpreted.

This is where opening databases matter. If a sequence of moves falls well within established theory, high accuracy is expected and unremarkable. The more interesting transitions occur after theory ends — when preparation gives way to independent decision-making.

Separating book play from original play is essential if we want to avoid flagging preparation as suspicious behaviour.

3) Human Probability via Maia

This is where the analysis becomes more nuanced.

Maia is trained on human games and designed not to find the best move, but the most likely move a human of a given strength would play in a given position. That distinction matters. Humans do not play like engines, even when they play well. They have preferences, biases, and patterns shaped by experience and familiarity.

By analysing a game through this lens, we can ask a different question: were these moves plausible human choices at this rating level? A move can be objectively strong yet statistically unlikely for a human to find consistently. Repeated selection of low-probability human moves, especially in complex positions, becomes a meaningful signal — not proof, but context.

4) Time Usage Patterns

Time usage is often overlooked, yet it can be revealing.

Consulting an engine takes time. Entering a position, waiting for analysis, and then playing the move introduces a rhythm that differs from natural human thinking. Sudden delays before critical moments, followed by instant replies in quiet positions, can create patterns that feel unnatural when viewed across an entire game.

Of course, time usage varies enormously between players and time controls, and nerves alone can distort it. But when combined with other signals, timing irregularities can help distinguish organic decision-making from external assistance.

5) Player History and Style Consistency

No game exists in isolation.

Players have styles, strengths, and weaknesses. Some understand specific openings deeply but struggle elsewhere. Some thrive in tactical chaos but falter in quiet manoeuvring games. Looking at a player’s historical games allows us to build a baseline for what normal looks like for that individual.

If a player suddenly demonstrates engine-level precision in areas they historically struggle with, or displays a dramatic and unexplained shift in decision-making quality, that context matters. Equally, consistency can be reassuring — strong play in familiar structures may be entirely expected.

Combining the Signals

Individually, each of these factors is noisy and unreliable. Together, they become more interesting.

My hope is that by combining engine alignment, opening context, human probability modelling, time usage, and historical behaviour, it becomes possible to produce a probabilistic assessment rather than a binary judgement. Not “cheated” or “clean”, but something closer to:

This game falls well within normal expectations
or
This game exhibits patterns that are unusual compared to typical human play

I have no idea what the results of this will be.

It may turn out that the vast majority of games sit comfortably within expected ranges. It may reveal that truly suspicious patterns are rare. Or it may expose edge cases that are far harder to interpret than expected. That uncertainty is precisely why I find the idea compelling.

If I’m being honest, I don’t believe there are as many cheaters as paranoia sometimes suggests. But that paranoia itself is damaging. It erodes trust, enjoyment, and passion for the game. My hope is that when you lose a crushing game — the kind that leaves you frustrated and doubting — a tool like this might offer reassurance.

That it might tell you the opponent played within the realm of probability, and that the loss, however painful, was likely just chess.

I assume this will be the case for many games. I might be wrong. But I’m curious enough to find out.

So I plan to build this — partly as a learning exercise, partly for fun, and partly because I think the conversation around cheating in chess could benefit from more nuance and less certainty.

I hope you enjoyed reading this blog. I just wanted to put my thoughts onto paper and see what people think. Am I being silly? Naive? Or has something like this already been tried before?

Kind regards,
Toan (@HollowLeaf)