Bubba Checkpoint Fingerprint
Bubba Checkpoint Fingerprint
- checkpoint_name
- sha256
- short_hash
- file_size_bytes
- modified_at
- info
This is the most boring node in Bubba Nodes, and it's also one of the most useful if you merge or download checkpoints. Bubba Checkpoint Fingerprint takes a checkpoint file and tells you exactly what it is: a SHA-256 hash, a short 10-character version of it, the file size in bytes, the last-modified time, and a summary string - all without loading the model into VRAM. No pipe, no conditioning, no image. Pick a checkpoint, read the numbers.
Why you'd want a file's hash at all
Because in the checkpoint world, filenames lie. People rename files, re-upload them, and version-checkpoint names are marketing, not identity. The SHA-256 of a multi-gigabyte file is as close to a fingerprint as this hobby gets: two files with the same hash are the same bytes, full stop. The short hash is the practical one - it's the 10-character prefix, the same shape as the "model hash" Civitai and A1111 tooling use to tag which model produced an image. Wire short_hash into a filename builder or a metadata note and every save tells you which weights made it.
It's also the honest way to compare "is this the same model as the one on my other machine?" - hash both, compare, done. And when you're about to merge two checkpoints you've had for a while, confirming you're merging the files you think you are saves you from that special disappointment of spending twenty minutes blending the wrong model.
What comes out
checkpoint_name- the display name (filename without the extension).sha256- full 64-char hash.short_hash- 10-character prefix, the bit you'll actually use.file_size_bytes- an INT, handy if you want a node to compare or log it.modified_at- the file's mtime as a string.info- all of the above plus the full path, in one blob for easy display or a log.
There's a real gotcha to know: hashing a ~7GB SDXL checkpoint is not instant. The node reads the whole file in 1MB chunks, so the first run on a given file takes a while - think tens of seconds on a decent SSD, worse on spinning disk or network storage. The good news is it's cached: the pack remembers the hash keyed on path, size, and mtime, so subsequent runs are effectively free until the file actually changes. Leave it in the graph; it won't slow you down after the first pass.
The merge workflow it belongs to
This node lives in the "Bubba Nodes/Merge" category for a reason. The pack's merge toolchain is: Bubba Checkpoint Merge blends two checkpoints → Bubba Merge Naming Helper builds a filename → Bubba Save Checkpoint writes the safetensors. Fingerprint is the quality gate at the front of that chain - hash your inputs, then hash your merged output afterward to confirm the file on disk is what the workflow says it produced. It's also handy before uploading anywhere, since Civitai's uploader wants a model hash and this gives you the honest one.
Install
Same pack as everything else here - ComfyUI Manager, search "Bubba Nodes", or:
cd ComfyUI/custom_nodes
git clone https://github.com/bubbafett5611/Bubba_Nodes
then restart. The pack registers nodes through ComfyUI's newer V3 API, so it wants ComfyUI 0.27.0+; if the node doesn't show up, update ComfyUI first. No extra Python dependencies for this node beyond the pack's aiohttp/pydantic requirements - the hashing is pure standard library.
If the info output shows a file you don't recognize, that's the signal: the drop-down lists every checkpoint in your models folder, including half-downloaded files and ones you forgot you had. Hash a couple of suspects and you'll finally know which of those "checkpoint" files is actually a 2GB partial download.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| checkpoint | COMBO | 0 options: |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| checkpoint_name | STRING | — |
| sha256 | STRING | — |
| short_hash | STRING | — |
| file_size_bytes | INT | — |
| modified_at | STRING | — |
| info | STRING | — |