Nodes/Model Utility Toolkit/Diffusion Model Downloader
ComfyUI Node

Diffusion Model Downloader

Diffusion Model Downloader — make sense of a folder full of quant files

By silveroxides·Created about a year ago·Updated 4 days ago· 14
Diffusion Model Downloader
    • status
    subdirectory/
    recursivetrue
    nsfw_levelAll
    max_examples0
    threads4
    api_key

    The diffusion_models folder is where things get chaotic fastest. It's the raw-UNet/DiT side of the model world - no baked VAE, no baked text encoder, just the diffusion weights - and it's exactly the folder that fills up with quantized variants: fp8, GGUF Q4/Q5/Q8, three different people's re-uploads of the same base model with slightly different filenames. This node scans that folder, works out what each file actually is against a hosted database, and pulls down metadata, preview images, and workflows so DiffusionModelInfoLoader has something real to show you later instead of a filename and a guess.

    It's one of four ModelUtils/Downloader nodes in this pack, and it's worth knowing that its author, silveroxides, is a known name specifically in the GGUF-quant corner of this community - their Chroma-GGUF repo on HuggingFace gets pointed to directly in threads as one of the trusted sources ("GGUF existed for a long time," someone linked it, was the whole reply). It's not hard to believe this node exists because the person building it was already sitting on a folder of quant files with no easy way to tell them apart.

    How it works. Same shape as its siblings: it scans, hashes, and matches against an online model repository. The nsfw_level filter and api_key requirement point at CivitAI's own vocabulary specifically, so that's the most likely destination, though the README doesn't name it explicitly.

    Inputs that matter. subdirectory (default /) is the folder under your diffusion-models directory to scan. recursive (default on) walks into subfolders. nsfw_level (default "All") filters by content rating. max_examples (0–100, default 0) caps example images/workflows pulled per model - bump this up if you actually want previews to browse later rather than just metadata. threads (1–32, default 4) sets parallelism; a big folder of quant variants benefits from turning this up. api_key unlocks gated content.

    Output. status (STRING) - a run summary. This is an output node: ComfyUI treats it as a terminal step and runs it regardless of whether status is wired anywhere, same as a Save Image node.

    Installing it. Through ComfyUI Manager (search "Model Utility Toolkit"), or manually:

    cd ComfyUI/custom_nodes
    git clone https://github.com/silveroxides/ComfyUI-ModelUtils
    

    then restart ComfyUI.

    Troubleshooting. The specific failure mode to expect here, more than with checkpoints: quantized files often don't have their own listing distinct from the full-precision original. A GGUF quant of a model someone else published might come back empty even though the base model is perfectly findable, because the quant itself was never uploaded as its own listing anywhere this node can match against. That's not a bug, it's just what's out there. max_examples set to 0 (the default) will also give you status output with essentially no preview material to browse afterward - raise it if the point of running this was to actually see example renders, not just confirm a match. And as with the other downloaders, a file that got re-saved at a different precision has a different hash and won't match its old listing even if it's "the same" model in every way that matters to you.

    CategoryModelUtils/Downloader

    Inputs (6)

    NameTypeDefaultDescription
    subdirectoryCOMBO/1 options: /
    recursiveBOOLEANtrueWhether to scan subdirectories recursively.
    nsfw_levelCOMBOAllFilter models based on NSFW level in metadata.
    max_examplesINT00–100Maximum number of examples to process.
    threadsINT41–32Number of threads to use for processing.
    api_keySTRINGAPI key for accessing the model repository.

    Outputs (1)

    NameTypeDescription
    statusSTRING