Chess Analysis and Review Application
User Manual
Version 2.5.3
CARA (Chess Analysis and Review Application) is a full-featured desktop application designed for analyzing and reviewing chess games. Unlike chess playing applications or puzzle solvers, CARA focuses exclusively on post-game analysis and review, helping you understand your games, identify mistakes, recognize patterns, and improve your chess understanding.
The development of CARA was motivated by the author's underwhelming experience with existing (and sometimes quite expensive) chess analysis tools, which often fell short in terms of usability, practical workflow integration, and the ability to deliver meaningful, actionable insights. Many applications overwhelmed users with unnecessary complexity and provided superficial analysis that didn't translate into genuine improvement. CARA was created to bridge this gap, offering an intuitive interface that makes deep game analysis accessible in an efficient manner while providing the detailed insights needed to understand not just what moves were played, but why they were played and how to improve.
CARA was built in large part by an AI model under the author's direction. The author took special care to ensure the AI adhered to the established architectural guidelines and coding conventions throughout the development process, while proposing the features, user stories, and UX design. This project served as an experiment to explore the feasibility of building a full-fledged, complex desktop application with Python using AI code completion, testing whether modern AI tools can produce polished, fully-featured software when guided by clear architectural principles and consistent oversight.
CARA is built with PyQt6 and follows PyQt's Model/View architecture with additional separation of business logic using Controllers and signal observation patterns, ensuring a responsive user interface and clean separation of concerns. Views observe models through Qt's signal/slot mechanism, automatically updating when model data changes, while Controllers orchestrate business logic and coordinate between services and models. Following a strict coding convention, all UI styling, including fonts, colors, sizes, and dimensions, is defined in a centralized configuration file with no hardcoded values in the view components. This allows for complete customization of the application's appearance without modifying code. The application supports multiple chess engines via the UCI (Universal Chess Interface) protocol, allowing you to use engines like Stockfish, Shredder, Lc0, Komodo, Berserk, or any other UCI-compatible engine.
Whether you're analyzing your own games, studying master games, or reviewing games from online platforms like Lichess or Chess.com, CARA provides the tools you need to gain deep insights into chess positions, moves, and patterns.
CARA offers an extensive set of features designed to support thorough chess game analysis and review. Here are the main capabilities:
These features work together to provide a complete analysis environment, from importing and organizing games to deep positional understanding and statistical insights.
This manual provides comprehensive documentation for CARA, covering everything from installation and basic usage to advanced configuration and troubleshooting. The manual is organized into seven main sections:
Navigation: Use the Table of Contents at the top to quickly jump to any section. All section headings are clickable links that navigate directly to that content. Cross-references throughout the manual link to related sections for easy navigation.
CARA relies on the following open-source libraries:
The author would like to express sincere appreciation to the developers and maintainers of these open-source projects. Their dedication and excellent work have made this application possible, and their contributions to the open-source community are invaluable.
The default chess pieces CARA ships with are the classic SVG set created by User:Cburnett and hosted on Wikimedia Commons. These pieces are distributed under the dual licenses Creative Commons Attribution-ShareAlike 3.0 and GNU Free Documentation License, which permit reuse and modification as long as attribution is provided and derivative works remain under the same license terms. Full details and download links for every piece in the set are available in the SVG chess pieces collection on Wikimedia Commons. We extend our thanks to Cburnett and the Wikimedia Commons community for maintaining these high-quality, freely reusable chess assets.
CARA uses two types of opening resources for identifying book moves and classifying chess openings:
ECO Database: The application includes an ECO (Encyclopaedia of Chess Openings) database based on the eco.json project by hayatbiralem, licensed under the MIT License. This extensive database contains over 12,000 known opening variations and is a collation of multiple chess opening sources including lichess, SCID database, Wikipedia, ChessTempo, and other public chess databases. The original eco.json data was compiled by Ömür Yanıkoğlu, with credit to Shane Hudson for the original SCID opening data. The database files (eco_base.json and eco_interpolated.json) were merged from the original source files (ecoA.json, ecoB.json, ecoC.json, ecoD.json, ecoE.json) that were organized by ECO code starting letter, simplifying lookup operations while maintaining complete coverage of chess opening theory.
Polyglot Opening Books: CARA supports Polyglot-format opening books, a binary format originally developed by Fabien Letouzey. The application includes a collection of Polyglot opening books organized by opening type (all openings, closed, flank, Indian, open, semi-closed, and semi-open). These books were compiled from publicly available sources and converted to the Polyglot format. For more information about the Polyglot format and tools, see the Polyglot repository maintained by sshivaji (a fork of Fabien Letouzey's original work).
Both resources work together to provide complete opening identification: the ECO database offers position-based classification with standardized codes and names, while the Polyglot books provide move-based detection of book moves during game analysis.
The author would like to express sincere appreciation to the creators and maintainers of these opening resources.
CARA (Chess Analysis and Review Application) is released under the GNU General Public License version 3 (GPL-3.0).
The GPL-3.0 license grants you the following freedoms:
When distributing CARA (whether modified or unmodified), you must:
GPL-3.0 was chosen for CARA because:
For the complete license text, see the LICENSE file in the CARA distribution or visit gnu.org/licenses/gpl-3.0.html.
macOS users: Due to macOS security settings, you may need to allow the app to run. If you see a security warning when trying to open the app, follow these steps:
Manual Installation: The following sections describe how to manually install Python and CARA dependencies, if you don't want to use the pre-built application bundles.
Before installing CARA, ensure your system meets the following requirements:
The application has been tested on Windows 11 and macOS Tahoe 26.2. In general, CARA should also run on Linux, but it has not been tested on Linux and may require some minor adjustments.
Python 3.8 or higher is required. CARA uses PyQt6, which requires Python 3.8+. See section 3.2 for installation instructions.
A minimum screen resolution of 1280×1024 pixels is recommended. Some dialogs require at least 800 pixels in width and 900 pixels in height to display properly. Lower resolutions may cause dialogs to be cut off or difficult to use.
No specific hardware requirements beyond what is needed to run Python and the operating system. For optimal performance when analyzing games with chess engines, a modern multi-core processor is recommended.
CARA requires Python 3.8 or higher. If you don't have Python installed, you can install it using the methods below:
Method 1: Using Windows Package Manager (Recommended)
Open PowerShell or Windows Terminal and run:
winget install Python.Python.3This automatically installs Python and adds it to your PATH.
Method 2: Manual Download
Method 1: Using Homebrew (Recommended)
If you have Homebrew installed, open Terminal and run:
brew install python3Method 2: Manual Download
After installation, open a terminal (PowerShell/Command Prompt on Windows, Terminal on macOS) and run:
python --versionThis should display the Python version number (e.g., "Python 3.11.5").
Note: On macOS, you may need to use python3 instead of python to access Python 3.
Windows PATH Troubleshooting: If you see a "python is not recognized" error on Windows, Python may not be in your system PATH. Re-run the installer and ensure "Add Python to PATH" is checked, or manually add Python to your system PATH:
C:\Users\YourUsername\AppData\Local\Programs\Python\Python3XX or C:\Python3XX).Win+X and select "System", then click "Advanced system settings".C:\Python3XX\Scripts).CARA requires several Python libraries to function (see section 2.1 for a complete list). These can be installed all at once using the provided requirements file.
pip --version in your terminal.
cd path/to/carapath/to/cara with the actual path to your CARA installation directory.pip install -r requirements.txtpip listIf pip is not available after installing Python, you can install it manually:
get-pip.py script from bootstrap.pypa.io/get-pip.py and save it to a folder on your computer.get-pip.py, and run:python get-pip.pypython3 instead of python.pip --versionIf you prefer to install dependencies individually instead of using the requirements file, you can install each library separately:
pip install PyQt6>=6.6.0pip install python-chess>=1.999pip install requests>=2.31.0pip install asteval>=0.9.31pip install charset-normalizer>=3.0.0After installing all dependencies, verify they are installed correctly using pip list.
To start CARA, open a terminal (PowerShell or Command Prompt on Windows, Terminal on macOS), navigate to the CARA directory, and run:
python cara.pyNote: On macOS, you may need to use python3 instead of python.
CARA uses three configuration files to manage settings and preferences:
app/config/ directory and defines the visual appearance and behavior of the application. You can customize CARA's appearance by modifying this file without changing any source code.The file location for user_settings.json and engine_parameters.json is determined by CARA's configuration settings. By default, these files are stored in the CARA root directory.
However, when running CARA as an app bundle, the files are stored in different locations:
%APPDATA%\CARA\ (usually C:\Users\YourUsername\AppData\Roaming\CARA\).~/Library/Application Support/CARA/.Win+R, type %APPDATA%\CARA, and press Enter to open the folder in File Explorer.⌘+Shift+G (Go to Folder), type ~/Library/Application Support/CARA, and press Enter.CARA provides an integrated environment for analyzing and reviewing chess games. The application window is organized into three main panels that work together to give you complete insight into your games: the Main Panel displays the chessboard and game information, the Detail Panel provides detailed analysis views and tools, and the Database Panel manages your game collections.
The interface is designed to be intuitive and efficient. You can resize panels by dragging the splitter handles between them, customize which information is displayed, and use keyboard shortcuts for quick navigation. The application automatically updates all views when you navigate through a game, ensuring that the chessboard, move lists, evaluations, and statistics stay synchronized.
← (Left Arrow) and → (Right Arrow) keys to navigate through game moves. This is the primary and most efficient way to review games move-by-move. The board, moves list, and all analysis views update automatically as you navigate.
All aspects of CARA's appearance can be customized through the config.json configuration file. This includes fonts, colors, sizes, dimensions, panel layouts, and all UI styling. The configuration system follows a strict structure with no hardcoded values in the application code, allowing you to completely customize the application's appearance without modifying any source code.
All functions and features in CARA can be accessed through the menu bar at the top of the application window. Most menu items have keyboard shortcuts displayed next to them for quick access.
CARA's main window is organized into three resizable panels:
You can resize any panel by dragging the splitter handles between them. The database panel can be collapsed by double-clicking its splitter handle or using (Ctrl+Shift+D / ⌘+Shift+D). The status bar at the bottom of the window displays status messages and progress indicators during long-running operations.
The Main Panel displays the chessboard along with game information and analysis widgets. The board updates automatically as you navigate through moves using the arrow keys.
The chessboard displays the current position.
Rotate the board 180 degrees using the X key or . Rotation is visual only and does not change the position—FEN notation always represents positions from White's perspective.
The following visual indicators can be toggled on or off:
Alt+C / ⌥+C or .Alt+T / ⌥+T or .Alt+P / ⌥+P or .Alt+B / ⌥+B or .Alt+2 / ⌥+2, Alt+3 / ⌥+3 or .Alt+A / ⌥+A or .Alt+H / ⌥+H or .The game information header at the top of the Main Panel shows:
Toggle visibility with Alt+I / ⌥+I or .
The evaluation bar appears on the left side of the chessboard and shows the engine's evaluation of the current position. The bar uses white and black colors: positive values (White advantage) are shown in white extending upward from the center, negative values (Black advantage) are shown in black extending downward from the center. The scale ranges from -1000 to +1000 centipawns, with division marks at 100, 200, 300, 500, and 1000 centipawns to help gauge the evaluation magnitude. Toggle with Alt+E / ⌥+E or . When the evaluation bar is shown, the status bar displays detailed engine information including the engine name, search depth, evaluation score, principal variation, and performance metrics such as nodes per second and hash table usage.
Note: The evaluation bar requires a chess engine to be assigned to the evaluation task. See section 5.1 for instructions on configuring engines.
The material widget appears in the upper right corner of the chessboard and shows captured pieces and the material difference between the two sides. The widget updates automatically as you navigate through the game. Toggle with Alt+U / ⌥+U or .
The widget is divided into three distinct sections, reading from top to bottom:
Pieces are displayed using standard chess notation letters: P for Pawn, N for Knight, B for Bishop, R for Rook, and Q for Queen.
The turn indicator shows which side is to move in the current position. Toggle with Alt+T / ⌥+T or .
The positional heatmap is a color-coded overlay that visualizes positional factors for each piece on the chessboard. It helps you quickly identify positional strengths and weaknesses by displaying colored gradients on squares containing pieces.
Toggle with Alt+H / ⌥+H or .
The heatmap evaluates nine positional factors:
Color Coding: The heatmap uses color gradients to represent positional scores:
The intensity of the color indicates the strength of the positional factor—darker colors represent stronger effects. The heatmap only displays on squares that contain pieces, and each piece is evaluated from its own color's perspective.
Tooltip Information: Hovering your mouse over any piece displays a detailed tooltip showing:
This detailed information helps you understand why a piece is evaluated as strong or weak and which specific positional factors contribute to the assessment.
The Database Panel, located at the bottom of the application window, manages your chess game collections. It displays all open PGN databases in a tabbed interface, allowing you to work with multiple game collections simultaneously. Each database appears in its own tab, and you can switch between them by clicking the tab labels.
The panel uses tabs to organize multiple databases:
Ctrl+Shift+S / ⌘+Shift+S), or clear it at any time using (Ctrl+Shift+C / ⌘+Shift+C).Each tab displays a pulsing orange dot indicator when the database has unsaved changes. This visual reminder helps you track which databases need to be saved. The indicator appears next to the tab label and pulses continuously until the database is saved.
Each database tab displays a table listing all games in that database. The table includes the following columns:
You can interact with the game table in several ways:
Shift+Click to select a range of games, or Ctrl+Click / ⌘+Click to select multiple individual games.The Database Panel can be collapsed to maximize space for the main and detail panels. Double-click the horizontal splitter handle above the panel, or use (Ctrl+Shift+D / ⌘+Shift+D) to toggle its visibility. When collapsed, the panel is minimized to a thin strip, and you can expand it again using the same method.
The panel automatically updates when games are added, removed, or modified in any database. Changes are reflected immediately in the table view, and unsaved indicators appear as needed to help you track which databases contain games with unsaved changes.
You can perform common database operations using the File menu or keyboard shortcuts:
Ctrl+O / ⌘+O) to open one or multiple PGN files. In the file dialog, you can select multiple files by clicking and dragging, holding Ctrl / ⌘ for individual selection, or Shift for range selection. Each file appears as a separate tab in the Database Panel.Ctrl+S / ⌘+S) to save the active database. This overwrites the existing database file with the current contents.Ctrl+Shift+S / ⌘+Shift+S) to save the active database as a new copy.Ctrl+W / ⌘+W) to close the active database tab.Ctrl+Alt+W / ⌘+⌥+W) to close all file-based database tabs. The Clipboard and Search Results tabs are preserved.Ctrl+V / ⌘+V) to paste into the Clipboard database, or (Ctrl+Alt+V / ⌘+⌥+V) to paste into the active database instead.
The Detail Panel contains the PGN Notation Pane at the top and a set of tabbed views below for detailed analysis.
The PGN Notation Pane displays the complete PGN notation for the current game. The PGN notation contains several different types of elements:
The content is displayed in a formatted, color-coded view with syntax highlighting to distinguish between different elements.
config.json. See section 7.1.6 "Customizing PGN Display Formatting" for advanced customization options.
As you navigate through the game using the ← (Left Arrow) and → (Right Arrow) keys, the active move is highlighted in the PGN notation. Alternatively, you can click on any main-line move in the PGN notation to jump directly to that position in the game. Note that clicking on variation moves, comments, or metadata tags does not trigger navigation—only main-line moves are clickable.
You can control what elements are displayed in the PGN Notation Pane using the PGN menu. The following options are available:
Ctrl+M / ⌘+M): Toggle display of PGN header tags (Event, Site, Date, etc.)Ctrl+Shift+M / ⌘+Shift+M): Toggle display of move commentsCtrl+Shift+V / ⌘+Shift+V): Toggle display of move variationsCtrl+Shift+T / ⌘+Shift+T): Toggle display of non-standard tags like [%evp] and [%mdl] within commentsCtrl+Shift+A / ⌘+Shift+A): Toggle display of move annotations, including symbol-based annotations (!, !!, ?, ??, !?, ?!) and NAGs (Numeric Annotation Glyphs).Ctrl+R / ⌘+R): Toggle display of game results (1-0, 0-1, 1/2-1/2)The PGN menu also provides options to permanently remove elements from the game's PGN. The following options are available:
These changes modify the game's actual PGN content which will persist when you save the database.
Below the PGN Notation Pane, the Detail Panel contains seven tabs, each offering distinct functionality for analyzing and working with the active game:
The Moves List tab displays all moves in a table format with comprehensive per-move information. The table includes columns for move notation, evaluations, move classifications, best move alternatives, Centipawn Loss (CPL) values, engine depth, material counts, FEN positions, and more. You can customize which columns are visible and their display order using column profiles. The active move is highlighted as you navigate through the game. You can click on any move in the table to jump to that position in the game. Access this tab using or press F1.
The application comes with several pre-configured column profiles that organize the available columns for different analysis purposes. Switch between profiles using the number keys 1 through 9 (assigned to the first nine profiles in order), or select them from the menu. The following default profiles are available:
1): A minimal view showing only the move number, White and Black moves, and comments. Use this profile when you want a clean, uncluttered view focused on the moves themselves.2): Displays moves along with ECO codes and opening names. This profile is useful for studying opening theory and identifying which openings were played in your games.3): Shows the most important analysis columns for both White and Black moves, including evaluations, CPL values, move assessments, best move alternatives, engine depth, and top-3 move indicators. Use this comprehensive profile when you want to analyze both sides' play in detail, comparing evaluations and move quality for the entire game.4): Focuses exclusively on White's moves and their analysis. All White-related columns are visible (evaluations, CPL, assessments, best moves, depth), while Black's analysis columns are hidden. This profile is ideal when you played White and want to focus on analyzing your own moves without the distraction of your opponent's move evaluations.5): Focuses exclusively on Black's moves and their analysis. All Black-related columns are visible, while White's analysis columns are hidden. Use this profile when you played Black and want to concentrate on your own moves.You can modify any of these default profiles or create your own custom profiles. For smaller adjustments, you can reorder columns by dragging and dropping column headers in the moves list, resize columns by dragging column borders, and show or hide columns using the menu. For configuring multiple columns at once, use which provides a convenient dialog for managing all column settings. After making changes, save them with (to update the current profile) or (to create a new profile with a custom name). Custom profiles you create will also be accessible via number keys 1 through 9 based on their position in the profile list.
For a complete reference of all available columns and their descriptions, see section 7.7 "Moves List Columns Reference".
The Metadata tab displays all PGN header tags (metadata) for the current game in an editable table format. You can view, edit, add, and remove tags. Common tags include Event, Site, Date, Round, White, Black, Result, ECO, WhiteElo, and BlackElo. Changes to metadata are applied to the game's PGN data in memory. The database is marked as having unsaved changes, and your modifications will be persisted to the database file when you save it. Access this tab using or press F2.
To edit a tag value, double-click on the value cell in the table and type the new value. Tag names cannot be edited, but you can remove a tag and add a new one with a different name if needed. To add a new tag, click the Add button at the top of the metadata view, enter the tag name and value in the dialog, then click OK. To remove a tag, select the tag row in the table and click the Remove button. You will be asked to confirm the removal. Note that some tags (such as CARA analysis and annotation tags) are read-only and cannot be edited or removed.
The Manual Analysis tab provides continuous engine analysis of the current position with MultiPV (Multiple Principal Variations) support. Access this tab using or press F3.
Note: Manual analysis requires a chess engine to be assigned to the manual analysis task. See section 5.1 for instructions on configuring engines.
MultiPV Analysis: The standard analysis mode displays multiple candidate moves and their evaluations. You can analyze any number of principal variation lines simultaneously, each displaying the engine's recommended moves, evaluations, and depths. The first three PV lines (PV1, PV2, PV3) have color-coded indicators in the analysis display that match the colors of the corresponding arrows on the chessboard when enabled. This visual connection helps you quickly identify which analysis line corresponds to which arrow on the board. The following options are available:
Alt+M / ⌥+M): Start or stop continuous engine analysis of the current positionAlt+N / ⌥+N): Add an additional principal variation lineAlt+R / ⌥+R): Remove the last added PV line (requires at least two lines)Positional Plan Exploration: This unique feature helps you understand the engine's positional plans by visualizing where the engine wants to move specific pieces and how they coordinate through the recommended sequence. Instead of just seeing individual moves, you can see the complete trajectory of each piece—where it starts, where it moves to, and the path it takes through multiple moves. The system automatically identifies the pieces that move most frequently in each PV line and tracks their movement patterns. Each of these selected pieces is assigned a distinct color and highlighted in that color in the PV display, while on the chessboard, their trajectories are visualized as colored lines connecting the squares each piece visits through the engine's suggested sequence. This helps you recognize positional themes, piece coordination patterns, and strategic plans that might not be immediately obvious from traditional engine analysis alone.
The following options are available:
The Game Summary tab provides a comprehensive overview of the current game by synthesizing data from the Game Analysis function into key performance indicators (KPIs) and valuable insights. Access this tab using or press F4.
Ctrl+G / ⌘+G).
Evaluation Graph: At the top of the view, a visual graph shows how the position evaluation changed throughout the game over time. The graph includes indicators marking phase transitions (opening to middlegame, middlegame to endgame) and highlights the worst and best moves for each player, making it easy to see critical moments and how the game's balance shifted. The graph is displayed in a resizable panel that can be adjusted to show more or less detail.
The evaluation graph supports two display modes that you can toggle using (Ctrl+Shift+N / ⌘+Shift+N):
Key Statistics: The summary displays per-player statistics for both White and Black, including:
Move Classification: The view displays pie charts showing the distribution of move quality throughout the game for each player. You can see how many moves were strong (Best Move, Good Move, Brilliant) versus how many were errors (Inaccuracy, Mistake, Blunder), giving you a quick visual overview of each player's performance. The charts also show book moves and missed opportunities.
Phase Analysis: The view breaks down performance for each player across the three phases of a chess game—Opening, Middlegame, and Endgame—showing how each player performed in different stages of the game. This helps you identify strengths and weaknesses in specific phases. Each phase section shows accuracy, average CPL, and move counts for that phase. The system automatically detects phase boundaries based on opening theory, material exchanges, and endgame classification. When an endgame is detected, the system also classifies the specific endgame type (such as Pawn Endgame, Rook Endgame, Minor Piece Endgame, or Queen Endgame) based on the material composition, which is displayed in the phase analysis section.
Game Highlights: The view displays detected tactical and positional patterns that occurred during the game. Highlights are organized by game phase and help you quickly identify key moments. Each highlight entry is a clickable link that navigates directly to the move where the pattern occurred, allowing you to quickly review the position and context.
Critical Moments: The summary identifies the top best and worst moves for each player, allowing you to quickly review and navigate to critical moments in the game. Each critical moment shows the move number, move notation, evaluation, and best alternative move when applicable. Each critical moment entry is a clickable link that navigates directly to that move in the game, making it easy to jump to and analyze these important positions.
This comprehensive overview helps you quickly understand the flow of the game, identify critical moments, and assess each player's performance across different phases of play.
The Player Stats tab displays extensive aggregated statistics across multiple games for any selected player. Access this tab using or press F5.
Requirements: This view is only available for players who have at least two analyzed games in the selected data source. You can choose to analyze players from either the active database or all open databases.
Overall Performance: The system aggregates statistics from all analyzed games for the selected player, calculating overall performance metrics including accuracy, average Centipawn Loss, estimated ELO, win rate, and move classification distributions.
Phase Breakdown: The view breaks down performance by game phase (Opening, Middlegame, Endgame), showing how the player performs in different stages of play. This helps identify strengths and weaknesses in specific phases.
Opening Analysis: The system tracks opening usage and accuracy, identifying which openings the player plays most frequently and how well they perform in each opening.
Error Pattern Detection: The system automatically detects error patterns such as phase-specific blunder tendencies, tactical misses, opening-specific errors, consistently high Centipawn Loss, missed opportunities, and conversion issues in winning positions.
Background Updates: The view updates asynchronously in the background when databases change, ensuring you always have current data without blocking the interface.
The Annotations tab provides tools for creating and managing custom CARA annotations on the chessboard. Unlike regular PGN annotations, CARA annotations include free-form text that can be positioned anywhere on the board, adjusted in size and rotated.
You can also add arrows, circles, and square highlighting with customizable colors. Annotations are position-specific, attached to individual moves in the game, and are compressed and serialized in a PGN metadata tag to keep the PGN move notation clean.
Access this tab using or press F6.
The AI Summary tab provides an interactive chat interface for discussing any position in a game with a Large Language Model (LLM). The AI model has access to extensive game data, including detailed engine analysis, move classifications, evaluation metrics, and positional information, enabling it to provide accurate assessments of the game, played moves, and current position. You can ask questions about the game, request explanations of moves, or generate summaries. Access this tab using or press F7.
Below you can find a list of the most common keyboard shortcuts, allowing you to work efficiently with the features described in this section. For a complete reference of all keyboard shortcuts organized by category, see section 6.12.
← (Left Arrow): Navigate to the previous move in the game→ (Right Arrow): Navigate to the next move in the gameX: Rotate the board 180 degreesAlt+C / ⌥+C: Toggle coordinates displayAlt+T / ⌥+T: Toggle turn indicatorAlt+P / ⌥+P: Toggle played move arrowAlt+B / ⌥+B: Toggle best next move arrow (PV1)Alt+2 / ⌥+2: Toggle PV2 arrowAlt+3 / ⌥+3: Toggle PV3 arrowAlt+A / ⌥+A: Toggle best alternative move arrowAlt+H / ⌥+H: Toggle positional heatmapAlt+E / ⌥+E: Toggle evaluation barAlt+U / ⌥+U: Toggle material widgetAlt+I / ⌥+I: Toggle game information displayAlt+L / ⌥+L: Toggle annotations layerCtrl+Shift+F / ⌘+Shift+F: Search games across databasesCtrl+Shift+W / ⌘+Shift+W: Close search resultsCtrl+Shift+I / ⌘+Shift+I: Import online gamesCtrl+Shift+R / ⌘+Shift+R: Bulk replace in databasesCtrl+Alt+T / ⌘+⌥+T: Bulk tag gamesCtrl+Shift+L / ⌘+Shift+L: Bulk clean PGNCtrl+Shift+U / ⌘+Shift+U: Deduplicate gamesF1: Switch to Moves List tabF2: Switch to Metadata tabF3: Switch to Manual Analysis tabF4: Switch to Game Summary tabF5: Switch to Player Stats tabF6: Switch to Annotations tabF7: Switch to AI Summary tabCtrl+G / ⌘+G: Start game analysis for the current gameEscape: Cancel ongoing game analysisCtrl+Shift+N / ⌘+Shift+N: Toggle normalized evaluation graph modeCtrl+Shift+K / ⌘+Shift+K: Configure move classification settingsAlt+M / ⌥+M: Start or stop continuous engine analysis of the current positionAlt+N / ⌥+N: Add an additional principal variation lineAlt+R / ⌥+R: Remove the last added PV lineCtrl+O / ⌘+O: Open PGN databaseCtrl+S / ⌘+S: Save active PGN databaseCtrl+Shift+S / ⌘+Shift+S: Save active PGN database as...Ctrl+W / ⌘+W: Close active PGN databaseCtrl+Alt+W / ⌘+⌥+W: Close all PGN databasesCtrl+Q / ⌘+Q: Close applicationCtrl+V / ⌘+V: Paste PGN to Clipboard databaseCtrl+Alt+V / ⌘+⌥+V: Paste PGN to active databaseCtrl+P / ⌘+P: Copy PGN to clipboardShift+F: Copy FEN to clipboardCtrl+F / ⌘+F: Paste FEN to boardCtrl+Shift+C / ⌘+Shift+C: Copy selected gamesCtrl+Shift+X: Cut selected gamesCtrl+M / ⌘+M: Toggle metadata displayCtrl+Shift+M / ⌘+Shift+M: Toggle comments displayCtrl+Shift+V / ⌘+Shift+V: Toggle variations displayCtrl+Shift+T / ⌘+Shift+T: Toggle non-standard tags displayCtrl+Shift+A / ⌘+Shift+A: Toggle annotations displayCtrl+R / ⌘+R: Toggle results display1 - 9: Switch to column profile 1 through 9Ctrl+Shift+P / ⌘+Shift+P: Save current profileCtrl+Alt+P / ⌘+⌥+P: Save current profile as...Ctrl+Shift+Delete / ⌘+Shift+Delete: Remove current profileCtrl+Alt+S: Save annotationsCtrl+Shift+D / ⌘+Shift+D: Clear all annotationsCtrl+Alt+D: Clear move annotationsCtrl+Shift+D / ⌘+Shift+D: Toggle database panel visibilityCtrl+E: Add or configure chess engineFollow these steps to analyze your first game:
Ctrl+O / ⌘+O), or paste PGN text into the Clipboard database using (Ctrl+V / ⌘+V)—the pasted game gets loaded automatically.F1 to switch to the Moves List tab, then press 3 to select the "Game Analysis - Full" profile. This profile displays all the important analysis columns you'll need to review the game.Ctrl+G / ⌘+G (or use ) to begin analyzing the game. Watch as the moves list fills in with evaluation data, move classifications, CPL values, and best move alternatives as the analysis progresses. Progress and estimated time remaining are shown in the status bar.F4 to switch to the Game Summary tab for a condensed overview showing key statistics, the evaluation graph, critical moments, and detected game highlights.CARA requires at least one UCI-compatible chess engine to perform game analysis. Adding your first engine is straightforward and doesn't require any special configuration—default settings are usually sufficient to get started.
There are two general types of chess engines you can use with CARA:
For most users, starting with a conventional engine like Stockfish is recommended due to its speed and strength. You can always add additional engines later to compare different analysis approaches.
To add your first engine:
Ctrl+E.stockfish.exe for Stockfish on Windows).Once you have your first engine set up, you can add additional engines and configure per-engine, per-task settings to optimize performance for different analysis scenarios:
The dialog includes "Copy..." buttons for each task that allow you to copy settings from one task to another, making it easy to duplicate configurations. The "Reset" button restores the recommended default settings for the selected task.
CARA provides several ways to import and open games. This section covers the three main methods.
The quickest way to import a single game is to paste PGN text directly from your system clipboard:
Ctrl+V / ⌘+V) to paste into the Clipboard database, or (Ctrl+Alt+V / ⌘+⌥+V) to paste into the currently active database. The pasted game gets loaded automatically and becomes the active game.To import games from one or more PGN files on your computer:
Ctrl+O / ⌘+O) to open the file selection dialog.Ctrl on Windows or ⌘ on macOS while clicking to select individual files, or hold Shift while clicking to select a range of files.CARA can import games directly from online chess platforms:
Ctrl+Shift+I / ⌘+Shift+I) to open the import dialog.CARA provides several tools for managing your game databases, including basic file operations and powerful bulk operations for batch processing multiple games at once.
Ctrl+S / ⌘+S) or (Ctrl+Shift+S / ⌘+Shift+S). The unsaved changes indicator (orange dot) on database tabs helps you track which databases have unsaved modifications.
For opening, saving, and closing databases, see section 4.4.5.
Use (Ctrl+Shift+R / ⌘+Shift+R) to find and replace text in metadata tags across multiple games. This is useful for correcting typos, standardizing player names, or updating event information.
The dialog allows you to:
The dialog also includes two smart update options:
Use (Ctrl+Alt+T / ⌘+⌥+T) to add or remove metadata tags across multiple games. This is useful for adding missing information or cleaning up tag sets.
The dialog allows you to:
Use (Ctrl+Shift+L / ⌘+Shift+L) to remove unwanted elements from PGN notation across multiple games.
The dialog allows you to remove:
You can select any combination of these options and process all games or only selected games in the database table.
Use (Ctrl+Shift+U / ⌘+Shift+U) to identify and remove duplicate games from the active database.
The deduplication dialog allows you to choose how games are matched:
When duplicates are found, the active game (if it's a duplicate) is preserved, and other duplicates are removed. Progress is displayed in the status bar during the operation.
CARA provides powerful search functionality to find games across your databases based on multiple criteria. You can search within a single database or across all open databases simultaneously, and combine criteria using logical operators (AND/OR) and grouping.
When you open the search dialog using (Ctrl+F / ⌘+F), you can choose where to search:
Each search criterion consists of three parts:
For "Custom PGN Tag", you must also specify the tag name in an additional field that appears when this option is selected.
Search criteria are combined using logical operators (AND/OR) to create complex queries. By default, criteria are combined with AND logic, meaning all criteria must match for a game to be included in the results.
Each criterion row (except the first) has an AND/OR selector that determines how it relates to the previous criterion:
For more complex searches, you can group criteria together using the "Start Group" and "End Group" buttons. Groups allow you to create logical expressions like "(A AND B) OR (C AND D)".
To create a group:
Groups can be nested to create complex logical expressions. Nested groups are visually indicated by increased indentation levels. The search system evaluates groups from innermost to outermost, allowing you to create sophisticated queries like "((A OR B) AND C) OR (D AND E)".
When a group is created, the AND/OR operator on the group start row determines how the entire group relates to criteria before it. Criteria within a group are combined according to their individual AND/OR operators.
Once you've set up your search criteria:
The search dialog remembers your last search query during the current session, so you can easily modify and re-run searches. Double-click any game in the search results to open it for review.
CARA's game analysis feature uses a chess engine to evaluate every move in a game, providing detailed insights into move quality, evaluation changes, and alternative moves. This section explains how to analyze a single game.
To analyze the currently active game:
Ctrl+G / ⌘+G) to begin analyzing the game. CARA will automatically switch to the Moves List tab if configured to do so (see section 5.5.3).During analysis, CARA processes each move sequentially, evaluating the position before and after each move, calculating Centipawn Loss (CPL), and classifying move quality. Progress is displayed in the status bar, showing the current move being analyzed, the engine name, search depth, and evaluation.
As moves are analyzed, the Moves List shows detailed information for each move:
Ctrl+Shift+K / ⌘+Shift+K).
You can review this information in the Moves List, or switch to the tab (F4) for a condensed overview of key game moments, statistics, and highlights.
CARA provides several settings to customize the analysis workflow:
These settings can be toggled in the menu and are saved in your user settings.
You can cancel an ongoing analysis at any time using or press Escape. When cancelled, analysis stops at the current move, and all moves analyzed up to that point retain their analysis data.
To analyze multiple games at once, use .
CARA automatically optimizes available CPU cores to analyze multiple games in parallel, maximizing analysis speed. Progress and estimated time remaining are displayed in the status bar, and you can cancel and resume bulk analysis at any time.
Manual Analysis provides continuous engine analysis of any position, allowing you to explore candidate moves and understand the engine's recommendations in real-time. Unlike game analysis which processes all moves in a game, manual analysis focuses on the current position and updates continuously as you navigate through the game.
To start analyzing the current position:
F3).Alt+M / ⌥+M) to begin continuous analysis. The engine will analyze the current position and display principal variation lines with evaluations, depths, and move sequences.Analysis continues automatically as you navigate to different positions in the game. To stop analysis, use the same menu item or keyboard shortcut again.
Manual Analysis supports MultiPV (Multiple Principal Variations), allowing you to see multiple candidate moves simultaneously. By default, analysis shows one principal variation line (PV1). You can add additional lines to compare different candidate moves:
Alt+N / ⌥+N) to add another principal variation line. You can add as many lines as needed.Alt+R / ⌥+R) to remove the last added line (requires at least two lines).Each PV line displays the engine's recommended move sequence, evaluation, search depth, and performance metrics. The first three PV lines (PV1, PV2, PV3) have color-coded indicators that match the colors of the corresponding arrows on the chessboard when enabled, helping you visually connect the analysis lines to the board arrows.
You can explore variations by hovering over moves in the PV lines:
Alt+B / ⌥+B, Alt+2 / ⌥+2, Alt+3 / ⌥+3) show the recommended moves from each analysis line, making it easy to see candidate moves visually.Positional Plan Exploration visualizes how pieces move through the engine's recommended sequence, helping you understand strategic plans and piece coordination. Instead of just seeing individual moves, you can see complete piece trajectories—where pieces start, where they move, and the path they take through multiple moves.
To explore positional plans:
When enabled, the chessboard displays colored lines showing the trajectory of each tracked piece through the engine's recommended sequence. Each piece is assigned a distinct color that matches its indicator in the PV display, making it easy to follow piece movement patterns and understand positional themes.
The Player Stats tab provides aggregated statistics across multiple games for any selected player, helping you identify patterns, strengths, and weaknesses in a player's performance. Access this tab using or press F5.
To view statistics for a player:
Once a player is selected, the view displays comprehensive aggregated statistics:
CARA annotations allow you to add custom markings to the chessboard, including text, arrows, circles, and square highlighting. Unlike regular PGN annotations, CARA annotations are not added to PGN notation as special encoded comments but are kept separate. Text can be freely positioned, sized, and rotated. Access the Annotations tab using or press F6.
The Annotations tab provides several tools for creating annotations:
All annotation types support customizable colors, size adjustments (0.5x to 2.0x), and optional shadow effects for better visibility. Select a tool from the toolbar, choose a color, and click on the chessboard to add annotations.
You can customize the annotation color palette and text font settings using .
The dialog provides the following options:
Changes are saved to your user settings when you click "Save" and will persist across sessions.
Annotations are automatically attached to the current move (position) in the game. As you navigate through the game, annotations for each position are shown or hidden automatically.
You can manage annotations using the following options:
Ctrl+Alt+S) to save all annotations to the active game. Annotations are compressed and stored in a PGN metadata tag, keeping the PGN move notation clean.Ctrl+Alt+D) to remove all annotations for the current position.Ctrl+Shift+D / ⌘+Shift+D) to remove all annotations from the entire game.Alt+L / ⌥+L) to show or hide the annotation layer on the chessboard.CARA provides practical copy, cut, and paste functionality that allows you to move games between databases, share games with other applications, and work with board positions. This section covers all clipboard operations for games and positions.
To copy one or more games from a database to the clipboard:
Ctrl (individual selection) or Shift (range selection) while clicking.Ctrl+Shift+C / ⌘+Shift+C) to copy the selected games to your system clipboard as PGN text. The games remain in the source database.The copied games are stored as standard PGN text, separated by double newlines. You can paste them into another database in CARA, or into any other application that accepts PGN text.
To move games from one database to another (or remove them from a database):
Ctrl+Shift+X) to copy the selected games to your system clipboard and remove them from the source database. If the active game is among the cut games, it will be cleared.The cut games are stored as PGN text in your clipboard, ready to be pasted into another database. The source database is marked as having unsaved changes.
To paste games from the clipboard into a database:
Ctrl+V / ⌘+V) to paste into the Clipboard database, or (Ctrl+Alt+V / ⌘+⌥+V) to paste into the currently active database.All games in the clipboard PGN text are added to the selected database. If the clipboard contains multiple games, all are added, and the first game automatically becomes the active game. The destination database is marked as having unsaved changes.
To copy the currently active game's PGN to the clipboard:
Ctrl+P / ⌘+P) to copy the active game's complete PGN text to your system clipboard.This copies the full PGN notation of the active game, including all metadata tags, moves, comments, and variations. You can then paste it into another application or share it with others.
CARA also supports copying and pasting board positions using FEN (Forsyth-Edwards Notation):
Shift+F) to copy the current board position as FEN notation to your system clipboard. This is useful for sharing specific positions or setting up positions in other chess applications.Ctrl+F / ⌘+F) to paste a FEN position from your clipboard and update the chessboard to that position. When a FEN is pasted, the active game is cleared (set to None) since the board position is no longer part of a game sequence.Shortcut: Ctrl+Shift+C / ⌘+Shift+C
Removes all games from the Clipboard database.
Shortcut: Ctrl+O / ⌘+O
Opens one or more PGN files from your computer. Each file appears as a separate tab in the Database Panel.
See section 5.2.2 for detailed instructions.
Shortcut: Ctrl+W / ⌘+W
Closes the currently active database tab. Any unsaved changes will be lost if you haven't saved the database first.
See section 4.4.5 for more information.
Shortcut: Ctrl+Alt+W / ⌘+⌥+W
Closes all file-based database tabs. The Clipboard and Search Results tabs are preserved. Any unsaved changes will be lost if you haven't saved the databases first.
See section 4.4.5 for more information.
Shortcut: Ctrl+S / ⌘+S
Saves the active database to disk, overwriting the existing file.
See section 4.4.5 for more information.
Shortcut: Ctrl+Shift+S / ⌘+Shift+S
Saves the active database to a new file location. This allows you to create a copy of the database without overwriting the original.
See section 4.4.5 for more information.
Shortcut: Ctrl+Shift+I / ⌘+Shift+I
Opens a dialog to import games from Lichess or Chess.com.
See section 5.2.3 for detailed instructions.
Shortcut: Ctrl+Shift+R / ⌘+Shift+R
Opens a dialog to find and replace text in metadata tags across multiple games.
See section 5.3.2 for detailed instructions.
Shortcut: Ctrl+Alt+T / ⌘+⌥+T
Opens a dialog to add or remove metadata tags across multiple games.
See section 5.3.3 for detailed instructions.
Shortcut: Ctrl+Shift+L / ⌘+Shift+L
Opens a dialog to remove unwanted elements (comments, variations, annotations, etc.) from PGN notation across multiple games.
See section 5.3.4 for detailed instructions.
Shortcut: Ctrl+Shift+U / ⌘+Shift+U
Opens a dialog to identify and remove duplicate games from the active database.
See section 5.3.5 for detailed instructions.
Shortcut: Ctrl+Shift+F / ⌘+Shift+F
Opens a dialog to search for games across databases using multiple criteria and logical operators.
See section 5.4 for detailed instructions.
Shortcut: Ctrl+Shift+W / ⌘+Shift+W
Closes the Search Results tab in the Database Panel. This menu item is only enabled when a search results tab is open.
Shortcut: Ctrl+Q / ⌘+Q
Closes the CARA application. Any unsaved changes in open databases will be lost if you haven't saved them first.
Shortcut: Shift+F
Copies the current board position as FEN (Forsyth-Edwards Notation) to your system clipboard.
See section 5.9.5 for more information.
Shortcut: Ctrl+P / ⌘+P
Copies the currently active game's complete PGN text to your system clipboard.
See section 5.9.4 for more information.
Shortcut: Ctrl+Shift+C / ⌘+Shift+C
Copies the selected games from the active database to your system clipboard as PGN text. The games remain in the source database.
See section 5.9.1 for more information.
Shortcut: Ctrl+Shift+X
Copies the selected games to your system clipboard and removes them from the source database.
See section 5.9.2 for more information.
Shortcut: Ctrl+F / ⌘+F
Pastes a FEN position from your clipboard and updates the chessboard to that position. The active game is cleared when a FEN is pasted.
See section 5.9.5 for more information.
Shortcut: Ctrl+V / ⌘+V
Pastes PGN text from your system clipboard into the Clipboard database. All games in the clipboard are added, and the first game becomes active.
See section 5.2.1 and section 5.9.3 for more information.
Shortcut: Ctrl+Alt+V / ⌘+⌥+V
Pastes PGN text from your system clipboard into the currently active database. All games in the clipboard are added, and the first game becomes active.
See section 5.2.1 and section 5.9.3 for more information.
Shortcut: X
Toggles the board orientation, rotating it 180 degrees. This is useful for viewing positions from the opposite side's perspective.
Shortcut: Alt+I / ⌥+I
Toggles the display of game information (players, result, date, etc.) above the chessboard.
Shortcut: Alt+C / ⌥+C
Toggles the display of coordinate labels (a-h, 1-8) around the chessboard edges.
Shortcut: Alt+T / ⌥+T
Toggles the display of the turn indicator showing which side is to move.
See section 4.3.5 for more information.
Shortcut: Alt+U / ⌥+U
Toggles the display of the material widget showing captured pieces and material difference.
See section 4.3.4 for more information.
Shortcut: Alt+E / ⌥+E
Toggles the display of the evaluation bar showing the engine's assessment of the current position.
See section 4.3.3 for more information.
Shortcut: Alt+H / ⌥+H
Toggles the display of the positional heatmap overlay showing positional factors through color-coded gradients.
See section 4.3.6 for detailed information.
Shortcut: Alt+P / ⌥+P
Toggles the display of an arrow on the chessboard indicating the last move played in the game.
Shortcut: Alt+B / ⌥+B
Toggles the display of an arrow showing the engine's best recommended move (PV1) from manual analysis.
Shortcut: Alt+2 / ⌥+2
Toggles the display of an arrow showing the engine's second-best recommended move (PV2) from manual analysis.
Shortcut: Alt+3 / ⌥+3
Toggles the display of an arrow showing the engine's third-best recommended move (PV3) from manual analysis.
Shortcut: Alt+A / ⌥+A
Toggles the display of an arrow showing the best alternative move found during game analysis (the move that should have been played instead of the actual move).
Shortcut: Alt+L / ⌥+L
Toggles the visibility of the annotations layer on the chessboard, showing or hiding all custom annotations (text, arrows, circles, squares).
See section 5.8 for more information.
Selects the visual style for piece trajectory lines displayed during positional plan exploration:
Shortcut: Ctrl+M / ⌘+M
Toggles the display of PGN header tags (Event, Site, Date, etc.) in the PGN Notation Pane.
See section 4.5 for more information.
Shortcut: Ctrl+Shift+M / ⌘+Shift+M
Toggles the display of move comments in the PGN Notation Pane.
See section 4.5 for more information.
Shortcut: Ctrl+Shift+V / ⌘+Shift+V
Toggles the display of move variations in the PGN Notation Pane.
See section 4.5 for more information.
Shortcut: Ctrl+Shift+T / ⌘+Shift+T
Toggles the display of non-standard tags like [%evp] and [%mdl] within comments in the PGN Notation Pane.
See section 4.5 for more information.
Shortcut: Ctrl+Shift+A / ⌘+Shift+A
Toggles the display of move annotations (symbols like !, ?, and NAGs) in the PGN Notation Pane.
See section 4.5 for more information.
Shortcut: Ctrl+R / ⌘+R
Toggles the display of game results (1-0, 0-1, 1/2-1/2) in the PGN Notation Pane.
See section 4.5 for more information.
Permanently removes all comments from the active game's PGN notation. This action modifies the game's actual PGN content and cannot be undone. The game will be marked to contain unsaved changes and the changes will be persisted when you save the database.
See section 4.5 for more information.
Permanently removes all move variations from the active game's PGN notation. This action modifies the game's actual PGN content and cannot be undone. The game will be marked to contain unsaved changes and the changes will be persisted when you save the database.
See section 4.5 for more information.
Permanently removes non-standard tags (like [%evp] and [%mdl]) from comments in the active game's PGN. This action modifies the game's actual PGN content and cannot be undone. The game will be marked to contain unsaved changes and the changes will be persisted when you save the database.
See section 4.5 for more information.
Permanently removes all move annotations (symbols and NAGs) from the active game's PGN notation. This action modifies the game's actual PGN content and cannot be undone. The game will be marked to contain unsaved changes and the changes will be persisted when you save the database.
See section 4.5 for more information.
The Moves List menu displays all available column profiles at the top. Each profile is a named configuration that defines which columns are visible and their order. Switch between profiles by selecting them from the menu or using number keys 1 through 9 (assigned to the first nine profiles).
See section 4.5.1 for detailed information about column profiles and default profiles.
Shortcut: Ctrl+Shift+P / ⌘+Shift+P
Saves the current column profile, overwriting the existing profile with the current column visibility, order, and width settings.
See section 4.5.1 for more information.
Shortcut: Ctrl+Alt+P / ⌘+⌥+P
Creates a new column profile with a custom name, using the current column visibility, order, and width settings. The new profile is then accessible via the Moves List menu and is assigned a keyboard shortcut (1-9) based on its position in the profile list.
See section 4.5.1 for more information.
Shortcut: Ctrl+Shift+Delete / ⌘+Shift+Delete
Permanently removes the currently active column profile.
Opens a dialog for configuring all column settings at once, including column visibility, order, and widths. This provides a convenient way to manage multiple columns simultaneously rather than toggling them individually.
See section 4.5.1 for more information.
The Moves List menu includes submenus organized by column category for toggling individual column visibility:
Toggle any column's visibility by selecting it from the appropriate submenu. Changes are applied immediately but are not persisted until you save the profile.
See section 4.5.1 for more information.
Shortcut: Ctrl+G / ⌘+G
Initiates automatic analysis of the currently active game using the engine assigned to the Game Analysis task. The engine analyzes each move in the game, providing evaluations, move classifications, and best move alternatives.
See section 5.5 for detailed instructions.
Shortcut: Escape
Cancels an ongoing game analysis. This menu item is only enabled while analysis is in progress. When cancelled, analysis stops and any moves already analyzed remain in the Moves List. You can resume analysis later from where it left off.
See section 5.5.4 for more information.
Opens a dialog to analyze multiple games at once. CARA automatically optimizes available CPU cores to analyze multiple games in parallel, maximizing analysis speed. Progress and estimated time remaining are displayed in the status bar, and you can cancel and resume bulk analysis at any time.
See section 5.5.5 for detailed instructions.
Shortcut: Ctrl+Shift+K / ⌘+Shift+K
Opens a dialog to customize the thresholds used for move classification (Brilliant, Best Move, Good Move, Inaccuracy, Mistake, Blunder). These thresholds determine how moves are categorized based on Centipawn Loss (CPL) values.
See section 5.5.2 for more information about move classifications.
Shortcut: Ctrl+Shift+N / ⌘+Shift+N
Toggles the normalized evaluation graph display mode in the Moves List. When enabled, evaluation values are normalized to a scale that better highlights relative evaluation changes throughout the game, making it easier to identify critical moments and evaluation swings.
Toggles whether CARA performs an additional, deeper analysis after initial game analysis specifically to identify "Brilliant" moves. Brilliant moves often involve material sacrifices and may require deeper analysis to be properly classified. When enabled, this refinement step runs automatically after the main analysis completes.
Toggles whether CARA automatically navigates to the starting position (PLY 0) when analysis completes. When enabled, the board and Moves List automatically return to PLY 0 after analysis finishes.
Toggles whether CARA automatically switches to the Moves List tab when analysis begins. This is enabled by default, ensuring you can immediately see analysis results as they are generated.
Toggles whether CARA automatically switches to the Game Summary tab when analysis completes. When enabled, you are taken directly to the condensed overview of key game moments and statistics after analysis finishes.
Toggles whether analysis results (evaluations, CPL values, move classifications) are saved in a PGN metadata tag for persistence across sessions. When enabled, analysis data is serialized and stored in the game's PGN, allowing you to preserve analysis results even after closing and reopening the database.
Shortcut: Alt+M / ⌥+M
Starts or stops continuous engine analysis of the current position. When enabled, the engine analyzes the current position and displays principal variation lines with evaluations, depths, and move sequences. Analysis continues automatically as you navigate to different positions. Use the same menu item or shortcut again to stop analysis.
See section 5.6.1 for detailed instructions.
Shortcut: Alt+N / ⌥+N
Adds an additional principal variation line to the MultiPV analysis display. This allows you to compare multiple candidate moves simultaneously. You can add as many lines as needed.
See section 5.6.2 for more information.
Shortcut: Alt+R / ⌥+R
Removes the last added principal variation line from the MultiPV analysis display.
See section 5.6.2 for more information.
Toggles the miniature board preview feature. When enabled, hovering over moves in any PV line displays a small chessboard preview showing the position after that move. This helps you quickly visualize the resulting position.
See section 5.6.3 for more information.
Toggles positional plan exploration for the first principal variation line. When enabled, the chessboard displays colored trajectory lines showing how pieces move through the engine's recommended sequence. Only one plan can be active at a time.
See section 5.6.4 for detailed instructions.
Toggles positional plan exploration for the second principal variation line. When enabled, the chessboard displays colored trajectory lines showing how pieces move through the engine's recommended sequence. Only one plan can be active at a time.
See section 5.6.4 for detailed instructions.
Toggles positional plan exploration for the third principal variation line. When enabled, the chessboard displays colored trajectory lines showing how pieces move through the engine's recommended sequence. Only one plan can be active at a time.
See section 5.6.4 for detailed instructions.
Sets how many pieces to track in the positional plan exploration visualization. Options are 1, 2, or 3 pieces. The system automatically selects the pieces that move most frequently in the active PV line up to this limit. Each tracked piece is assigned a distinct color and displayed with trajectory lines on the chessboard.
See section 5.6.4 for more information.
Sets the exploration depth for piece trajectories in positional plan exploration. Options are 2, 3, or 4 moves ahead. This determines how many moves into the future the trajectory visualization extends, showing the complete path each piece takes through the engine's recommended sequence.
See section 5.6.4 for more information.
Toggles whether other board arrows (played move, best alternative move, PV arrows) are hidden when positional plan exploration is active. When enabled, only the piece trajectory lines are displayed, providing a cleaner view focused on the positional plan visualization.
Shortcut: Ctrl+Shift+D / ⌘+Shift+D
Removes all annotations from the entire active game. This action affects all positions in the game and cannot be undone.
See section 5.8.3 for more information.
Shortcut: Ctrl+Alt+D
Removes all annotations for the current position (move) in the game. Annotations for other positions remain unchanged.
See section 5.8.3 for more information.
Shortcut: Ctrl+Alt+S
Saves all annotations to the active game by serializing them into a PGN metadata tag. Annotations are compressed and stored separately from the PGN move notation, keeping the PGN clean. This marks the game as modified, and annotations will be persisted when you save the database.
See section 5.8.3 for more information.
Opens the Annotation Preferences dialog for customizing the annotation color palette and text font settings. Changes are saved to your user settings and persist across sessions.
See section 5.8.2 for detailed instructions.
Shortcut: Ctrl+E
Opens a dialog to add a new UCI-compatible chess engine to CARA. You can browse for the engine executable file, and CARA will automatically validate that it supports the UCI protocol. The first engine you add is automatically assigned to all analysis tasks.
See section 5.1.1 for detailed instructions.
For each configured engine, a submenu is displayed with the engine's name. Each submenu provides the following options:
Only one engine can be assigned to each task at a time.
See section 5.1.2 for more information about task assignment.
Opens a dialog for configuring AI model settings, including API keys and default model selection for the two supported providers OpenAI and Anthropic. You must configure at least one API key and select a model before using the AI Summary feature.
See section 4.5.7 for more information.
To acquire API keys:
Toggles whether to use OpenAI models for AI Summary. When enabled, OpenAI models are available for selection. This option is mutually exclusive with "Use Anthropic Models"—only one provider can be active at a time.
Toggles whether to use Anthropic models for AI Summary. When enabled, Anthropic models are available for selection. This option is mutually exclusive with "Use OpenAI Models"—only one provider can be active at a time.
Toggles whether game analysis data (evaluations, move classifications, CPL values, best move alternatives) is included in the pre-prompt sent to the AI model. When enabled, the AI has access to detailed engine analysis, enabling more accurate assessments of moves and positions.
Toggles whether PGN metadata tags (player names, ELO ratings, event information, etc.) are included in the pre-prompt sent to the AI model. When enabled, the AI has access to game metadata, providing context for more informed responses.
Opens the About dialog displaying application information, including the application name, version number, description, and copyright information. The dialog provides a quick reference for identifying the CARA version you are using.
This section provides a comprehensive reference of all keyboard shortcuts in CARA.
Essential shortcuts for navigating through games:
Right Arrow: Navigate to next moveLeft Arrow: Navigate to previous moveQuick access to different analysis views:
F1: Switch to Moves List tabF2: Switch to Metadata tabF3: Switch to Manual Analysis tabF4: Switch to Game Summary tabF5: Switch to Player Stats tabF6: Switch to Annotations tabF7: Switch to AI Summary tabShortcuts for analyzing games:
Ctrl+G / ⌘+G: Start game analysis for the current gameEscape: Cancel ongoing game analysisCtrl+Shift+K / ⌘+Shift+K: Configure move classification settingsCtrl+Shift+N / ⌘+Shift+N: Toggle normalized evaluation graph modeStandard file management shortcuts:
Ctrl+O / ⌘+O: Open PGN databaseCtrl+S / ⌘+S: Save active PGN databaseCtrl+Shift+S / ⌘+Shift+S: Save active PGN database as...Ctrl+W / ⌘+W: Close active PGN databaseCtrl+Alt+W / ⌘+⌥+W: Close all PGN databasesCtrl+Q / ⌘+Q: Close applicationShortcuts for importing and opening games:
Ctrl+V / ⌘+V: Paste PGN to Clipboard databaseCtrl+Alt+V / ⌘+⌥+V: Paste PGN to active databaseCtrl+Shift+I / ⌘+Shift+I: Import games from online platformsShortcuts for copying and moving game data:
Ctrl+P / ⌘+P: Copy active game PGN to clipboardShift+F: Copy current board position (FEN) to clipboardCtrl+F / ⌘+F: Paste FEN position to boardCtrl+Shift+C / ⌘+Shift+C: Copy selected games to clipboardCtrl+Shift+X: Cut selected games to clipboardShortcuts for managing and switching column profiles:
1 - 9: Switch to column profile 1 through 9Ctrl+Shift+P / ⌘+Shift+P: Save current profileCtrl+Alt+P / ⌘+⌥+P: Save current profile as...Ctrl+Shift+Delete / ⌘+Shift+Delete: Remove current profileShortcuts for toggling board display elements:
X: Rotate board 180 degreesAlt+C / ⌥+C: Toggle coordinates displayAlt+T / ⌥+T: Toggle turn indicatorAlt+I / ⌥+I: Toggle game information displayAlt+E / ⌥+E: Toggle evaluation barAlt+U / ⌥+U: Toggle material widgetAlt+H / ⌥+H: Toggle positional heatmapAlt+P / ⌥+P: Toggle played move arrowAlt+B / ⌥+B: Toggle best next move arrow (PV1)Alt+2 / ⌥+2: Toggle PV2 arrowAlt+3 / ⌥+3: Toggle PV3 arrowAlt+A / ⌥+A: Toggle best alternative move arrowAlt+L / ⌥+L: Toggle annotations layerShortcuts for manual position analysis:
Alt+M / ⌥+M: Start or stop continuous engine analysisAlt+N / ⌥+N: Add principal variation lineAlt+R / ⌥+R: Remove principal variation lineShortcuts for managing annotations:
Ctrl+Alt+S: Save annotations to current gameCtrl+Alt+D: Clear all annotations for current moveCtrl+Shift+D / ⌘+Shift+D: Clear all annotations for current gameShortcuts for managing chess engines:
Ctrl+E: Add engineShortcuts for database management and bulk operations:
Ctrl+Shift+F / ⌘+Shift+F: Search games across databasesCtrl+Shift+W / ⌘+Shift+W: Close search results tabCtrl+Shift+R / ⌘+Shift+R: Bulk replace tagsCtrl+Alt+T / ⌘+⌥+T: Bulk add/remove tagsCtrl+Shift+L / ⌘+Shift+L: Bulk clean PGNCtrl+Shift+U / ⌘+Shift+U: Deduplicate gamesCtrl+Shift+C / ⌘+Shift+C: Clear Clipboard databaseShortcuts for controlling PGN notation display:
Ctrl+M / ⌘+M: Toggle metadata displayCtrl+Shift+M / ⌘+Shift+M: Toggle comments displayCtrl+Shift+V / ⌘+Shift+V: Toggle variations displayCtrl+Shift+T / ⌘+Shift+T: Toggle non-standard tags displayCtrl+Shift+A / ⌘+Shift+A: Toggle annotations displayCtrl+R / ⌘+R: Toggle results displayThe config.json file controls all UI styling, layout dimensions, colors, fonts, and application-wide default settings. While the file is read-only from the application's perspective, you can manually edit it to customize CARA's appearance without modifying any source code.
The config.json file is located in the app/config/ directory and uses a hierarchical JSON structure. Colors are specified as RGB arrays with values from 0 to 255 (e.g., [217, 217, 217] for light gray). Font sizes are specified in points, and dimensions are in pixels.
To change the colors of the chessboard squares:
config.json in a text editor and navigate to: ui → panels → main → board → squares"light_color": [217, 217, 217] - Color for light squares (default: light gray)"dark_color": [58, 117, 196] - Color for dark squares (default: blue)"squares": {
"light_color": [240, 217, 181],
"dark_color": [181, 136, 99]
}
config.json before making changes. Invalid JSON syntax will prevent CARA from starting. Use a JSON validator or text editor with JSON syntax checking to ensure your changes are valid.
You can customize many other visual elements in config.json:
ui → panels → main → boardfont_family and font_size propertiesui → dialogsui → panelsui → panels → detail → moveslist → colorsCARA allows you to customize how PGN files are formatted when saving databases. The PGN export settings control whether move notation is wrapped at a fixed width or saved as a single line.
To configure PGN export formatting:
config.json in a text editor and navigate to: pgn → export"use_fixed_width": true - When true, move notation is wrapped at the specified width. When false, move notation is saved as a single continuous line."fixed_width": 80 - The character width limit when use_fixed_width is true. Default is 80 characters, which is a common standard for PGN files."pgn": {
"export": {
"use_fixed_width": true,
"fixed_width": 80
}
}
CARA allows you to configure how PGN files are processed when importing games. The PGN import settings control character handling during file loading.
To configure PGN import settings:
config.json in a text editor and navigate to: pgn → import"strip_pua_characters": true - When true, removes Unicode Private Use Area (PUA) characters (U+E000-U+F8FF) from PGN text during import. These characters are used by ChessBase and other chess software for special font symbols. When fonts don't support these characters, they appear as blue boxes or other visual artifacts. Setting this to true removes them automatically during import to ensure clean PGN text."pgn": {
"import": {
"strip_pua_characters": true
}
}
CARA allows you to customize the visual appearance of PGN notation in the Detail Panel, including colors, fonts, and how annotations and NAGs are displayed.
To customize PGN display formatting:
config.json in a text editor and navigate to: ui → panels → detail → pgn_notation → formattingElement Colors and Styling:
"headers" - Color and bold styling for PGN header tags (Event, Site, Date, etc.)"move_numbers" - Color and bold styling for move numbers (1., 2., etc.)"moves" - Color and bold styling for chess moves (e4, Nf3, etc.)"comments" - Color and italic styling for move comments"variations" - Color and italic styling for move variations (alternative lines)"results" - Color and bold styling for game results (1-0, 0-1, 1/2-1/2)Active Move Highlighting:
"active_move" - Background color, text color, and bold styling for the currently active move in the main line"active_move_variation" - Background color, text color, bold, and italic styling for the active move when it's in a variationAnnotation Display Settings:
"annotations.use_symbols" - When true, symbol-based annotations (!, !!, ?, ??, !?, ?!) are displayed as symbols. When false, they are displayed as text descriptions."annotations.good" - Color and bold styling for good move annotations (!)"annotations.bad" - Color and bold styling for poor move annotations (?)"annotations.interesting" - Color and bold styling for interesting move annotations (!?)"annotations.dubious" - Color and bold styling for dubious move annotations (?!)NAG (Numeric Annotation Glyph) Settings:
"nags.show_text" - When true, NAGs are displayed as readable text descriptions in parentheses (e.g., "good move", "poor move", "White has a slight advantage"). When false, NAGs are displayed as symbols or numbers."nags.color" - Text color for NAG text"nags.bold" - Whether NAG text is displayed in bold"nags.italic" - Whether NAG text is displayed in italic"formatting": {
"headers": {
"color": [100, 150, 255],
"bold": true
},
"moves": {
"color": [220, 220, 220],
"bold": false
},
"annotations": {
"use_symbols": true,
"good": {
"color": [100, 255, 100],
"bold": true
}
},
"nags": {
"color": [200, 150, 255],
"bold": false,
"italic": true,
"show_text": true
},
"comments": {
"color": [180, 200, 255],
"italic": true
},
"variations": {
"color": [180, 180, 180],
"italic": true
},
"results": {
"color": [255, 255, 100],
"bold": true
},
"active_move": {
"background_color": [100, 120, 180],
"text_color": [255, 255, 255],
"bold": true
}
}
The user_settings.json file stores your personal preferences and settings. While most settings are managed through the application interface, understanding the file structure can be helpful for advanced users who want to manually edit settings or transfer configurations between installations.
The file contains several main sections:
While you can manually edit user_settings.json, be aware that:
active_profile must reference a profile that exists in moves_list_profiles)The engine_parameters.json file stores engine-specific parameters and options for each configured chess engine. This file is automatically managed by the application, but understanding its structure can help with advanced engine configuration.
The file contains a dictionary mapping engine IDs to parameter configurations. Each engine entry includes:
evaluation, game_analysis, and manual_analysis tasksManual editing of engine_parameters.json is generally not recommended, as the application manages this file automatically. However, if you need to make advanced changes:
user_settings.jsonCARA uses several custom PGN metadata tags to store analysis data and annotations. Understanding these tags can help you work with CARA-generated PGN files in other applications or manually inspect the stored data.
When "Store Analysis results in PGN Tag" is enabled, CARA stores analysis data in compressed format:
The analysis data is stored as gzip-compressed JSON, then base64-encoded to ensure it's valid within PGN tag values. This keeps the PGN file size manageable while preserving all analysis information.
When annotations are saved to a game, CARA stores them in a similar compressed format:
Each annotation includes its type, position, color, size, rotation, and other properties. The data is compressed and encoded to keep PGN files clean and manageable.
These custom tags are automatically hidden from the PGN Notation Pane display to keep the move notation clean. They are always excluded from PGN view, regardless of the "Show Non-Standard Tags" setting. The tags remain in the PGN file and are preserved when saving databases.
This section covers common issues and their solutions.
If CARA fails to start, check the following:
config.json, verify the JSON syntax is valid. Use a JSON validator or text editor with JSON syntax checking. Restore from backup if needed.pip list to verify PyQt6, python-chess, requests, asteval, and charset-normalizer are present.python --version.If an engine fails validation:
If your settings aren't being saved:
user_settings.json and engine_parameters.jsonIf game analysis isn't working:
This section provides tips for optimizing CARA's performance, especially when working with large databases or performing intensive analysis.
Optimize engine performance by configuring appropriate parameters:
Improve performance when working with large databases:
Optimize your analysis workflow:
The following table describes all available columns:
| Column Name | Description |
|---|---|
| Basic Columns | |
| # | Move number (1, 2, 3, ...) |
| White | White's move in SAN notation |
| Black | Black's move in SAN notation |
| Comment | Move comments from PGN |
| Evaluation Columns | |
| Eval White | Evaluation after white's move (formatted as "+X.X" or "M{N}") |
| Eval Black | Evaluation after black's move (formatted as "-X.X" or "-M{N}") |
| CPL White | Centipawn loss for white's move. CPL measures evaluation lost by playing a move instead of the best move: CPL = |eval_after_best_move - eval_after_played_move| |
| CPL Black | Centipawn loss for black's move |
| CPL White 2 | CPL for white's move vs. PV2 (second-best engine move) |
| CPL White 3 | CPL for white's move vs. PV3 (third-best engine move) |
| CPL Black 2 | CPL for black's move vs. PV2 (second-best engine move) |
| CPL Black 3 | CPL for black's move vs. PV3 (third-best engine move) |
| Best Moves Columns | |
| Best White | Engine's best move suggestion for white (SAN notation) |
| Best Black | Engine's best move suggestion for black (SAN notation) |
| Best White 2 | Engine's second-best move (PV2) for white |
| Best White 3 | Engine's third-best move (PV3) for white |
| Best Black 2 | Engine's second-best move (PV2) for black |
| Best Black 3 | Engine's third-best move (PV3) for black |
| White Is Top 3 | "✓" if white's move matches any top 3 engine moves, empty otherwise |
| Black Is Top 3 | "✓" if black's move matches any top 3 engine moves, empty otherwise |
| Analysis Columns | |
| Assess White | Move quality assessment for white's move (Brilliant, Best Move, Good Move, Inaccuracy, Mistake, Blunder, Miss, or Book Move). Assessment thresholds are configurable in the classification settings. |
| Assess Black | Move quality assessment for black's move. Assessment thresholds are configurable in the classification settings. |
| White Depth | Engine search depth for white's move analysis |
| Black Depth | Engine search depth for black's move analysis |
| Material Columns | |
| White Capture | Piece captured by white's move (e.g., "P", "N", "R") |
| Black Capture | Piece captured by black's move (e.g., "P", "N", "R") |
| White Material | White's material balance in centipawns after move (calculated using piece values: Pawn: 100, Knight/Bishop: 300, Rook: 500, Queen: 900) |
| Black Material | Black's material balance in centipawns after move |
| Position Columns | |
| Eco | ECO code (opening classification, e.g., "B20") |
| Opening Name | Opening name from ECO database |
| FEN White | FEN string of position after white's move |
| FEN Black | FEN string of position after black's move |
CARA allows you to customize the formulas used to calculate estimated ELO ratings and accuracy percentages for players. These formulas are defined in config.json.
The formula configurations are located in config.json under the game_analysis section:
game_analysis → elo_estimation - Formula for estimating player ELOgame_analysis → accuracy_formula - Formula for calculating overall player accuracygame_analysis → phase_accuracy_formulas - Formulas for calculating phase-specific accuracy (opening, middlegame, endgame)Each formula configuration contains the following fields:
formula: A string containing the mathematical expression to evaluate. If omitted or empty, CARA uses the default formula.value_on_error: The value to return if the formula evaluation fails (default: 0 for ELO, 0.0 for accuracy)._examples: (Optional) A dictionary of example formulas for reference. These are not used by the application but serve as documentation.config.json before making changes. Invalid JSON syntax will prevent CARA from loading the configuration file. Formula evaluation errors will cause CARA to use the value_on_error value. If the formula field is missing or empty, CARA will use the default formula.
Variables for Overall Accuracy and ELO Formulas: The following variables are available for use in overall accuracy and ELO estimation formulas:
total_moves: Total number of moves in the game (integer)non_book_moves: Number of moves analyzed (excluding book moves) (integer)book_moves: Number of book moves (moves found in opening books) (integer)blunders: Number of blunders made by the player (integer)mistakes: Number of mistakes made by the player (integer)inaccuracies: Number of inaccuracies made by the player (integer)misses: Number of missed opportunities (e.g., missing a checkmate, missing a winning move, or missing a critical tactical opportunity) (integer)best_moves: Number of best moves played (integer)good_moves: Number of good moves played (integer)brilliant_moves: Number of brilliant moves played (integer)average_cpl: Average centipawn loss across all analyzed moves (float)median_cpl: Median centipawn loss across all analyzed moves (float)min_cpl: Minimum centipawn loss (best move) (float)max_cpl: Maximum centipawn loss (worst move) (float)blunder_rate: Blunder rate as a decimal (0.0 to 1.0) (float)mistake_rate: Mistake rate as a decimal (0.0 to 1.0) (float)accuracy: Calculated accuracy percentage (0.0 to 100.0) (float) - Note: This variable is only available in the ELO formula, not in the accuracy formula itself (to avoid circular dependency)has_won: 1 if the player won the game, 0 otherwise (integer)has_drawn: 1 if the game was a draw or had an undefined result, 0 otherwise (integer)opening_moves: Total number of moves in the opening phase (integer)middlegame_moves: Total number of moves in the middlegame phase (integer)endgame_moves: Total number of moves in the endgame phase (integer)average_cpl_opening: Average centipawn loss in the opening phase (float)average_cpl_middlegame: Average centipawn loss in the middlegame phase (float)average_cpl_endgame: Average centipawn loss in the endgame phase (float)Variables for Phase-Specific Accuracy Formulas: Phase-specific accuracy formulas (opening, middlegame, endgame) have access to all the variables above, plus the following phase-specific and overall comparison variables:
total_moves: Number of moves in this specific phase (integer) - Note: In phase formulas, this refers to the phase-specific move count, not the overall gameblunders: Number of blunders in this specific phase (integer)mistakes: Number of mistakes in this specific phase (integer)inaccuracies: Number of inaccuracies in this specific phase (integer)misses: Number of misses in this specific phase (integer)best_moves: Number of best moves in this specific phase (integer)good_moves: Number of good moves in this specific phase (integer)brilliant_moves: Number of brilliant moves in this specific phase (integer)blunder_rate: Blunder rate for this specific phase (0.0 to 1.0) (float)mistake_rate: Mistake rate for this specific phase (0.0 to 1.0) (float)average_cpl: Average centipawn loss for this specific phase (float) - Note: In phase formulas, this refers to the phase-specific CPLtotal_moves_overall: Total number of moves in the entire game (integer)non_book_moves_overall: Total number of analyzed moves in the entire game (integer)book_moves_overall: Total number of book moves in the entire game (integer)blunders_overall: Total number of blunders in the entire game (integer)mistakes_overall: Total number of mistakes in the entire game (integer)inaccuracies_overall: Total number of inaccuracies in the entire game (integer)misses_overall: Total number of misses in the entire game (integer)best_moves_overall: Total number of best moves in the entire game (integer)good_moves_overall: Total number of good moves in the entire game (integer)brilliant_moves_overall: Total number of brilliant moves in the entire game (integer)blunder_rate_overall: Overall blunder rate for the entire game (0.0 to 1.0) (float)mistake_rate_overall: Overall mistake rate for the entire game (0.0 to 1.0) (float)average_cpl (overall context): Overall average centipawn loss for the entire game (float) - Note: This is also available as a separate variable for comparison_overall suffix refer to statistics for that specific phase, while variables with the _overall suffix refer to statistics for the entire game. This allows you to compare phase performance against overall game performance.
The following functions are available in all formulas:
min(x, y): Returns the minimum of two valuesmax(x, y): Returns the maximum of two valuesabs(x): Returns the absolute value of a numberint(x): Converts a value to an integernot(x): Returns the logical negation of a value (1 if x is 0/false, 0 if x is non-zero/true)Standard mathematical operators are also supported: +, -, *, /, ** (exponentiation), and parentheses for grouping.
min() and max() functions in your formulas to ensure values stay within desired ranges. For example, to clamp accuracy between 5.0 and 100.0, use: max(5.0, min(100.0, your_formula))
The ELO estimation formula calculates an estimated ELO rating based on player performance. You should use max(0, ...) in your formula to ensure negative ELO values are not returned.
Default Formula:
"formula": "max(0, int(2800 - (average_cpl * 8.5) - ((blunder_rate * 50 + mistake_rate * 20) * 40)))"
Example Custom Formulas:
A simplified formula that only considers average centipawn loss:
"formula": "max(0, int(2800 - (average_cpl * 10)))"
Add a bonus for wins and a penalty for losses (when the player has not won and has not drawn):
"formula": "max(0, int(2800 - (average_cpl * 8.5) - ((blunder_rate * 50 + mistake_rate * 20) * 40) + (has_won * 50) - ((1 - has_won) * (1 - has_drawn) * 30)))"
Directly converts accuracy percentage to ELO (e.g., 90% accuracy ≈ 2520 ELO):
"formula": "max(0, int(accuracy * 28))"
The accuracy formula calculates a player's accuracy percentage. You should use max(min_value, min(100.0, your_formula)) in your formula to ensure the result stays within the desired range (typically 0.0 to 100.0, though the default formula uses 5.0 as the minimum).
Default Formula:
"formula": "max(5.0, min(100.0, 100.0 - (average_cpl / 3.5)))"
Example Custom Formulas:
A simplified formula with a different scaling factor:
"formula": "100.0 - (average_cpl / 2.0)"
Ensures accuracy never drops below 10%:
"formula": "max(10.0, 100.0 - (average_cpl / 3.0))"
Applies an additional penalty based on blunder rate:
"formula": "max(0.0, 100.0 - (average_cpl / 3.5) - (blunder_rate * 100))"
CARA supports separate accuracy formulas for each game phase (opening, middlegame, and endgame). These formulas are configured under game_analysis → phase_accuracy_formulas in config.json.
Each phase has its own formula configuration with the same structure as the overall accuracy formula:
phase_accuracy_formulas → opening → formula - Formula for opening phase accuracyphase_accuracy_formulas → middlegame → formula - Formula for middlegame phase accuracyphase_accuracy_formulas → endgame → formula - Formula for endgame phase accuracyDefault Phase Formulas:
"opening": {
"formula": "max(5.0, min(100.0, 100.0 - (average_cpl_opening / 3.5)))",
"value_on_error": 0.0
},
"middlegame": {
"formula": "max(5.0, min(100.0, 100.0 - (average_cpl_middlegame / 3.5)))",
"value_on_error": 0.0
},
"endgame": {
"formula": "max(5.0, min(100.0, 100.0 - (average_cpl_endgame / 3.5)))",
"value_on_error": 0.0
}
Example: Comparing Phase Performance to Overall Game:
"formula": "max(5.0, min(100.0, 100.0 - (average_cpl_opening / 3.5) - ((blunder_rate - blunder_rate_overall) * 30.0)))"
This formula penalizes the opening phase accuracy if the opening blunder rate is higher than the overall game blunder rate.
To customize a formula:
Locate the formula configuration:
Open config.json in a text editor and navigate to: game_analysis → elo_estimation, game_analysis → accuracy_formula, or game_analysis → phase_accuracy_formulas (for phase-specific formulas)
Modify the formula string:
Edit the "formula" field with your desired expression. For example:
"elo_estimation": {
"formula": "max(0, int(2800 - (average_cpl * 10)))",
"value_on_error": 0
}
Set error handling (optional):
Adjust "value_on_error" to specify what value should be returned if the formula evaluation fails. This is useful for debugging or providing fallback values.
Save and restart:
Save the file and restart CARA for the changes to take effect. The new formulas will be used for all game summaries and player statistics calculations.
value_on_error value.
When calculating player statistics across multiple games, CARA calculates ELO and accuracy for each individual game using the configured formulas, then averages these values. This approach ensures that each game contributes equally to the final statistics, regardless of game length or number of moves analyzed.
For example, if a player has three games with ELO estimates of 1800, 1900, and 2000, the player's average ELO will be 1900, not a single calculation based on all moves combined.