The goal here is a working Stable Diffusion-style pipeline in ComfyUI built around Qwen-Image-2.1, an open image model, covering both text to image and image editing with reference pictures. Everything below follows the ComfyUI tutorial for Qwen-Image-2.1, which ships the workflow as a built-in template. The page gives no release date for the model, so none is stated here.
What you need first
- A current ComfyUI. The templates ship with it, and the docs say that missing templates usually mean an outdated install. No specific version number is given.
- If nodes are missing after updating, switch to the Nightly build or check the startup log for failed node imports.
- Enough memory for the file variant you pick. As of October 2026 the docs give no VRAM figures, only that int8 uses less than bf16.
Put the files in the right folders
Each file goes in a fixed folder under your ComfyUI models directory. The templates load the text encoder and VAE for you only if the names match.
| Folder | File | Role |
|---|---|---|
models/diffusion_models/ | qwen_image_2.1_int8_convrot.safetensors | Base model, lower memory |
models/diffusion_models/ | qwen_image_2.1_bf16.safetensors | Base model, full precision |
models/diffusion_models/ | qwen_image_2.1_turbo_int8_convrot.safetensors | Turbo model, lower memory |
models/diffusion_models/ | qwen_image_2.1_turbo_bf16.safetensors | Turbo model, full precision |
models/text_encoders/ | qwen3vl_8b_int8_convrot.safetensors | Text encoder, lower memory |
models/text_encoders/ | qwen3vl_8b_bf16.safetensors | Text encoder, full precision |
models/text_encoders/ | qwen3.5_9b_qwen_image_2.1_pe_t2i.int8_convrot.safetensors | Prompt enhancement, text to image |
models/text_encoders/ | qwen3.5_9b_qwen_image_2.1_pe_i2i.int8_convrot.safetensors | Prompt enhancement, image edit |
models/vae/ | qwen_image_2.1_vae_bf16.safetensors | VAE for every workflow |
Source: the ComfyUI Qwen-Image-2.1 tutorial linked above.
You do not need all nine. Pick one precision and stay with it: the int8 files if memory is tight, bf16 if you have room and want full precision. Add the turbo model only if you want the faster templates.
Two optional files exist. texture_fix_vae_for_qwen_image_2.1_bf16.safetensors goes in models/vae/ and is an unofficial VAE finetune meant to reduce checkerboard texture in detailed photo-style output; select it on the Load VAE node. The unofficial Qwen-Image-2.1-Lightning LoRA, pytorch_lora_weights.safetensors, goes in models/loras/.
Open a template
Search the Template Library for the name, or download the JSON from the Comfy-Org workflow_templates repository.
image_qwen_image_2_1_t2i: base model, text to image, 25 stepsimage_qwen_image_2_1_image_edit: base model, edit with multiple referencesimage_qwen_image_2_1_background_removal: base model, alpha output, no prompt enhancementimage_qwen_image_2_1_turbo_t2iandimage_qwen_image_2_1_turbo_image_edit: turbo model, 8 steps
Run text to image
Base settings in the template are 25 steps, cfg 1, sampler euler, scheduler simple. The docs note that the published pipeline uses about 40 to 50 steps, so 25 is a speed compromise, not the model's ceiling. Turbo uses 8 steps with a fixed ManualSigmas schedule; change the step count only if you also change the schedule.
At cfg 1 the negative prompt has no effect. The docs recommend changing one value at a time with a fixed seed, which is the only way to see what a setting really does.
The Resolution Selector node sets aspect ratio and a megapixel target; the text-to-image target is 2048x2048, which works out to about 4.2 MP. Targets well above 2K, such as 4K, reduce prompt adherence.
For a 4-step run, add the unofficial Lightning LoRA (a community file, not part of the official release) with a LoraLoaderModelOnly node, set KSampler steps to 4 and keep euler and simple.
Edit images with references
- Load the Image Edit template, or the Turbo version.
- Put the image to edit in
LoadImagenode 470 and the reference in node 475. The templates wire up to 10 slots, andText Encode Qwen Image 2.1accepts up to 16 (image_1toimage_16). - Refer to slots by index in the prompt:
<image1>is the picture being edited,<image2>the reference. - Set
resolutionon the Image Edit subgraph. The default 0 keeps each reference at its own size, rounded to multiples of 32. Above 0 it is a total pixel budget, not a width or height. Turn oncustom_sizeto use theResolution Selectorinstead. - For a regional edit, right-click node 470, choose Open in Mask Editor, paint with Paint Pen and save. Name the color of the mark in your prompt.
- Optionally switch on
refine_prompt(withthinking_mode) so the enhancement encoder rewrites your prompt, and read the result in thePreview Anynode. - Run.
Speed and memory
Edits slow down as references get larger. The ComfyUI docs report, for an RTX 5090, about 6 seconds per iteration with a 3000x4000 reference and about 0.3 seconds per iteration at roughly 1 MP. Lower resolution first.
The experimental Qwen Image 2.1 Cache node in the edit templates has a device option (auto, gpu, cpu, off) and a dtype option (default, int8, int4). auto uses spare VRAM and then RAM; cpu costs little speed; int8 halves the cache at near-bf16 accuracy and int4 quarters it with more error.
What usually goes wrong
- Template missing from the library: the install is old. Update, or use Nightly.
- Red node on load: a file is in the wrong folder or has a different name. Match the table exactly.
- RGBA output rejected downstream: insert
SplitImageWithAlpha, orJoinImageWithAlphato go back. In the mask convention, 1 marks transparent pixels. - Output looks washed or slow on a small card: you are probably on bf16 with a large
resolution. Move to int8 first.
If you have used AnimateDiff-era graphs, as in the ControlNet and AnimateDiff walkthrough, the layout will feel familiar. The new part is the subgraphs, which hide the encoder wiring until you open them.