Nodes/ComfyUI_HuggingFace_Downloader/Hugging Face Download Model
ComfyUI Node

Hugging Face Download Model

Paste a Hugging Face link into your graph and stop leaving ComfyUI to fetch models

By jnxmx·Created 2 years ago·Updated 27 days ago· 29
Hugging Face Download Model
    • model name
    ◄target_folder▾►
    â—„linkâ–º

    There's a genre of ComfyUI frustration that goes: you load a workflow, hit Run, and it tells you some model is missing. So you tab out, find the repo on Hugging Face, download a 7 GB file, drag it into the right folder, refresh dropdowns, and hope the path matches what the workflow expects. This node kills most of that chore. Paste a Hugging Face resolve link into it, pick where the file should land, and the next run downloads it straight into your models/ folder and refreshes the dropdowns so it's usable immediately.

    It ships in jnxmx/ComfyUI_HuggingFace_Downloader, which is really two things: a pair of download nodes (this one and its sibling, Hugging Face Download Folder) plus a whole top-menu toolkit for auto-downloading missing models, browsing a model library, and backing up your ComfyUI install to a HF repo. For the "I just want this file, now" case, the node is the part you'll actually touch.

    How it works

    The whole node is two inputs and a side effect. You give it a link and a target_folder; on execution it parses the link, downloads the file, clears ComfyUI's model cache, and fires an event that makes the loader dropdowns refresh. No API key, no separate CLI step - the fetching is done by huggingface_hub under the hood.

    As you type, the link field normalizes itself: drop in a resolve/blob/tree URL or even shorthand like openai/clip-vit-large-patch14/..., and it rewrites to a clean repo/subfolder/file view. If the URL is a direct non-HF https:// file link, it streams that instead - handy for one-off downloads from outside the Hub.

    The inputs that matter

    • link - the only thing you really set for a one-off. Full resolve URLs work best.
    • target_folder - a dropdown populated from your actual model folders (checkpoints, loras, diffusion_models, vae, …). Pick custom to type an arbitrary path.

    That's it - there are no other inputs.

    The model name output is a plain string (wildcard type) returning the downloaded filename. It's not really meant to drive anything downstream - the download is the point, and the node is marked as an output node so it runs standalone. Wire it into a Show Text/display node if you want to see what landed.

    Installing

    Via ComfyUI Manager, search for "Hugging Face Download & Backup" (the registry display name) or the repo title, install, restart. Manual route:

    cd ComfyUI/custom_nodes
    git clone https://github.com/jnxmx/ComfyUI_HuggingFace_Downloader
    cd ComfyUI_HuggingFace_Downloader
    pip install -r requirements.txt
    

    Then restart ComfyUI. Heads up on dependencies: huggingface_hub and PyYAML are light, but the pack also pulls in comfy-cli - a whole CLI toolchain that feels like overkill for a download node. It's there for the pack's backup/snapshot features, not for this node.

    Troubleshooting

    • Gated repos. Public repos need no token. For gated ones, set downloader.hf_token in ComfyUI settings or export HF_TOKEN. Note the pack monkeypatches huggingface_hub to silently retry anonymous downloads on 401/403 - usually harmless, occasionally surprising if another node's token handling changes.
    • It freezes while downloading. The node downloads synchronously, so a multi-GB checkpoint blocks the queue and UI for a while. The pack's menu-level downloader queues in the background; this node does not.
    • Speed. Single-connection downloads top out around 40 Mbps on fat pipes, and the community has suggested aria2c for rented cloud GPUs. Not a bug - just don't expect your 10 Gbps instance to flex.
    CategoryHugging Face Downloaders 🤗

    Inputs (2)

    NameTypeDefaultDescription
    target_folderCOMBO29 options: [object Object], [object Object], [object Object], [object Object], [object Object], [object Object], +23
    linkSTRING—

    Outputs (1)

    NameTypeDescription
    model name*—