Load Image From URL (fal)
Feeding a remote ComfyUI run an image it can actually reach
- IMAGE
- MASK
The normal Load Image node reads a file from your ComfyUI input/ folder. That's fine on your own machine - but the second your workflow runs somewhere else, that folder doesn't exist. This node fixes exactly that: give it a URL, it downloads the image at run time and hands you an IMAGE (and a MASK) like nothing happened. It's the img2img/ControlNet/inpaint input node for workflows that don't run on the box that has the picture.
It's part of the ComfyUI-fal-Connector, fal's bridge for executing a ComfyUI graph on their serverless GPUs. When you "Save as fal format" and POST the workflow to fal.run/fal-ai/comfy-server, the remote worker has no access to your disk. So any image the graph needs - a reference photo, a control map, a mask source - comes in as a URL instead of a local filename. Pair it with a String Input node and the URL itself becomes an API parameter your caller sets per request.
Why this is the useful one
Of the whole connector pack, this is the node that earns its keep even outside fal. A URL image loader is just handy: dropping a raw GitHub or CDN link straight into a graph beats downloading a file and pointing Load Image at it, especially when you're testing someone else's workflow and they linked the reference image. It quietly does the fetch for you. The default URL in the field is even ComfyUI's own example.png, so the node works the instant you drop it in.
Inputs and outputs
- url (required) - a direct link to an image file. Emphasis on direct: it has to be the actual image bytes (
.png,.jpg, a Hugging Face.../resolve/main/pic.png), not a gallery page or a share link that returns HTML. - return_image_mode (optional) - how the pixels get decoded, defaulting to
RGB. The choices areRGB,RGBA,BGR,BGRA,L, and1. Leave it onRGBfor almost everything. Reach forRGBAwhen you specifically need the alpha channel carried through,Lfor a single-channel grayscale (handy feeding a depth or luminance map), and1for a hard 1-bit black/white.BGR/BGRAare channel-swapped variants you'll only want if a downstream node expects that ordering - most don't.
Two outputs: IMAGE and MASK. The IMAGE wires anywhere an image goes - a VAE Encode for img2img, a ControlNet preprocessor, a Save Image. The MASK is derived from the image's alpha channel (transparency becomes the mask), so a transparent PNG gives you a ready-made mask for inpainting; a fully opaque image just gives you a solid one you can ignore.
Installing it
Per the README, the connector comes with fal's bundle:
git clone --recursive https://github.com/badayvedat/ComfyUI-fal.git
cd ComfyUI-fal
pip install -r requirements.txt
Then add credentials in fal-config.ini - a fal API key from your dashboard, plus an optional Hugging Face token for gated sources. The README warns about the path specifically: that file lives in ComfyUI-fal/custom_nodes/ComfyUI-fal-Connector/, not the repo root. Launch with main.py.
Just want the node in your existing ComfyUI? Search ComfyUI-fal-Connector in ComfyUI Manager, or cd ComfyUI/custom_nodes && git clone https://github.com/badayvedat/ComfyUI-fal-Connector and restart. No model files, no heavy deps.
Where people get burned
Nearly every failure is the URL. A link to an image page (a Pinterest post, a Google Images result, an Imgur gallery URL) returns HTML, not pixels, and the node chokes. Right-click, "copy image address," and confirm it ends in a real file. Second: some hosts block automated fetches or need auth - a private Hugging Face repo returns 401 unless you've set the HF token in the config. Third, a mode mismatch: if a downstream node insists on 3-channel input and you handed it RGBA, you'll get a shape error - flip return_image_mode back to RGB. And the MASK output surprises people: it's the alpha channel, not a magic subject cutout, so an opaque JPEG has no mask to give you.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| url | STRING | https://raw.githubusercontent.com/comfyanonymous/ComfyUI/master/input/example.png | — |
| return_image_modeopt | COMBO | RGB | 6 options: RGB, RGBA, BGR, BGRA, L, 1 |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |
| MASK | MASK | — |