Model Usage Counter
The Node That Tells You Which Models You Actually Use
Every ComfyUI regular eventually asks the same quiet question: of the 40 checkpoints in my models/checkpoints folder, which ones do I actually reach for? ComfyUI has no answer built in. Manager tells you what's installed, not what's used - and meanwhile your SSD fills up, you wonder whether that old LoRA is worth keeping, and you delete games to make room. Model Usage Counter is a tiny utility node built for exactly this: drop it on the graph, generate as normal, and it keeps a running tally of every model you use and when you last used it.
First thing to get straight: it does nothing to your images. It has no input ports and no output ports, it's not wired into your pipeline, and it won't touch your sampler settings. It's an observer. You place it anywhere on the canvas, hit Queue, and forget it exists until you need to know the answer.
How it watches without touching anything
Mechanically, this is a V3-schema node built on comfy_api.latest - the newer backend node API, not the old INPUT_TYPES / NODE_CLASS_MAPPINGS style. That's not trivia; it means the pack's pyproject.toml requires ComfyUI >= 0.20.1, so on an outdated install the node simply won't be there. If your ComfyUI is regularly updated, you're fine.
Because it's an output node, ComfyUI runs it on every generation and hands it the full prompt graph through a hidden prompt input. It walks that graph, finds the loader nodes that actually executed, reads the model names off them, bumps a per-model counter, and writes everything to model_usage.json. A fingerprint_inputs() that returns the current time stops the execution cache from skipping it - the same always-rerun trick any clock or counter node uses - so counts grow even when you regenerate the same prompt twice. In the source it's declared not_idempotent for the same reason.
What it counts is a curated list, not the whole ecosystem: CheckpointLoaderSimple, UNETLoader, and the two built-in LoRA loaders, plus the popular third-party ones - rgthree's Power Lora Loader, pysssss's Custom-Scripts Lora Loader, and LoRA Manager's loader. Everything lands in one of three buckets: checkpoint, unet, lora. For loaders that bundle several LoRAs at once, only the ones toggled on are recorded, each separately. If your go-to loader isn't on the list - a GGUF loader, say - it won't be counted. That's a hard limit, and the author's answer is to add a line to LOADER_KEYS in __init__.py yourself. A name only counts if it actually exists in your folder_paths folders, so junk strings can't bloat the JSON.
No ports is the whole feature
Check the node's schema and you'll find required: {}, optional: {}, outputs: []. Nothing to wire, nothing to set - the entire interface is the summary rendered on the node body: count / last used / elapsed / model, ordered most-recently-used first. The display even follows your ComfyUI locale (English or Japanese). On workflow load it fetches the current totals from a tiny GET /muc/summary route, and after each generation the node updates in place. The data lives in ComfyUI/user/model-usage-counter/model_usage.json - deliberately not the output folder, which can be served over HTTP - so it survives updates and reinstalls of the node itself.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/tricksterzero/comfyui-model-usage-counter.git
Then restart ComfyUI. Or use ComfyUI-Manager and search for "Model Usage Counter" / install by Git URL. There's nothing else to do: no model downloads, no extra Python packages - the whole thing is the standard library plus ComfyUI's own API. That's the entire dependency story, and it's refreshing.
Gotchas worth knowing
batch_countinflates counts. Usage is counted per image, not per workflow run. Generate 4 at once and the counter jumps by 4. If you batch a lot, treat the numbers as usage weight, not runs.- Duplicate loaders each count. Two
CheckpointLoaderSimplenodes in one graph both increment - which mirrors reality, but surprised at least one person. - Multiple MUC nodes count once. If you sprinkle several on a graph, only the one with the smallest node id does the incrementing, so totals are never multiplied by node count.
- "(no target loaders found)" on the node means your graph uses loaders it doesn't track. Check the list above.
It's a bookkeeping node with a narrow job, and it does that job with zero dependencies and no telemetry of its own. If you've ever stared at a 200 GB models folder wondering what you're hoarding, it's worth the thirty-second install.
Inputs (0)
No inputs
Outputs (0)
No outputs