Qwen-Image
The open editing model, minus the GPU
- seedImage
- maskImage
- outpaint
- lora
- ultralytics
- acceleratorOptions
- advancedFeatures.watermark.image
- image
Qwen-Image is Alibaba's open-weights image model - Apache 2.0, no non-commercial rider - and the thing that made it famous in the ComfyUI world is that it's an editing model, not just a generator. Feed it an input image and a prompt and it will restyle, modify, and composite the way FLUX's Kontext used to be the only open model that could. This node (runware:108@1) runs it on Runware's cloud, so you get the model's strengths without a single checkpoint download or a VRAM budget.
The "no local run required" part matters more here than it usually does. Qwen-Image locally is an ecosystem project - fine-tunes, ControlNet variants, the works - but all of that is a setup project. This node is the shortcut: install the Runware pack (ComfyUI Manager → Runware, or git clone https://github.com/Runware/ComfyUI-Runware into custom_nodes/), add an API key in ComfyUI Settings, and Qwen-Image is a node you can queue from a fresh install.
How it works
Standard cloud image inference under the hood, with a twist in the tuning: Qwen-Image is guidance-distilled. The node's CFGScale_value defaults to 1, and the negative prompt is ignored when guidance is disabled (CFG ≤ 1) - the tooltip says it outright. This is the 2026 model-class behavior that still trips up anyone with SDXL muscle memory: guidance is baked into the weights, so cranking CFG doesn't buy adherence, it overcooks. The editing power comes from the seedImage socket - wire in an image, prompt the change, and the model rewrites it.
Inputs that matter
- positivePrompt (required) - descriptive prose; Qwen-Image's LLM-encoded prompt path understands sentences, and that's what unlocks the editing behavior.
- seedImage - the editing input. This is the input that makes Qwen-Image Qwen-Image.
- width / height - 256–2048. Unlike some SD-derived models, it isn't locked to 1024 multiples.
- maskImage / outpaint - for inpainting and extending;
maskMarginadds context pixels around the masked region for cleaner blends. - steps - direct INT, default 20 (no toggle - Qwen-Image exposes it plainly).
- CFGScale - toggle-gated; the
CFGScale_valuedefault of 1 is the guidance-distilled sweet spot.settings.trueCFGScaleexists for true CFG if you insist. - lora / acceleratorOptions / watermark / ultralytics - builder sockets.
The image output is a native IMAGE into Preview or Save, with per-run cost on the title bar.
Where people get burned
- CFG 1 is not broken, it's the design. Raising CFG on Qwen-Image past a small range burns the image and roughly doubles render time (that's what the unconditional pass costs). Leave the gate off.
- Negative prompts do nothing at CFG ≤ 1. There's nothing for the negative to attach to when guidance is off. If you need exclusion, that's not this model's tool.
- Editing needs a good seedImage. Qwen-Image edits what it can see; a low-res or muddy input image caps how good the result gets.
- The toggle pattern - CFGScale, strength, maskMargin are "enable to set X" booleans with paired
_valuewidgets. Flip the toggle, set the value.
If you've been eyeing Qwen-Image for its editing chops but the local setup felt like a project, this is the zero-effort way in. It won't replace a fine-tuned local stack, but it's the model's core behavior with none of the maintenance.
Inputs (36)
| Name | Type | Default | Description |
|---|---|---|---|
| positivePrompt | STRING | Text prompt describing elements to include in the generated output. | |
| width | INT | 1024256–2048 | Width of the generated media in pixels. |
| height | INT | 1024256–2048 | Height of the generated media in pixels. |
| seedImageopt | IMAGE | — | |
| maskImageopt | IMAGE | — | |
| outpaintopt | RUNWARE_OUTPAINT | — | |
| loraopt | RUNWARE_LORA | — | |
| ultralyticsopt | RUNWARE_ULTRALYTICS | — | |
| acceleratorOptionsopt | RUNWARE_ACCELERATOROPTIONS | — | |
| advancedFeatures.watermark.imageopt | IMAGE | — | |
| negativePromptopt | STRING | Prompt to guide what to exclude from generation. Ignored when guidance is disabled (CFGScale ≤ 1). | |
| seedopt | INT | 00–9223372036854776000 | Random seed for reproducible generation. When not provided, a random seed is generated in the unsigned 32-bit range. |
| stepsopt | INT | 201–50 | Total number of denoising steps. Higher values generally produce more detailed results but take longer. |
| scheduleropt | COMBO | (default) | Scheduler to use for the diffusion process. |
| CFGScaleopt | BOOLEAN | false | Enable to set CFGScale. Off uses the model's default. |
| CFGScale_valueopt | FLOAT | 1.001–20 | Guidance scale representing how closely the output will resemble the prompt. Higher values produce results more aligned with the prompt. |
| strengthopt | BOOLEAN | false | Enable to set strength. This setting has usage rules in this model, so it is off unless you enable it. |
| strength_valueopt | FLOAT | 0.800–1 | Strength of the transformation. Lower values result in more influence from the original input. |
| maskMarginopt | BOOLEAN | false | Enable to set maskMargin. Off uses the model's default. |
| maskMargin_valueopt | INT | 3232–128 | Extra context pixels around the masked region during inpainting. The model zooms into the masked area with these additional pixels for better integration. |
| numberResultsopt | INT | 11–20 | Number of results to generate. Each result uses a different seed, producing variations of the same parameters. |
| advancedFeaturesopt | BOOLEAN | false | Enable to set advancedFeatures. Off uses the model's default. |
| advancedFeatures.watermark.bgColoropt | STRING | Background color in hex format. | |
| advancedFeatures.watermark.displayPositionopt | COMBO | (default) | Watermark position. |
| advancedFeatures.watermark.fontColoropt | STRING | Text color in hex format. | |
| advancedFeatures.watermark.opacityopt | BOOLEAN | false | Enable to set advancedFeatures.watermark.opacity. Off uses the model's default. |
| advancedFeatures.watermark.opacity_valueopt | FLOAT | 0.100.1–1 | Watermark opacity. |
| advancedFeatures.watermark.textopt | STRING | Watermark text. | |
| safetyopt | BOOLEAN | false | Enable to set safety. Off uses the model's default. |
| safety.checkContentopt | BOOLEAN | false | Enable or disable content safety checking. |
| settings.trueCFGScaleopt | BOOLEAN | false | Enable to set settings.trueCFGScale. Off uses the model's default. |
| settings.trueCFGScale_valueopt | FLOAT | 0.00 | True Classifier-Free Guidance scale. Higher values increase prompt adherence at the cost of quality. |
| ttlopt | BOOLEAN | false | Enable to set ttl. Off uses the model's default. |
| ttl_valueopt | INT | 60 | Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`. |
| outputFormatopt | COMBO | JPG | File format for the generated image. |
| outputQualityopt | INT | 9520–99 | Compression quality of the output. Higher values preserve quality but increase file size. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |