Z-Image-Turbo
The 6B model that killed the FLUX 2 hype
- seedImage
- maskImage
- outpaint
- lora
- controlNet
- ultralytics
- acceleratorOptions
- advancedFeatures.watermark.image
- image
Z-Image-Turbo is Alibaba's 6B image model, and it's the one that quietly won the community's heart in late 2025 by being small at exactly the right moment. While FLUX 2 Dev shipped 32B parameters and a heavy censorship load, Z-Image shipped a tiny, fast, uncensored, Apache-2.0 model that runs on a 12GB card - near-FLUX quality at a fraction of the size, and the community called it SDXL 2.0 before it even had a trainable base. In the Runware pack it's the sensible middle ground: better detail than the distilled tiers, cheaper per image than the 20B flagships, and Turbo specifically means it does it in very few steps.
It's not perfect. Complex-prompt adherence is weaker than FLUX 2, there's a persistent Asian face bias, and the native ceiling is around 2MP - you won't be printing billboards. But for fast, good-looking, no-drama generation, this is the node people keep coming back to.
What you set
Required: positivePrompt, width, height (128–2048, step 16).
Then it's the familiar Runware image-node spread:
CFGScale- off by default and leave it off. Z-Image-Turbo is guidance-distilled; the whole point is low CFG at few steps.steps- the default handles it. Adding steps on a Turbo model is throwing money at a ceiling.seedImage/maskImage- image-to-image and inpainting, standard.controlNet,lora,outpaintsockets - Z-Image has a real ControlNet ecosystem (Alibaba's Fun ControlNet), so this is one of the more expandable models in the pack.negativePrompt(ignored at CFGScale ≤ 1),seed,scheduler,numberResults(up to 20),outputFormat,outputQuality.
Output is image (IMAGE).
How it works
Same pack machinery as every node here: build a request with the model AIR and taskType, ship it over REST through the Runware SDK, download the IMAGE back. The model runs on Runware's hardware, so the 12GB-VRAM sweet spot that made Z-Image famous locally doesn't even matter - you could run this on a Raspberry Pi's worth of client and get identical results. The node prints cost per run on its title bar; Z-Image-Turbo's cost is low enough that batch experimentation stops feeling like a budget decision.
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 needed: Settings → Runware API key, RUNWARE_API_KEY, or runware auth login.
Troubleshooting
The missing-key error is the usual first stop. If you came from SDXL habits and set CFG 7 and 30 steps, you'll get overcooked output - trust the defaults, they're the distillation-correct values. And if you need ultra-detailed photorealism, Z-Image-Turbo isn't lying to you about being a turbo; the base model (or the FLUX nodes) is the step up.
Inputs (36)
| Name | Type | Default | Description |
|---|---|---|---|
| positivePrompt | STRING | Text prompt describing elements to include in the generated output. | |
| width | INT | 1024128–2048 | Width of the generated media in pixels. |
| height | INT | 1024128–2048 | Height of the generated media in pixels. |
| seedImageopt | IMAGE | — | |
| maskImageopt | IMAGE | — | |
| outpaintopt | RUNWARE_OUTPAINT | — | |
| loraopt | RUNWARE_LORA | — | |
| controlNetopt | RUNWARE_CONTROLNET | — | |
| 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 | BOOLEAN | false | Enable to set steps. Off uses the model's default. |
| steps_valueopt | INT | 11–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 | 0.000–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. |
| 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 | — |