πΌοΈ Download Image from URL
Grab an image off the web and wire it straight into the graph
- image
- width
- height
πΌοΈ Download Image from URL does one small job: you paste an image URL, it fetches the file, and you get an IMAGE tensor plus width and height outputs. No browser tab, no dragging files into input/, no "where did I save that reference image" - the working queue hands the image straight to the next node.
The realistic uses are mundane but constant: a mood-board reference for img2img, a scraped dataset of images you want to caption with a VLM node, a batch of style references while you iterate. And since it's an output-type node, a graph built around one URL is a one-click fetch-and-process.
What actually happens
The node sniffs the file extension off the URL string itself - .jpg, .jpeg, .png, .webp - and rejects anything else before it ever makes the request. Then it does a plain requests.get, opens the bytes with Pillow, converts to RGB, and hands back a tensor. Width and height come out as separate integer outputs, which is handy on its own: feed them into a size selector or bake them into a filename instead of eyeballing the number.
Three inputs, and only one is required:
image_url- the URL.save_file_name_override- optional filename. You can include or omit the extension; if you include one it keeps that extension without converting the image, so naming a jpeg.pnggets you a mislabeled file, not a conversion.save_path- optional folder to write into. It gets created if it doesn't exist.
Where people get burned
The extension check. This is the number one failure. URLs that end in something else, or that hide the format behind a query string (https://host/img?id=12345), or modern formats like .avif and .gif, all get rejected with a console message and None on every output - including width and height, so downstream nodes fail with a confusing type error rather than "bad URL". If a link won't load, check what the URL actually ends with before you blame the network. A CDN link ending in .webp works; the same asset behind /image?format=auto doesn't.
Nothing is written to disk by default. The README describes a default save into the input folder, but the shipped code only writes when save_path is set - leave it blank (the default) and no file lands at all, you just get the tensor. If you want the loaded image available to a πΌοΈ Load Image node later, put a path in.
No timeout on the request. A host that accepts the connection and then stalls will hold your queue with no progress and no error until it gives up. Same for a URL that returns a 404 - a non-200 status returns None for all three outputs.
Transparency is discarded. The node converts to RGB, and the README states it plainly: no alpha support. A transparent PNG comes in flattened, and if you need that alpha as a mask you're better off saving the file and loading it with a loader node that outputs the alpha channel.
Install
ComfyUI Manager β search ComfyUI-mnemic-nodes, or from the command line:
cd ComfyUI/custom_nodes
git clone https://github.com/MNeMoNiCuZ/ComfyUI-mnemic-nodes
Restart ComfyUI afterwards. Nothing to download for this node - requests is the only dependency it cares about, and that's already in the pack's requirements (along with a pile of others you may not need: transformers, opencv-python, tiktoken, imageio, piexif).
One caution if your ComfyUI is exposed beyond your own machine: this node fetches arbitrary URLs server-side, so don't wire it to an endpoint you don't control. Same rule as any API node - it's fetching on your behalf, from your network.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image_url | STRING | URL of the image to download. | |
| save_file_name_overrideopt | STRING | Optional override for the name of the saved image file. | |
| save_pathopt | STRING | Optional path to save the image. Defaults to the current directory. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | The downloaded image |
| width | INT | The width of the image |
| height | INT | The height of the image |