image url download
Pull images straight off the web into your graph
- image_urls
- images
image_url_download is the simplest way to get a reference or test image into ComfyUI without manually downloading it and uploading it through the file picker: give it a URL (or a list of them), and it hands back an image batch. Useful for pulling in reference material on the fly, or for feeding a batch of test assets into a workflow you're iterating on.
It's one of the file-handling nodes in ComfyUI-WJNodes' ImageFile category, a corner of a much larger personal pack from GitHub user 807502278 that also does cropping, video slicing, and color tools.
How it works
Connect image_urls - a single URL string or a list of them from an upstream node - and the node downloads each one, batching the results together into a single images output. timeout_single caps how long it'll wait on each individual image before giving up, not the whole batch, so a big list of slow-loading URLs can still take a while overall even with a short per-image timeout.
The inputs and outputs that matter
image_urls- accepts either a single URL string or a list, typed as*(any) rather than strictly STRING, so it's flexible about where the URLs come from.timeout_single(default 10 seconds, range 1–3600) - per-image download timeout. Raise it if you're pulling from a slow or rate-limited host; lower it if you'd rather fail fast on a dead link than hang the whole run.
Output is a single images batch, ready to feed into anything downstream that expects a normal image input.
How to install it
Via ComfyUI Manager, search "ComfyUI-WJNodes." Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/807502278/ComfyUI-WJNodes.git
Restart ComfyUI. No model downloads required for this node itself - it's just fetching images over HTTP, not running any inference.
Common issues & troubleshooting
A URL fails to download. The schema only exposes a timeout, no header or auth configuration - this points to plain, public URLs being the supported case. Gated or authenticated links (a private CDN, a URL that needs a session cookie) are unlikely to work, since there's nothing here to attach credentials to the request.
A large batch of URLs takes much longer than the timeout suggests it should. timeout_single is per image, not for the whole batch - ten slow URLs at a 10-second timeout each can add up to a genuinely long wait even though no single request is "slow" by the setting you configured.
One bad URL in a batch seems to break the whole thing. Since this node processes a list, a single failing or unreachable URL can hold up or fail the batch depending on how the pack handles individual errors - if you're feeding in a large, untrusted list of URLs, consider validating them beforehand rather than discovering a dead link mid-run.
Downloaded image looks different from what you expected. Some hosts serve different content depending on request headers (user-agent, referer) that a simple downloader won't send - if a URL works fine in a browser but fails or returns something odd here, that's a likely cause.
No community reports to check against. This is a small utility inside a personal pack with essentially no public discussion - test with a known-good, plain public image URL first to confirm the basic path works before troubleshooting anything more exotic.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| image_urls | * | — | |
| timeout_single | FLOAT | 10.0001–3600 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |