Small source.
Serious chess.
Mite is a lightweight chess engine written in C, built around a simple goal: deliver a playable, UCI-compatible engine targeting ~2000-Elo-class strength with a remarkably compact codebase of under 20 KB source code and a ~115 KB standalone binary.
An engine built with constraints in mind.
Mite demonstrates that high playing strength does not require hundreds of thousands of lines of code. By combining efficient algorithmic density with strict memory constraints, it provides a tournament-ready engine in a single C source file.
Developed by Viraj Ravani, Mite was conceived as an engineering study in minimalism: how much chess intelligence can be packed into a single C file without relying on external dependencies or compromising search depth?
The engine operates strictly through the Universal Chess Interface (UCI) standard
protocol. Rather than embedding a proprietary user interface, Mite connects directly over standard input
and output (stdin / stdout) to established chess GUIs like Arena, Cutechess, and
BanksiaGUI, as well as automated tournament managers.
“Every heuristic in Mite is evaluated for its algorithmic density: maximum tactical value per byte of compiled code.”
The complete engine source code is contained in src/Mite.c, measuring approximately
19.7 KB across ~409 lines. When compiled with optimization, it produces a standalone
Windows binary of approximately 115 KB requiring zero runtime DLLs, and a ~60 KB
WebAssembly module for instant in-browser play.
Engineered for density and speed.
Every component in Mite is verified against the actual source implementation in src/Mite.c. No
fabricated capabilities or unverified heuristics.
Compact Single-File C Implementation
The entire engine is implemented in a monolithic C file under 20 KB. Move generation, 0x88 board state, evaluation tables, iterative deepening, and UCI communication run without external dependencies or auxiliary data files.
// 0x88 board representation & move generator
#define IS_ON_BOARD(sq) (!((sq) & 0x88))
int search(int alpha, int beta, int depth) {
if (depth <= 0) return quiesce(alpha, beta);
// PVS, Transposition Table probe, NMP, LMR
...
}
Standard UCI Protocol Compliance
Full compliance with the Universal Chess Interface standard enables instant integration into Arena, Cutechess, BanksiaGUI, and Fritz via standard I/O streams.
stdin / stdout communicationAdvanced Search & Pruning
Negamax search with Principal Variation Search (PVS), iterative deepening to 24 plies, aspiration windows (±65), Null-Move Pruning, and SEE-guided quiescence.
PVS · NMP · LMR · QuiescenceHandcrafted Static Evaluation
Carefully tuned evaluation combining packed piece-square tables, pawn structure, rook open files, king safety penalties, knight outposts, and endgame king-opposition heuristics.
Material + Piece-Square TablesBrowser WebAssembly Build
Compiled to a lightweight ~60 KB WASM module running in a dedicated Web Worker on Hugging Face Spaces, sustaining 800,000 to 1,500,000 nodes per second.
mite.wasm (~60 KB)Zero-Dependency Distribution
Precompiled standalone 64-bit Windows binary (~115 KB) with zero external runtime DLL requirements. Drop it straight into any chess GUI and begin play immediately.
bin/Mite.exe (~115 KB)Audited Match Records & Docs
Includes all 2,600 raw tournament PGN match records, an exhaustive 2,200-line architectural guide, Makefile scripts, and reproducible benchmark testing pipelines.
2,600 Verified PGN RecordsPerformance, measured carefully.
Engine strength depends on opponents, hardware, time controls, and test conditions. Benchmark results are meaningful only when their methodology is clear.
Match Score Distribution
Aggregate game outcomes (Wins, Draws, Losses) across opponents
Performance Across Time Controls
Score percentage scaling as deliberation time increases (1s to 60s)
| Opponent & Version | Time Control | Games | Wins (+) | Draws (=) | Losses (−) | Score % | White / Black Score | Archive |
|---|
Score % = (Wins + 0.5 × Draws) / Games × 100
Get Mite.
Choose how you want to experience Mite: run the standalone Windows binary, inspect and compile the C source code, or play immediately in your browser.
Windows Executable
Precompiled 64-bit static executable. Completely self-contained with zero runtime dependencies. Ready to install into Arena, Cutechess, or BanksiaGUI.
C Source Repository
Complete ANSI C99 source code in a single file under 20 KB. Fully readable, inspectable, and portable across GCC, Clang, and MSVC compilers.
Play in the Browser
Experience Mite live with zero local installation on Hugging Face Spaces. Powered by Mite compiled directly to WebAssembly in a dedicated Web Worker.
How to play and test Mite.
Mite is a pure UCI engine that communicates over standard input and output. It does not provide an internal GUI, but integrates seamlessly into all major chess interfaces.
Play Instantly in Your Browser
Configuring Mite in Arena Chess GUI
Engines →
Install New Engine...
Mite.exe. When prompted for engine protocol, select
UCI.
Configuring Mite in Cutechess
Tools → Settings →
Engines.
bin/Mite.exe.
Automated Match Testing via Cutechess-CLI
Run automated tournament matches against reference engines with reproducible PGN output:
cutechess-cli -engine cmd=bin/Mite.exe name=Mite proto=uci \
-engine cmd=opponent.exe proto=uci \
-each tc=10+0.1 -rounds 200 -repeat -recover \
-pgnout match.pgn
Direct UCI Terminal Interface
Running Mite.exe in a terminal opens standard UCI listener mode. You can inspect responses
directly:
# Launch engine
bin/Mite.exe
# Handshake & probe
uci
isready
# Setup position and calculate
position startpos moves e2e4 e7e5
go depth 8
Building from Source
Mite compiles with any standard C compiler without external dependencies:
# Using Makefile (MinGW / POSIX)
mingw32-make
# GCC (MinGW / Linux)
gcc -O3 -fomit-frame-pointer src/Mite.c -o bin/Mite.exe
# Clang / LLVM
clang -O3 -flto src/Mite.c -o bin/Mite.exe
# MSVC (Visual C++)
cl /O2 /Oi /Ot /GS- src\Mite.c /Fe:bin\Mite.exe
Built by an independent developer.
Mite is an independent chess-engine project exploring what can be achieved with a compact C implementation.
Viraj Ravani
Creator and DeveloperViraj is a developer specializing in systems programming, algorithmic efficiency, and interactive web tools. Mite represents an ongoing effort to push the boundaries of algorithmic density in chess computing.