Per-game metrics, all-time tracking, personal bests, and custom formula stats.
Stats Window
Toggle with S. Updates live during play. Rows are draggable to reorder; presets control category visibility. The PB column compares the current game against your records. The window can follow the game window position (stats_window_follows_game). All-time stats open with Alt+S.
Per-Game Metrics
Board
Metric
Variable
Description
3BV
total_3bv
Board Bechtel Value — minimum clicks needed to clear the board optimally. Each opening (zero-flood region) counts as 1; each exposed numbered tile not cleared by an opening also counts as 1.
Solved 3BV
solved_3bv
3BV cleared so far in the current game
Openings
openings
Count of distinct zero-tile flood-fill regions on the board
Islands
islands
Numbered regions fully surrounded by zero tiles
Tiles revealed
tiles_revealed
Total tiles uncovered, including flood-fill reveals
Flood reveals
flood_reveals
Tiles uncovered automatically by zero flood-fill
Speed
Metric
Formula
Notes
Time
—
Elapsed seconds from first click to win/loss
3BV/s
3BV ÷ time
Standard competitive speed metric; only finalizes on a win
Projected 3BV/s
solved_3BV ÷ time
Current solve rate; live during play
Projected win time
3BV ÷ (solved_3BV / time)
Estimated finish time at current pace
QG (Quality Grade)
time1.7 ÷ 3BV
Lower is better. Penalizes slow times non-linearly; comparable across board sizes.
STNB
completion × K ÷ QG
Higher is better. K is a board-size constant (Beginner 47.3, Int 153.7, Expert 435.0). Arbiter-compatible formula.
Ce/s
effective_clicks ÷ time
Effective click rate; clicking speed on useful inputs only
Throughput
solved_3BV ÷ effective_clicks
3BV cleared per effective click
Efficiency
Metric
Formula
Notes
IOE
solved_3BV ÷ total_clicks
Index of Efficiency. Max theoretical value is 1.0. Measures how many clicks were "wasted".
IOS
log(3BV) ÷ log(time)
Index of Speed. log-ratio of board difficulty to time; higher is better.
RQP
time × (time + 1) ÷ 3BV
Rank & Quality Points. Lower is better. Penalizes extra time quadratically.
Correctness
effective_clicks ÷ total_clicks
Fraction of all clicks that revealed a tile
CL (Click Level)
total_clicks ÷ time
Raw click rate (clicks per second)
MOV
cursor_path (px) ÷ time
Mouse speed in pixels per second
SAO
MOV × Ce/s
Solving ability: combines mouse speed with effective click rate
OBV
—
Optimized Board Value — difficulty-adjusted 3BV accounting for board structure
Inputs
Metric
Variable
Description
Total clicks
total_clicks
All mouse button events recorded
Left clicks
left_clicks
Left mouse button presses
Right clicks
right_clicks
Right mouse button presses
Middle clicks
middle_clicks
Middle mouse button presses
Effective clicks
effective_clicks
Clicks that directly revealed at least one tile
Chords
chords
Total chord attempts (simultaneous left+right or middle click)
Effective chords
effective_chords
Chords that revealed tiles
Safety chords
safety_chords
Chords where all adjacent covered tiles were flagged; revealed nothing
Failed chords
failed_chords
Chords that detonated a mine
Tiles by chord
tiles_cleared_by_chording
Total tiles uncovered through chords
Flags placed
flags_placed
Right-click flag placements
Removed flags
false_flags
Flags that were removed (placed then taken off)
Cursor path
path
Total mouse travel distance in pixels
All-Time Stats
Accumulates across all non-assisted, non-seeded, non-daily games. Open with Alt+S. Pausing is available via pause_alltime_recording in settings.
Global Totals
Stat
Description
Games played / won / lost
Lifetime game counts
Total playtime
Sum of all game times in milliseconds
Tiles revealed
All tiles uncovered, all games
Flood reveals
Tiles uncovered by zero flood-fill, all games
Flags placed
Total flags placed, all games
Misflags
Total flags removed, all games
Chords
Total chord attempts
Failed chords
Chords that detonated a mine
Left / right / middle clicks
Click totals by button
3BV solved
Cumulative 3BV cleared across all games
Smiley clicks
Times the restart button was clicked
Runs abandoned
Games ended without a win or loss (closed mid-game)
Perfect games
Wins with no misflags
No-flag wins
Wins completed without placing any flags
Records
Stat
Description
Best time (per difficulty)
Fastest win time in milliseconds
Best 3BV (per difficulty)
Highest 3BV board cleared
Best 3BV/s (per difficulty)
Highest 3BV/s achieved on a win
Best 3BV/s time (per difficulty)
Time of the best-3BV/s game
Best 3BV/s board (per difficulty)
3BV of the best-3BV/s game
Best win streak (global + per difficulty)
Longest consecutive win run
Per-Difficulty Totals
Available for Beginner, Intermediate, and Expert independently:
Stat
Description
Games played / won / lost
Game counts for this difficulty
Playtime (all games)
Total time across all games at this difficulty
Playtime (wins only)
Total time on winning games only
3BV total
Sum of board 3BV across all games
3BV total (wins only)
3BV solved on completions only
3BV solved
Actual 3BV cleared at this difficulty
Left / right / middle clicks
Click totals for this difficulty
Clicks (wins only)
Per-button click totals on winning games
Current win streak
Active win streak at this difficulty
Best win streak
Best win streak at this difficulty
Abandoned time
Cumulative time spent on abandoned runs
Streaks
Stat
Description
Current win streak
Consecutive wins across all difficulties
Best win streak
Record consecutive wins across all difficulties
Current loss streak
Consecutive losses across all difficulties
Current play streak
Consecutive days with at least one game played
Best play streak
Record consecutive play days
Last play date
Ordinal date of the last recorded game (days since 0001-01-01)
Personal Bests
Three PB popup types, each independently toggleable in settings:
Type
Setting Key
Best time
pb_popup_rtime
Best 3BV/s
pb_popup_3bvs
Win streak
pb_popup_streak
Excluded from PBs: assisted runs (automation features on), seeded runs (loaded seed / Ctrl+R / replay library), and daily challenge runs.
Custom Stats
Custom stats appear under a “Custom” category in the stats window and evaluate live during play. Defined in Settings > Custom Stats.
All variables available in custom stat formulas. All-time variables are prefixed with alltime_.
Per-Game Variables
Variable
Type
Description
elapsed_time
float (s)
Game duration in seconds
total_clicks
int
Total input clicks
left_clicks
int
Left mouse clicks
right_clicks
int
Right mouse clicks
middle_clicks
int
Middle mouse clicks
effective_clicks
int
Clicks that revealed at least one tile
chords
int
Total chord attempts
effective_chords
int
Chords that revealed tiles
safety_chords
int
Chords where all neighbors were already flagged; nothing revealed
failed_chords
int
Chords that hit a mine
tiles_cleared_by_chording
int
Tiles uncovered via chords
flags_placed
int
Flags placed
false_flags
int
Flags removed after placement
tiles_revealed
int
Total tiles uncovered
flood_reveals
int
Tiles revealed by zero flood-fill
total_3bv
int
Board 3BV
solved_3bv
int
3BV cleared so far
threebv_s
float
3BV ÷ time
projected_threebv_s
float
solved_3BV ÷ time (live projection)
projected_win_time
float (s)
3BV ÷ current_rate
ioe
float
solved_3BV ÷ total_clicks
ios
float
log(3BV) ÷ log(time)
rqp
float
time × (time + 1) ÷ 3BV
correctness
float
effective_clicks ÷ total_clicks
throughput
float
solved_3BV ÷ effective_clicks
ces
float
effective_clicks ÷ time
cl
float
total_clicks ÷ time
openings
int
Zero-tile flood-fill regions on the board
islands
int
Numbered regions surrounded by zeros
path
int (px)
Total cursor travel in pixels
mov
float
path ÷ time (pixels/second)
qg
float
time1.7 ÷ 3BV
stnb
float
completion × K ÷ QG (Arbiter formula)
obv
float
Optimized Board Value
sao
float
MOV × Ce/s
result
str
"Won", "Lost", or "" (in progress)
difficulty
str
"Beginner", "Intermediate", "Expert", or "Custom"
Runtime Aliases
Alias
Equivalent
time
elapsed_time
3bv
total_3bv
3bvs
threebv_s
clicks
total_clicks
won
1 if result == "Won", else 0
lost
1 if result == "Lost", else 0
beg
1 if difficulty == "Beginner"
int
1 if difficulty == "Intermediate"
exp
1 if difficulty == "Expert"
All-Time Variables
Global totals (prefix alltime_):
Variable
Type
Description
alltime_total_games_played
int
Lifetime games played
alltime_total_games_won
int
Lifetime wins
alltime_total_games_lost
int
Lifetime losses
alltime_total_playtime_ms
int
Total playtime in milliseconds
alltime_total_tiles_revealed
int
All tiles uncovered, all games
alltime_total_flood_reveals
int
Flood-fill tiles, all games
alltime_total_flags_placed
int
Flags placed, all games
alltime_total_chords
int
Total chord attempts
alltime_total_failed_chords
int
Chords that detonated a mine
alltime_total_left_clicks
int
Total left clicks
alltime_total_right_clicks
int
Total right clicks
alltime_total_middle_clicks
int
Total middle clicks
alltime_total_misflags
int
Total flags removed
alltime_total_3bv_solved
int
Cumulative 3BV cleared
alltime_total_smiley_clicks
int
Restart button clicks
alltime_total_runs_abandoned
int
Mid-game quits
alltime_total_perfect_games
int
Wins with zero misflags
alltime_total_no_flag_wins
int
Wins with zero flags placed
alltime_current_win_streak
int
Active win streak (all difficulties)
alltime_best_win_streak
int
Record win streak (all difficulties)
alltime_current_loss_streak
int
Active loss streak
alltime_current_play_streak
int
Active play-days streak
alltime_best_play_streak
int
Record play-days streak
Records (replace [d] with beginner, intermediate, or expert):
Variable
Type
Description
alltime_best_[d]_time
int (ms)
Best win time
alltime_best_[d]_3bv
int
Highest 3BV board cleared
alltime_best_[d]_3bvs
float
Best 3BV/s achieved
alltime_best_[d]_3bvs_time
int (ms)
Time of the best-3BV/s game
alltime_best_[d]_3bvs_3bv
int
3BV of the best-3BV/s game
Per-difficulty totals (replace [d] with beginner, intermediate, or expert):
Variable
Type
Description
alltime_[d]_games_played
int
Games at this difficulty
alltime_[d]_games_won
int
Wins at this difficulty
alltime_[d]_games_lost
int
Losses at this difficulty
alltime_[d]_playtime_ms
int (ms)
Total playtime at this difficulty
alltime_[d]_playtime_ms_won
int (ms)
Playtime on wins only
alltime_[d]_total_3bv
int
Sum of board 3BV across all games
alltime_[d]_total_3bv_won
int
3BV on winning games only
alltime_[d]_total_3bv_solved
int
3BV actually cleared at this difficulty
alltime_[d]_total_left_clicks
int
Left clicks at this difficulty
alltime_[d]_total_right_clicks
int
Right clicks at this difficulty
alltime_[d]_total_middle_clicks
int
Middle clicks at this difficulty
alltime_[d]_total_left_clicks_won
int
Left clicks on wins only
alltime_[d]_total_right_clicks_won
int
Right clicks on wins only
alltime_[d]_total_middle_clicks_won
int
Middle clicks on wins only
alltime_[d]_current_win_streak
int
Active win streak at this difficulty
alltime_[d]_best_win_streak
int
Record win streak at this difficulty
alltime_[d]_abandoned_time_ms
int (ms)
Time spent on abandoned runs
Disabled Variables
Present in the codebase but currently return 0: zini, hzini, zne, hzne, znt, hznt, iome, ce.
Data Storage
SQLite database, WAL mode. Writes are queued on a background thread to avoid UI stalls. On first run the database migrates automatically from the game directory to a platform-specific path.
Platform
Path
Windows
%LOCALAPPDATA%\BetterMinesweeper\stats.db
Linux
~/.config/BetterMinesweeper/stats.db
Set pause_alltime_recording in settings to suspend recording without clearing history.