Load Image Batch From URL List (Hunyuan3D)
Paste a List of Image URLs, Get a Batch Tensor
- images
ComfyUI is built around local files. LoadImage reads from your input folder, and if you've ever tried to feed it a URL you know the wall you hit: it validates paths, and a URL is not a path. Hy3DLoadImageBatchFromURLList is the node that simply ignores that wall. Paste one image URL per line, and it hands you a single batched IMAGE tensor, ready for whatever wants a sequence of views.
It's part of the small ComfyUI-Hunyuan3D pack, which exists to fill the gaps around ComfyUI's native Hunyuan3D-2 support. This particular node was built for scene-reconstruction workflows - the pack's own docs name HunyuanWorld-Mirror - that take a variable-length list of images rather than a fixed set of named views. Where the pack's single-slot loader assumes Hunyuan3D's fixed front/left/back/right conditioning, this one collapses "however many images you have" into one multiline field. And because it was built for Graydient's hosted ComfyUI, where inputs arrive as URLs instead of uploaded files, it fetches from the network by design. No API key, no credentials - it's an HTTP GET per line, not an API wrapper.
How it works
Under the hood it's unglamorous in the best way. Split the multiline string on newlines, ignore blank lines, then for each URL: requests.get with a 30-second timeout, fail loudly on an HTTP error, open the bytes as an image, convert to RGB, resize, normalize to 0–1, and stack everything into one [N, H, W, 3] float tensor.
Only two inputs exist, and only one needs explaining. urls is a multiline STRING, one URL per line, blank lines skipped. resize_to is an INT, default 518, range 64–4096. That number deserves a second look: the node resizes - stretches, really - every image to a square of that size, and it does it for a mechanical reason. torch.cat needs matching dimensions, and your URLs are not guaranteed to be the same size. It is not a quality setting. Aspect ratios get distorted, which is fine because downstream preprocessing (the pack points at PreprocessImagesForHWM) does its own resize/crop anyway. The 518 default is deliberate - it matches Hunyuan3D's native conditioning resolution. Leave it alone unless you know why you're changing it.
The output is a single images tensor. Wire it into whatever expects a batch of views; that's the whole job.
Install
Standard two routes:
cd ComfyUI/custom_nodes
git clone https://github.com/UnlimitedEditing/ComfyUI-Hunyuan3D
then restart ComfyUI - or search "ComfyUI-Hunyuan3D" in ComfyUI Manager and click install. The pack's requirements.txt lists trimesh, xatlas, and requests; this node specifically only cares about requests, which comes along for the ride. You do not need Hunyuan3D model weights to use this loader on its own. (The pack's full image-to-3D pipeline, with the hunyuan3d-dit-v2-mv-turbo checkpoint and the native VoxelToMesh step, is a separate, heavier download.)
Where people get burned
- Empty field: it raises a clear ValueError - paste at least one URL.
- Non-image URLs: 404s, hotlink-blocked hosts, or HTML pages pretending to be images all blow up with a request error. Your URLs need to be direct, publicly reachable image links.
- One bad apple stalls the batch: it fetches and stacks sequentially, so a slow or dead URL holds up everything after it. Keep the list short and the hosts fast.
- Square stretch:
resize_todistorts aspect ratio, on purpose. If your batch looks squashed downstream, that's this node doing its job - the next preprocessing node is where shape gets restored.
Thin, specific, and it does exactly one thing. If your inputs live on the internet, this is the loader you didn't know you needed.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| urls | STRING | One image URL per line. Blank lines are ignored. | |
| resize_to | INT | 51864–4096 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |