qwen / 20b / createImage
Qwen-Image, the 20B text-rendering champ, on Civitai's fleet
- loras
- api_config
- images
- errors
- workflow_id
- raw_json
Qwen-Image is the model people admire: a 20B MMDiT with best-in-class text rendering - real, legible glyphs in English and Chinese, the kind of typography nothing smaller can do. But 20B means most people never actually run it. This node puts it on Civitai's sdcpp fleet: type a prompt that includes actual words - a sign, a logo, a book title - and get an image back with the text spelled correctly, billed in Buzz instead of VRAM.
That text rendering is the reason to reach for this node specifically. If you've ever prompted a local model for "a neon sign reading 'Cafe Luna'" and gotten back "CAF£ LVN1", you know the pain Qwen-Image was built to kill. It's the pick when your image contains words - posters, product shots, UI mockups, anything with legible copy. The version dropdown even lets you pin the build, which matters because Qwen's dated revisions behave a little differently.
How it works
Standard pack client: submit engine: sdcpp, ecosystem: qwen, model: 20b, operation: createImage, long-poll, get a ComfyUI IMAGE back. No model input - the recipe fixes Qwen-Image server-side.
The inputs that matter
- prompt (required) - write sentences with the text you want rendered spelled out. Qwen's Qwen2.5-VL encoder is an LLM; it wants language, not tag soup.
- version -
latest,2509, or2512. These are the dated Qwen builds;latestis a sane default, pin a specific one if you've validated your workflow against it. - steps / cfg_scale - 20 / 2.5 defaults. Qwen runs at lower CFG than the SDXL generation; that's the model, not a mistake.
- width / height - 1024 default, 64–2048 range.
- negative_prompt - optional; the family responds to it, so a short artifact list is fine.
- loras - via a Civitai LoRA Selector.
Install
Pack install: ComfyUI Manager → search "Civitai Comfy Nodes" (publisher civitai) → Install → restart. Or git clone https://github.com/civitai/civitai-comfy-nodes.git into custom_nodes, pip install -r civitai-comfy-nodes/requirements.txt (just requests), restart.
Common issues
Credentials: Civitai Auth node into api_config or CIVITAI_API_TOKEN (from civitai.com/user/account); headless installs need the env var.
The practical gotcha: spell out the text exactly as you want it, including quote marks in the prompt - Qwen renders what's literally there, so "Cafe" vs "CAFE" is your typo, not the model's. And keep the text region reasonably large in the frame; tiny words at the 1024 default can still smear even for Qwen.
Budget note: 20B at 20 steps is a mid-weight job, and quantity goes to 12 - that's a fast way to blow through Buzz. One image to verify the text, then batch.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| output_formatopt | COMBO | 4 options: , jpeg, png, webP | |
| image_metadataopt | STRING | External metadata that will be stored with the image | |
| negative_promptopt | STRING | — | |
| sample_methodopt | COMBO | 16 options: , euler, heun, dpm2, dpm++2s_a, dpm++2m, +10 | |
| scheduleopt | COMBO | 12 options: , simple, discrete, karras, exponential, ays, +6 | |
| stepsopt | INT | 201–150 | — |
| cfg_scaleopt | FLOAT | 2.500–30 | — |
| seedopt | INT | 00–4294967295 | — |
| quantityopt | INT | 11–12 | — |
| lorasopt | CIVITAI_LORAS | — | |
| versionopt | COMBO | latest | 3 options: latest, 2509, 2512 |
| widthopt | INT | 102464–2048 | — |
| heightopt | INT | 102464–2048 | — |
| api_configopt | CIVITAI_CONFIG | Optional Civitai Auth connection; defaults to CIVITAI_API_TOKEN or stored OAuth login. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| errors | STRING | — |
| workflow_id | STRING | — |
| raw_json | STRING | — |