ComfyUI Node

Qwen-Image-Edit

Describe the change, skip the mask

By Runware·Created 2 years ago·Updated about a month ago· 140
Qwen-Image-Edit
  • referenceImages
  • lora
  • ultralytics
  • acceleratorOptions
  • advancedFeatures.watermark.image
  • image
positivePrompt
negativePrompt
width1024
height1024
seed0
steps8
scheduler(default)
CFGScalefalse
CFGScale_value1.00
numberResults1
advancedFeaturesfalse
advancedFeatures.watermark.bgColor
advancedFeatures.watermark.displayPosition(default)
advancedFeatures.watermark.fontColor
advancedFeatures.watermark.opacityfalse
advancedFeatures.watermark.opacity_value0.10
advancedFeatures.watermark.text
safetyfalse
safety.checkContentfalse
settings.trueCFGScalefalse
settings.trueCFGScale_value0.00
ttlfalse
ttl_value60
outputFormatJPG
outputQuality95

Qwen-Image-Edit is where a huge class of image work stopped needing masks. It's the open instruction editor from Alibaba's Qwen team: you hand it a picture and a sentence - "remove the person in the background," "swap the jacket to leather," "make it golden hour" - and the change just happens. Apache 2.0, uncensored by policy, and good enough that by 2026 it had absorbed the jobs that used to take a mask plus a ControlNet plus an IP-Adapter. Its own LoRA library is the secret weapon: pose, angle, next-scene, and expression LoRAs trained specifically on the editor, and they don't work on the base Qwen-Image model at all.

The honest limit, and its own users say it first: the model re-emits the whole frame, so pixels nobody asked about can drift, and faces degrade across a chain of edits. The standard fix is bolting a mask back on around it. But for a single clean instruction edit, nothing in the open world is easier.

What you set

  • referenceImages (required) - the image you're editing, wired in as an IMAGE. One or more; more refs means more context for consistency.
  • positivePrompt (required) - the instruction, in natural language. This is not a tags box; write "turn the car red" as a sentence.
  • width / height (128–2048, step 16) - the output canvas; keep it near the source image's resolution.
  • steps - defaults to 8. Qwen-Edit wants far fewer steps than SD-era editing; don't crank it.
  • CFGScale - off by default; the editor runs near-distilled guidance. settings.trueCFGScale is there if you genuinely need more adherence.
  • lora socket - this is where Qwen-Edit's LoRA library plugs in. Pose LoRA to re-pose a character, next-scene LoRA for sequence continuation, etc.
  • negativePrompt (ignored at CFGScale ≤ 1), seed, scheduler, numberResults (up to 20), outputFormat, outputQuality.

Output is image (IMAGE).

How it works

Like every node in the Runware pack: it builds a request with the model AIR and taskType, sends it over REST through the Runware SDK, and downloads the result as a native IMAGE. The edit happens entirely in the cloud on Qwen's hardware - no 20B model download, no local VAE dance. The node prints cost on the title bar; edit runs are short, so it's cheap to iterate. One thing to remember: because Qwen re-emits the whole frame, each edit is a fresh generation - chain edits one at a time and check between them rather than piling all your changes into one prompt.

Installing

ComfyUI Manager → search Runware → install → restart. Manual:

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

No model downloads; dependencies are runware-sdk, pillow, soundfile. API key via Settings → Runware API key, RUNWARE_API_KEY, or runware auth login.

Troubleshooting

Missing key error first, as always. If edits look "floaty" or unrelated pixels shift, that's the re-emission behavior - keep instructions surgical, or add a mask in a workflow that crops the region. If nothing changes at all, check referenceImages is actually wired (it's required for a reason). And if you need heavy structural changes across many steps, that's what the Edit-Plus node is for.

CategoryRunware/Image/runware

Inputs (30)

NameTypeDefaultDescription
referenceImagesIMAGE
positivePromptSTRINGText prompt describing elements to include in the generated output.
loraoptRUNWARE_LORA
ultralyticsoptRUNWARE_ULTRALYTICS
acceleratorOptionsoptRUNWARE_ACCELERATOROPTIONS
advancedFeatures.watermark.imageoptIMAGE
negativePromptoptSTRINGPrompt to guide what to exclude from generation. Ignored when guidance is disabled (CFGScale ≤ 1).
widthoptINT1024128–2048Width of the generated media in pixels.
heightoptINT1024128–2048Height of the generated media in pixels.
seedoptINT00–9223372036854776000Random seed for reproducible generation. When not provided, a random seed is generated in the unsigned 32-bit range.
stepsoptINT81–50Total number of denoising steps. Higher values generally produce more detailed results but take longer.
scheduleroptCOMBO(default)Scheduler to use for the diffusion process.
CFGScaleoptBOOLEANfalseEnable to set CFGScale. Off uses the model's default.
CFGScale_valueoptFLOAT1.001–20Guidance scale representing how closely the output will resemble the prompt. Higher values produce results more aligned with the prompt.
numberResultsoptINT11–20Number of results to generate. Each result uses a different seed, producing variations of the same parameters.
advancedFeaturesoptBOOLEANfalseEnable to set advancedFeatures. Off uses the model's default.
advancedFeatures.watermark.bgColoroptSTRINGBackground color in hex format.
advancedFeatures.watermark.displayPositionoptCOMBO(default)Watermark position.
advancedFeatures.watermark.fontColoroptSTRINGText color in hex format.
advancedFeatures.watermark.opacityoptBOOLEANfalseEnable to set advancedFeatures.watermark.opacity. Off uses the model's default.
advancedFeatures.watermark.opacity_valueoptFLOAT0.100.1–1Watermark opacity.
advancedFeatures.watermark.textoptSTRINGWatermark text.
safetyoptBOOLEANfalseEnable to set safety. Off uses the model's default.
safety.checkContentoptBOOLEANfalseEnable or disable content safety checking.
settings.trueCFGScaleoptBOOLEANfalseEnable to set settings.trueCFGScale. Off uses the model's default.
settings.trueCFGScale_valueoptFLOAT0.00True Classifier-Free Guidance scale. Higher values increase prompt adherence at the cost of quality.
ttloptBOOLEANfalseEnable to set ttl. Off uses the model's default.
ttl_valueoptINT60Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`.
outputFormatoptCOMBOJPGFile format for the generated image.
outputQualityoptINT9520–99Compression quality of the output. Higher values preserve quality but increase file size.

Outputs (1)

NameTypeDescription
imageIMAGE