Nodes/ComfyUI-Studio-nodes/πŸ€— HuggingFace Model Downloader Pro
ComfyUI Node

πŸ€— HuggingFace Model Downloader Pro

Download HuggingFace models without leaving the graph

By comfyuistudioΒ·Created about a year agoΒ·Updated 5 months agoΒ· 4
πŸ€— HuggingFace Model Downloader Pro
    • status_report
    • download_history
    β—„download_linkshttps://huggingface.co/StableDiffusionVN/Flux/resolve/main/Vae/flux_vae.safetensors vae flux_vae.safetensorsβ–Ί
    β—„auto_downloadtrueβ–Ί
    β—„max_concurrent_downloads3β–Ί
    β—„max_download_speed_mbps0.0β–Ί
    β—„enable_resumetrueβ–Ί
    β—„validate_filesfalseβ–Ί
    β—„enable_notificationstrueβ–Ί
    β—„auto_organizefalseβ–Ί
    β—„hf_tokenβ–Ί

    Getting a model into ComfyUI usually means: find the file on HuggingFace, click through folders, hit download, wait, then move the file into the right models/ subfolder and restart. If you've done that a few dozen times you start to hate it, which is why every model-downloader node exists. HuggingFaceDownloader ("HuggingFace Model Downloader Pro") is a reasonably polished take on the genre: paste multiple direct file URLs, and it downloads them straight into the right ComfyUI model folders, threaded, with resume support and progress output.

    This one is not a huggingface_hub wrapper. It uses plain requests with streaming downloads - which means it works with any direct file URL, not just HF's API, and it's why there's no extra huggingface_hub dependency to install. It also means it's only as polite as you are: no fancy repo-resolution, no diff/allowlist logic. You give it exact file links and it fetches them.

    The format

    download_links is a multiline box, one download per line, whitespace-separated:

    https://huggingface.co/org/model/resolve/main/file.safetensors vae my_vae.safetensors
    https://huggingface.co/org/other/resolve/main/model.ckpt checkpoints
    

    That's URL folder [filename]. The folder is relative to your ComfyUI models/ directory, and the filename defaults to whatever's at the end of the URL if you omit it. The default example line (flux_vae.safetensors vae) should make the pattern click immediately - this is the "fetch the one file I need" workflow.

    Inputs that matter

    • download_links - the list, as above. Each line needs at least URL and folder.
    • auto_download (default on) - off means it just checks and reports what would download. Handy for dry-running a list.
    • max_concurrent_downloads (1–10) - how many threads run at once. 3 is fine; big files benefit from a couple of parallel streams, not ten.
    • max_download_speed_mbps (default 0) - 0 means unlimited. Set it if you're saturating a shared connection.
    • enable_resume (default on) - interrupted downloads continue from where they stopped via a .tmp file and an HTTP Range request. This one earns its keep on multi-gigabyte checkpoints.
    • auto_organize (default off) - when on, the node routes files by extension: .safetensors, .ckpt, .pt, .bin, .pth all go to checkpoints/, and it falls back to filename keyword matching for vae, loras/lycoris, controlnet, embeddings. It's a nice touch, but read the mapping before trusting it - every .pt file in your list is going to checkpoints, whether it's a LoRA or not.
    • hf_token (optional) - needed for gated repos. Sent as a Bearer header. Same caveat as any token stored in workflow JSON: it's in plaintext in the file.

    Outputs are status_report (per-line results) and download_history (a summary the node keeps in .hf_download_history.json inside your models dir). Both are strings; stick them in a text display to read the report in the UI.

    Where people trip up

    The whitespace-separated format is the main footgun: a filename or folder with a space breaks parsing, so rename or rename-while-downloading (vae my file.safetensors won't work - use my_file.safetensors). Also note it skips files that already exist unless validate_files is on, and even then validation is by byte size (with an optional SHA-256 check). Size mismatch β†’ it re-downloads, which is usually what you want for a truncated file.

    And a realism note: this node downloads files you paste URLs for, not "the latest Flux dev" by name. If you want repo-level resolution or model search, this isn't it - it's the paste-a-link-and-walk-away tool, and it's good at that narrow job.

    Install

    cd ComfyUI/custom_nodes
    git clone https://github.com/comfyuistudio/ComfyUI-Studio-nodes
    

    Restart and it's under "STUDIO NODES". It needs requests, which ComfyUI already ships - nothing extra to install. Small pack, single commit, skim huggingfacedownloader.py if you want to confirm the resume and auth behavior before handing it a token.

    CategorySTUDIO_NODES

    Inputs (9)

    NameTypeDefaultDescription
    download_linksSTRINGhttps://huggingface.co/StableDiffusionVN/Flux/resolve/main/Vae/flux_vae.safetensors vae flux_vae.safetensorsβ€”
    auto_downloadBOOLEANtrueβ€”
    max_concurrent_downloadsINT31–10β€”
    max_download_speed_mbpsFLOAT0.00–1000β€”
    enable_resumeBOOLEANtrueβ€”
    validate_filesBOOLEANfalseβ€”
    enable_notificationsBOOLEANtrueβ€”
    auto_organizeBOOLEANfalseβ€”
    hf_tokenoptSTRINGβ€”

    Outputs (2)

    NameTypeDescription
    status_reportSTRINGβ€”
    download_historySTRINGβ€”