🔗 Load Image from URLs
Load Image from URLs fetches your references for you
- image_1
- image_2
- image_3
- image_4
- image_5
- image_6
- image_7
- image_8
- image_9
- image_10
You know the drag: someone hands you a workflow, it has a Load Image node, and before anything runs you have to download every reference into your input folder. If you work from image links a lot - a temp image host, a Discord attachment link, a CivitAI preview, a remote server you'd rather not sync - this node is for you. Load Image from URLs skips the file picker entirely: ten text boxes, you paste https:// links, and it fetches them itself. No download step, no API, no key.
It's the third node in comfyui-image_psss by heyzne, the same utility pack as Load Image (Multi 5/10), and it's the pure-URL member of the family. Dependencies are just torch, numpy, and Pillow - already in every ComfyUI - so install is clone-and-restart:
cd ComfyUI/custom_nodes
git clone https://github.com/heyzne/comfyui-image_psss.git
Restart, or search "comfyui-image_psss" in ComfyUI Manager. No models, nothing else to configure.
What's on the node
Ten inputs, url_1 through url_10, each producing its own IMAGE tensor out of image_1–image_10. Paste a link into any slot and leave the rest empty. Beyond plain URLs, the box accepts a Base64 data:image/... URI, and since v2.1 even a bare filename sitting in your input folder - handy when you dragged a file in and the field got a name instead of a path. Same on_error control as the pack's other nodes: keep the default (fail loudly, node turns red with the reason) or switch to the placeholder mode that outputs a magenta tile and lets the run continue.
How the fetching works
This is where the pack earns its keep. The fetch sends a browser User-Agent, waits up to 60 seconds, and retries twice with a delay. Then it validates: HTTP status code, Content-Type (it refuses things that aren't images - a login page, an HTML error page - instead of trying to decode them), and finally Pillow. This used to be the pack's biggest trap: in older versions, a dead link (404, expired temp-host link, hotlink block, timeout) silently produced a black image, and you'd chase a phantom NaN or a bad VAE forever - the classic black-output dead end the KB's troubleshooting section warns about. v2.1 fixed that by making failures loud. If you installed the pack long ago and a URL gives you black, git pull and re-test.
Realistic pain points
- 403 / hotlink protection. The fetch sends a browser User-Agent but no referer, so CDNs that check referer headers can still refuse. Get a direct image URL if the host offers one, or save the file to
inputand use the bare filename. - Expired ephemeral links. Temporary image hosts die constantly. The node now names the exact HTTP code instead of going black.
- Empty vs failed slots. A 64×64 black tile means "no input here"; a magenta one means "this slot failed." They're deliberately different colors, so don't confuse the two when debugging.
- Metadata caveat. Whatever the URL points at may itself have been re-encoded by its host, which strips the embedded ComfyUI workflow - so pasting a link is fine for pixels, just don't expect to drag that fetched image back into ComfyUI and recover a graph.
It plugs into anything that eats IMAGE tensors: ControlNet references, IPAdapter style inputs, face-swap source images, img2img starting points. If you live on image links, this is the node that lets a workflow run without the download-and-sort dance.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| url_1 | STRING | — | |
| url_2 | STRING | — | |
| url_3 | STRING | — | |
| url_4 | STRING | — | |
| url_5 | STRING | — | |
| url_6 | STRING | — | |
| url_7 | STRING | — | |
| url_8 | STRING | — | |
| url_9 | STRING | — | |
| url_10 | STRING | — | |
| on_erroropt | COMBO | 报错提示 (推荐) | 加载失败时:报错提示(节点变红显示原因)或输出品红占位图 |
Outputs (10)
| Name | Type | Description |
|---|---|---|
| image_1 | IMAGE | — |
| image_2 | IMAGE | — |
| image_3 | IMAGE | — |
| image_4 | IMAGE | — |
| image_5 | IMAGE | — |
| image_6 | IMAGE | — |
| image_7 | IMAGE | — |
| image_8 | IMAGE | — |
| image_9 | IMAGE | — |
| image_10 | IMAGE | — |