Nodes/ComfyUI-fal-API/Qwen Image Edit (fal)
ComfyUI Node

Qwen Image Edit (fal)

The open instruction editor, run on someone else's GPU

By gokayfem·Created 2 years ago·Updated 15 days ago· 223
Qwen Image Edit (fal)
  • image
  • IMAGE
◄prompt►
◄image_sizesquare_hd►
◄width512►
◄height512►
◄num_inference_steps30►
◄guidance_scale4.0►
◄num_images1►
◄enable_safety_checkertrue►
◄output_formatpng►
◄accelerationnone►
◄sync_modefalse►
◄negative_prompt►
◄seed-1►

Qwen-Image-Edit is the model that killed a whole class of masking work: hand it a picture and a sentence - "change her dress to blue," "remove the watermark," "make him lie down" - and the change just happens, no mask, no ControlNet, no IP-Adapter. It won its category over Flux Kontext largely on licensing (Apache 2.0, so the community could build freely on it) and it's become the default open instruction editor. This node runs it through fal instead of on your own card.

What it actually does - and the honest catch

Nothing runs locally. Your image and prompt go to fal.ai, fal runs Qwen-Image-Edit, and you get an edited IMAGE back - no 20B checkpoint download, no VRAM, billed per call.

Here's the thing worth saying out loud, because it's the whole decision: Qwen-Image-Edit is open weights, so you can run it locally, and the model's real superpower is its enormous LoRA library - AnyPose, Multiple-Angles, Next Scene, Clothing Transfer, all trained specifically on this editor. You don't get any of that through the API. This node gives you the base model's editing, conveniently and without hardware, but if you're chasing pose control or camera-angle sliders, the local GGUF path plus those LoRAs is where the magic lives. Use this node when you want quick, clean instruction edits without setting up a 20B model; reach for local when you want the ecosystem.

The inputs that matter

  • image (required): the picture you're editing.
  • prompt (required): the instruction, in plain language. Describe the change, not the whole scene.
  • image_size: presets like square_hd, portrait_16_9, landscape_4_3, or custom. This model is sensitive to input resolution (it's the root of its offset/drift problem), so it matters - set custom and use width/height when you need to match the source exactly.
  • num_inference_steps (default 30) and guidance_scale (default 4): more steps for quality, guidance for how hard it follows the prompt. The defaults are sane; leave them until you have a reason.

num_images rolls options (billed each), acceleration (none/regular/high) trades a little quality for speed, and there's an optional negative_prompt and seed. The output is a native IMAGE - straight into Save Image, an upscaler, or another edit pass.

Installing it

Easiest: ComfyUI Manager → search ComfyUI-fal-API → install → restart. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/gokayfem/ComfyUI-fal-API.git
cd ComfyUI-fal-API
pip install -r requirements.txt

Restart ComfyUI. No model file in models/; the dependencies are fal-client and a fal API key (copy config.ini.example to config.ini, set it under [API], or export FAL_KEY). No key, no edits.

Where people get burned

The defining limitation of Qwen-Image-Edit is that it re-emits the whole frame, not just the region you asked about - so pixels nobody touched come back slightly different, and on a chain of edits that drift compounds, worst on faces. Two practical defenses: control your input resolution (that's what image_size/width/height are for, and it's the same trick that fixes proportion skew), and if a specific face has to stay identical, plan to inpaint it back afterward. Don't expect pixel-perfect preservation from an instruction editor; that's a masking job.

Beyond that: enable_safety_checker is on by default and can block outputs, errors surface fal's real text, and Windows Portable import errors are fixed with .\python_embeded\python.exe -m pip install fal-client.

CategoryFAL/Image

Inputs (14)

NameTypeDefaultDescription
promptSTRING—
imageIMAGE—
image_sizeCOMBOsquare_hd7 options: square_hd, square, portrait_4_3, portrait_16_9, landscape_4_3, landscape_16_9, +1
widthINT512128–2048—
heightINT512128–2048—
num_inference_stepsINT301–50—
guidance_scaleFLOAT4.01–20—
num_imagesINT11–4—
enable_safety_checkerBOOLEANtrue—
output_formatCOMBOpng2 options: png, jpeg
accelerationCOMBOnone3 options: none, regular, high
sync_modeBOOLEANfalse—
negative_promptoptSTRING—
seedoptINT-1—

Outputs (1)

NameTypeDescription
IMAGEIMAGE—