ULTRASTATS

v0.1.4·Updated 2026-05-19

Stat tracking, stat viewing, performance analysis, and run logging for ULTRAKILL. (UPDATE ID: FEATHER)

Screenshots 3 screenshots

About this mod Author’s original text

ULTRAKILL doesn't track run stats, this fix.

ULTRASTATS

ULTRASTATS is an all-in-one stat tracking, performance analysis, and data collection mod for ULTRAKILL.

Whether you speedrun, high round Cybergrind, play custom levels, or just want a better record of how you play, ULTRASTATS saves your run data and allows you to browse it in-game.

ULTRASTATS currently supports:

  • Campaign run logging
  • Cybergrind run logging
  • Custom level run logging through Angry Level Loader
  • A SQLite backed database for faster filtering, sorting, migration, and future analysis
  • An in-game main menu UI with INFO, STATS, and PLOTS tabs
  • A STATS tab for browsing saved runs without opening the raw database
  • A FILTERS window for narrowing down the displayed runs
  • An ANALYSIS window for averages, best values, standard deviations, and other useful summaries
  • PluginConfigurator options for data storage, logging preferences, menu behavior, UI defaults, and startup notices

Current Version

This plugin is currently on v0.1.2.

v0.1.0 is the first SQLite based release of ULTRASTATS. Older versions stored runs in many.jsonl files spread across difficulty, mode, campaign, and custom-level folders. New versions store runs in one database file:

ultrastats.db

Old.jsonl data can be migrated automatically. See Updating From Older Versions before deleting any old ULTRASTATS files.

Screenshots

These are from v0.0.15, the layout may be slightly different now.

Cybergrind stats:

Campaign stats:

Custom level stats:

The exact columns shown depend on the selected mode and filters. ULTRASTATS converts stored values into readable dates, times, waves, ranks, flags, level names, and difficulty names whenever possible.

Features

Run logging

  • Saves Campaign, Cybergrind, and Custom level runs
  • Stores all new run data in a SQLite database
  • Uses a queue/save flow designed to reduce endscreen overhead
  • Uses backup data from the game's stats display when FinalRank endscreen data is unusable
  • Supports custom difficulties instead of clamping difficulty values to only the base game range
  • Lets you enable or disable Campaign, Cybergrind, and Custom logging independently
  • Can optionally let you discard a pending endscreen run with a configurable key

In-game UI

  • Adds a main menu button that opens the ULTRASTATS UI
  • Includes INFO, STATS, and PLOTS tabs
  • Lets you choose which tab opens by default
  • Lets you choose the main menu button corner
  • Lets you choose the default STATS difficulty
  • Lets you browse runs by mode, difficulty, save slot, layer, bundle, and level
  • Includes a separate FILTERS window for more detailed filtering
  • Includes a separate ANALYSIS window for summaries of the currently displayed runs
  • Uses rank/flag coloring to make special runs easier to notice
  • Avoids showing the user's full OS username in displayed source paths

Data and analysis

  • Stores runs in ultrastats.db
  • Automatically creates the database when needed
  • Can migrate older.jsonl data into SQLite
  • Keeps old.jsonl files after migration instead of deleting them automatically
  • Stores campaign/custom ranks in a compact encoded format
  • Stores run flags as bit flags instead of many separate boolean columns
  • Removes redundant points earned logging because points can be derived from other saved values
  • Keeps custom level support optional so ULTRASTATS still works without Angry Level Loader

Requirements

Required:

  • BepInEx
  • PluginConfigurator

Optional:

  • Angry Level Loader for custom level support

If Angry Level Loader is not installed, ULTRASTATS still works for Campaign and Cybergrind. Custom level logging is simply unavailable.

Installation

If you already have a working ULTRAKILL mod setup, install ULTRASTATS like any other BepInEx plugin.

Quick install

  • Install BepInEx for ULTRAKILL.
  • Install PluginConfigurator.
  • Drop the ULTRASTATS plugin files into:

ULTRAKILL\BepInEx\plugins\

  • Launch ULTRAKILL.
  • Confirm the mod loaded by checking the BepInEx console or l

Install & use Install: BepInEx plugin

  1. The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
  2. Recommended: use a community mod manager (such as r2modman) — pick this game, import the mod, and the manager sets up BepInEx and its dependencies for you.
  3. Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
  4. Launch the game — the BepInEx console logs every plugin it loads; seeing this mod in the log means it is installed.

Mods with listed dependencies need those installed too, or they will not load. Options are usually changed in-game or in the plugin's config file.

Dependencies

Install these first, or the mod will not work:

BepInEx-BepInExPackEternalsTeam-PluginConfiguratorAtomSmasher-UKSQLite

File & checksum

Filename
ULTRASTATS-0.1.4.zip
File size
1.1 MiB
SHA-256
41ae066018e03594ebddbc4ae5adcab44ec5ca4b2f8705b0e46334bb78831eda
Stored at
2026-10-06 19:24