A GUI tool to detect and clean up unused Koikatsu (KK) zipmods and BepInEx plugins, based on card-usage data exported from KKManager. It detects mods/plugins whose card-usage count is at or below a user-defined threshold, then lets you Pack (move aside), Undo Pack (restore), or Remove them.
Renamed from
KKModsCleaner, which was itself renamed fromKKUnusedModsRemoverPacker. KKCleaner adds BepInEx plugin (.dll/.dl_) support on top of the original zipmod cleaning.
The interface supports 6 languages (in-app text is machine-translated): English, 繁體中文, 简体中文, 日本語, 한국어, Русский.
- Zipmod cleaning — reads a KKManager Zipmod usage CSV and finds low-usage
.zipmodfiles. - Plugin cleaning — reads a KKManager Plugin usage CSV and matches BepInEx
.dll/.dl_files by theirBepInPluginGUID (read via Mono.Cecil). - Three actions: Pack, Undo Pack, Remove.
- Custom … Only checkbox to restrict operations to the root folder (skip subfolders).
- Drag-and-drop or browse to load the CSV.
-
Windows, Python 3.8+
-
.NET runtime (required by pythonnet / Mono.Cecil for reading plugin DLLs)
-
Python packages:
pip install -r requirements.txt(
tkinterdnd2,chardet,pythonnet) -
Mono.Cecil.dllmust sit next toKKCleaner.py(it is included in this repo and required at runtime).
-
Export a CSV from KKManager
- Open KKManager → select a folder →
Tools→Export to csv... - For mods: choose Zipmod usage (including unused).
- For plugins: choose the plugin/usage export.
- KKCleaner auto-detects whether the CSV is a mod or plugin export.
- Open KKManager → select a folder →
-
Load the CSV — drag it onto the window or click to browse.
-
Set the threshold (Minimum Card Usages, default
0) and click Detect. The min/max usage range is shown next to the input. Items with usage at or below the threshold are selected. -
Enter the mod/plugin folder path (type it or use Browse).
-
Choose an action and click Run:
- Pack — move low-usage items into a
low_usage_mods/low_usage_pluginsfolder (created automatically). - Undo Pack — move packed items back to their original locations.
- Remove — delete detected low-usage items (asks for confirmation first).
- Pack — move low-usage items into a
-
Custom … Only (optional) — when checked, only files in the root of the given folder are affected; subfolders are skipped.
- Undo Pack is in-memory only. The original paths of packed files are kept only in the running process (
self.moved_files). If you close KKCleaner after packing, those packs can no longer be undone on the next launch. - Remove cannot be undone. Only Pack is reversible — use Remove with care.
- Detection may be flagged by antivirus. Reading DLL metadata via Mono.Cecil can trip heuristics; temporarily allow-list or disable AV if needed.
- KKManager exports a single GUID per mod (typically the lowest version), and disabled mods still report their real usage count.
Licensed under the MIT License.
Contributions are welcome — open an issue or submit a pull request.