Model Download Batch
Download six models in one run, not six manual waits
- passthrough
- passthrough
- download_result
The most honest description of running ComfyUI: you spend half your time fetching models and the other half generating. Model Download Batch exists for that first half. You drop it into a workflow, list the URLs you need - from Hugging Face, Civitai, or any plain HTTP link - and it downloads the whole batch with aria2c in the queue, then hands the results to this pack's "(Downloaded)" loaders so the next nodes can use them in the same run.
The name undersells what's notable about it: it doesn't call any API and needs no key for public files. It's a download manager that lives inside your graph.
Why you'd reach for it
Three situations make it the node you want:
- Fresh installs. A new box, a RunPod pod that starts empty, a friend's machine - you need a checkpoint, a VAE, two LoRAs and an upscaler just to run a workflow you grabbed from somewhere. That's four browser tabs and four "wait, which folder?" moments. Here it's one node, one run.
- Downloaded workflows. Someone's shared JSON references models you don't have. Load it, drop this in front of the missing loaders, and let it fetch instead of hunting through Civitai.
- Reproducibility. A manifest is just text you can save, version, and share.
It also happens to be the honest fix for the classic r/comfyui complaint that you're "downloading models and installing missing nodes 90% of the time" - this kills a chunk of the downloading half.
How it works
The node takes a JSON manifest - a list of objects, one per file - plus an optional passthrough. On run it resolves each URL and fires aria2c. Details worth knowing:
- Existing files are never overwritten. If the target already exists, that item is marked
skippedandaria2never starts. If a<filename>.aria2sidecar is present, the download resumes where it left off. - No checksum verification. It trusts what it fetched. Fine for Civitai/HF; don't use it for supply-chain-sensitive stuff without checking after.
- Progress is the standard KSampler bar, advancing 0–100% across the whole batch rather than resetting per file; the log prints
[Model Batch Downloader] anima_model 42% 18.3MiB ETA 31sabout once a second. - Failures don't stop the batch. If item 2 of 5 dies, the rest still run; failures are reported together at the end.
The manifest fields that matter: url and model_type are required (model_type is one of thirteen categories - checkpoints, diffusion_models, vae, loras, controlnet, upscale_models, and so on). subfolder nests under the model root, filename and id name the file (if id is omitted it's the filename without its extension), and split (1–16, default 16) sets how many parallel connections aria2 uses per file.
The list UI is a real table with Add/Remove buttons and a "Resolve filename / ID" button that pings the URL and fills in the filename for you - genuinely handy for Civitai, where the URL suffix doesn't tell you what file you're getting. It stores canonical JSON under the hood, so what you see is what goes in the manifest.
Outputs and wiring
You get two outputs: passthrough (any type, passes whatever you feed the optional passthrough input straight through) and download_result (type DOWNLOAD_RESULT). The loader half of this pack - Load Checkpoint (Downloaded), Load LoRA (Downloaded), and friends - takes download_result plus an id string that matches one of your manifest IDs. It's also an output node that reruns every queue, so the download fires fresh each run.
Install
ComfyUI Manager (search "ComfyUI Model Batch Downloader"), or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/watarika/ComfyUI-Model-Batch-Downloader.git
Then restart ComfyUI. No Python packages to install - the one real dependency is the aria2c binary, which must be on the PATH that starts ComfyUI and isn't bundled or auto-installed. Check aria2c --version before you blame the node.
Common issues
- "aria2c is required" - that's the whole story: install aria2 (your distro's package, or winget/choco on Windows), confirm it runs, restart ComfyUI.
- Hugging Face 401/403 - set
HF_TOKENin the environment and check repo access. Tokens belong in env vars, never in the node or the JSON; the pack only sends them tohuggingface.codomains. - Civitai 403 - use the
https://civitai.red/api/download/models/{id}form. The oldcivitai.comURLs are deprecated here and can 403 even with a validCIVITAI_API_TOKEN. duplicate id- two manifest entries claim the same ID. Give one an explicit uniqueid.
A niche pack still earning its reputation, but the mechanics are sound and the README is unusually thorough about its own failure modes. Worth having in the drawer for every fresh install.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| manifest_json | STRING | [] | — |
| passthroughopt | * | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| passthrough | * | — |
| download_result | DOWNLOAD_RESULT | — |