Logo
Chess Analyzer Pro
ReleasesDocsDownload

Documentation

Getting StartedUsage GuideConfigurationArchitectureFiles & DataHow We Calculate AnalysisChangelogFor DevelopersTroubleshootingAPI ReferenceUI Components

Chess Analyzer Pro

Free offline chess analysis software powered by Stockfish.

Project

  • GitHub Repository
  • Download
  • Documentation
  • Open Source Credits
  • Report Feedback/Bug

Guides & Alts

  • Free Software
  • Game Review Alternative
  • Offline Stockfish
  • Best Analysis Tools
  • How to Analyze PGN
  • Chess.com vs Pro
  • Lichess vs Pro

Resources

  • Stockfish Engine
  • Beekeeper Studio
  • My Lichess Profile
  • My Chess.com Profile

Developer

  • Portfolio
  • GitHub Profile
  • LinkedIn
  • Contact Me
Released under the MIT License. Open Source Project.

Files & Data Structure

Chess Analyzer Pro manages several auto-generated files to maintain your settings and data locally.


Auto-Generated Files

The application automatically creates and manages configurations, cache, and logs inside standard platform-specific directories to keep your application folders clean:

  • macOS: ~/Library/Application Support/ChessAnalyzerPro
  • Windows: %APPDATA%/ChessAnalyzerPro
  • Linux: ~/.local/share/chessanalyzerpro
File NameLocationDescription
config.jsonUser Data DirUser Settings. JSON file storing settings, theme configurations, and LLM active profiles.
analysis_cache.dbUser Data DirLocal Database. A SQLite database storing the engine analysis cache (analysis table) and game history (games table).
chess_analyzer.logUser Data DirDebug Logs. Captures runtime events and system warnings.
games.csvUser SelectedExported Data. Created only if you choose to export your history (saved to a location of your choice).

Database Schema (analysis_cache.db)

The SQLite database contains two main tables:

analysis - Engine Analysis Cache

Stores engine evaluations of chess positions to avoid duplicate calculations.

ColumnTypeDescription
idTEXTSHA-256 hash of FEN + multi_pv configuration (primary key)
fenTEXTChess position in FEN format
engine_paramsTEXTJSON string of engine configurations (depth, multi_pv, threads)
depthINTEGEREngine search depth at which position was evaluated
resultTEXTSerialized JSON of engine outputs (top principal variations, CP, mates)

games - Game History

Preserves your complete history of analyzed chess games.

ColumnTypeDescription
idTEXTUnique game identifier (primary key)
whiteTEXTWhite player name
blackTEXTBlack player name
resultTEXTGame outcome (e.g. 1-0, 0-1, 1/2-1/2)
dateTEXTDate of the game
eventTEXTEvent/Tournament name
pgnTEXTFull PGN text including move list and analysis comments
summary_jsonTEXTSerialized JSON containing players' accuracy, blunders, and other stats
timestampREALEpoch timestamp representing when the game was saved
white_eloTEXTRating of the White player
black_eloTEXTRating of the Black player
time_controlTEXTTime control of the match
ecoTEXTECO code for the opening
terminationTEXTTermination reason (e.g., checkmate, resignation, time out)
openingTEXTName of the opening variation played
starting_fenTEXTStarting position FEN (if non-standard, like Chess960)
sourceTEXTOrigin of import (chesscom, lichess, file)

Inspecting Your Data

Analysis Cache & Game History (analysis_cache.db)

This SQLite database ensures you never have to wait for the same analysis twice and preserves your complete game library.

[!TIP] Recommended Tool: Use Beekeeper Studio (Community Edition) or DB Browser for SQLite to open and inspect the database.

Configuration (config.json)

You can manually edit this file if needed, but it is recommended to use the in-app Settings menu to avoid syntax errors.

Example config.json:

{
    "engine_path": "stockfish",
    "theme": "dark",
    "sound_enabled": true,
    "lichess_token": "lip_...",
    "lichess_username": "DrNykterstein",
    "chesscom_username": "MagnusCarlsen",
    "accent_color": "#4CAF50",
    "board_theme": "default",
    "piece_theme": "cburnett",
    "analysis_depth": 18,
    "api_games_limit": 20,
    "multi_pv": 1,
    "live_analysis_time": 2.0,
    "llm_profiles": [
        {
            "name": "Groq",
            "provider": "groq",
            "api_key": "gsk_...",
            "model": "llama-3.3-70b-versatile",
            "base_url": ""
        }
    ],
    "llm_active_profile": "Groq"
}

Debug Logs (chess_analyzer.log)

Check this file for error messages and application events:

# View the last 50 lines
tail -50 chess_analyzer.log

# Windows PowerShell
Get-Content chess_analyzer.log -Tail 50

Environment Variables (.env)

For development, you can use a .env file to store API keys instead of config.json:

GROQ_KEY=your_groq_api_key
LICHESS_TOKEN=your_lichess_token

[!NOTE] The .env file is only used during development. The packaged .exe reads from config.json.


Data Backup & Restore

Export to CSV

  1. Go to History tab.
  2. Click the Export button (or use menu).
  3. Choose a save location for games.csv.
  4. All game metadata and summaries are exported.

Import from CSV

  1. Go to History tab.
  2. Click the Import button.
  3. Select your previously exported games.csv.
  4. Games are restored to your history (duplicates are skipped).

Data Privacy

  • 100% Local: All files listed above stay on your machine.
  • No Cloud Storage: We do not upload your games, keys, or logs to any server.
  • No Telemetry: The application does not collect or transmit any usage data.
  • Your Keys Are Safe: API keys are stored locally in config.json and are never shared.

The only network requests made by the application are:

  1. Fetching games from Chess.com/Lichess APIs (when you request it).
  2. Calling the Groq API for AI summaries (when you request it).