Nodes/ComfyTV/Image Edit
ComfyUI Node

Image Edit

Tell a model what to change, in plain words

By jtydhr88·Created 3 months ago·Updated about 16 hours ago· 725
Image Edit
  • image
  • image
force_run_token0
project_id
parent_output_id0
workflowQwen Edit 2511
main_prompt
custom_params{}

"Turn the jacket blue." "Make it sunset." "Remove the power line." That's what Image Edit is for: instruction-based editing, where the whole edit is a sentence and the model does the rest. No mask painting, no denoise math, no inpaint brushwork. You drop in an image, type what you want changed, and get a new image back.

This is the node the inpainting world has been converging on for a couple of years now. Instruction-edit models like Qwen-Image-Edit took over most of what people used to do with masks, because a sentence is a faster interface than painting a mask and the models got genuinely good at it. Image Edit runs the Qwen Edit 2511 workflow, ComfyTV's default instruction-edit backend.

ComfyTV is jtydhr88's canvas app (~190 stages, each its own node), and Image Edit sits under ComfyTV → Image next to the mask-based tools - deliberately, because they're complements, not rivals.

How it works

An instruction-edit model takes the whole image as context plus your prompt and emits a full new image. That's the power and the trade: nothing is guaranteed to stay bit-identical. The model re-renders everything, so the chair you liked may come back slightly different even if you only asked about the sky. If you need "change exactly this region, leave the rest untouched down to the pixel," that's the mask-based path (Erase for removal, or the inpaint stage). If you want "just make it look right," this is faster and often better.

The inputs are exactly what you'd expect:

  • workflow - which instruction-edit backend to run. Default Qwen Edit 2511; the combo exists so other backends can slot in.
  • main_prompt - your instruction, in plain language. Be specific about what changes and what shouldn't ("keep the composition, only change the lighting").
  • image (optional) - the source, typically from a picker or an earlier generation stage.

Output is the edited image.

The hidden inputs, explained once

Every ComfyTV stage carries force_run_token, project_id, parent_output_id (frontend-populated for per-node Run) and custom_params (a JSON of parameter attachments). You never set these by hand.

Installing it and the model

Same pack, same steps:

cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV

or ComfyUI Manager ("ComfyTV"), full backend restart, then ComfyTV → Image.

The pack itself declares no pip deps, but the Qwen Edit 2511 workflow runs on a real model stack. Per the README's models page: qwen_image_edit_2511_fp8mixed.safetensors in diffusion_models/, the Qwen-Image-Edit-2511-Lightning-4steps LoRA plus the multiple-angles LoRA in loras/, qwen_2.5_vl_7b_fp8_scaled.safetensors in text_encoders/, and qwen_image_vae.safetensors in vae/ - with download links for each. The Lightning 4-step LoRA is what makes it fast; skip it and the workflow still runs, just slower. Missing model at run time is the most common failure. And the whole-pack install gotcha: on ComfyUI Desktop, macOS, or multiple installs, clone into the running instance by absolute path, verify custom_nodes/ComfyTV/__init__.py isn't nested, and fully restart.

Common issues

  • "Missing model" - the Qwen Edit files aren't in your ComfyUI/models/ tree. Download them per the models doc.
  • It changed things you didn't ask about - expected behavior for instruction editing; the model re-renders the frame. Add "don't change X" to the prompt, or drop to the mask-based stages if drift is unacceptable.
  • Quality degrades after several edits in a row - known failure mode of edit models; each pass re-renders. For long chains, re-run the original with a fuller prompt instead of stacking edits.
CategoryComfyTV/Image

Inputs (7)

NameTypeDefaultDescription
force_run_tokenINT00–2147483647Internal — bumped on Run to invalidate ComfyUI's input cache.
project_idSTRINGInternal — populated by the projectStore on the frontend.
parent_output_idINT00–2147483647Internal — lineage parent set by spawn handlers on the frontend.
workflowCOMBOQwen Edit 2511Which instruction-edit workflow to run.
main_promptSTRING
custom_paramsSTRING{}Internal — JSON of user-defined parameter attachments/values for this node.
imageoptCOMFYTV_IMAGE

Outputs (1)

NameTypeDescription
imageCOMFYTV_IMAGE