Qwen Image (fal.ai)
Rent the 20B text-rendering champ without the VRAM bill
- image
This node is the shortest route to Alibaba's Qwen-Image without owning the hardware. Qwen-Image is the 20B diffusion transformer that made text rendering look easy - crisp glyphs, clean posters, believable UI mockups, and it handles Chinese as well as English, which almost nothing else does. The catch is that 20B of MMDiT wants a serious GPU, so most people never ran it locally at all. FAL_QwenImage just phones out to fal.ai's hosted fal-ai/qwen-image endpoint, waits, and hands you the result as a normal ComfyUI image. Your GPU basically takes the call off while a server farms it out; you pay per image instead.
That's the whole deal with this pack - it's a wrapper, not a model. MIT-licensed, tiny, and cleanly typed by elle-trudgett (look for ComfyUI fal.ai Nodes in ComfyUI Manager). The heavy lifting happens inside fal.ai, which is worth remembering when the image finally lands: it's cloud compute on their tab, and the meters are running.
How it works
The node builds a request dict from your settings and calls fal.subscribe("fal-ai/qwen-image", arguments) through the pack's API handler. fal runs the generation, and the node downloads the result images and converts them back into a batched IMAGE tensor. From the outside it behaves like any local sampler node - wire it into a Preview or Save Image and you're done.
The two options that actually change what you get:
- prompt - the only required input. Qwen responds well to natural-language descriptions; it's a prompt-adherence heavyweight, not a tag-parser.
- image_size - a preset (
square_hd,square,portrait_4_3,portrait_16_9,landscape_4_3,landscape_16_9) orcustom, in which casecustom_width/custom_heighttake over. Default islandscape_4_3, which is a slightly odd default for a first run - switch tosquare_hdor your target aspect before you burn a few calls on the wrong shape.
After that: num_inference_steps (default 30), guidance_scale (default 2.5 - Qwen likes CFG down around here, don't crank it like SD1.5), seed (-1 = random), an optional negative_prompt, and output_format (png/jpeg). The acceleration and use_turbo toggles trade quality for latency on fal's side; leave them off for the first pass.
The output is one IMAGE - a batch if you set num_images above 1 (which multiplies the bill, by the way). Feed it into anything that eats images: an upscale pass, a Qwen-Image-Edit node from this same pack, a Save Image.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/elle-trudgett/fal-ai-comfyui-nodes
pip install -r fal-ai-comfyui-nodes/requirements.txt
or use ComfyUI Manager and search the pack title. No model files download - there's nothing local to download. Then give it a key:
export FAL_KEY="your-api-key" # from fal.ai/dashboard/keys
ComfyUI Desktop? Drop a config.ini into the fal-ai-comfyui-nodes folder with [API] / FAL_KEY = your-key. Restart ComfyUI either way.
Common issues
- "FAL_KEY not set" - the classic first-run wall. The node reads the env var, then
config.ini; set one, restart, done. - Black or obviously-flagged outputs - the enable_safety_checker toggle defaults to true, and fal's filter can return a flagged image when it decides your prompt crossed a line. You can turn it off, but their content policy still applies to the account.
- Silent cost - this is a paid API. A quick settings tinkering session can rack up a surprising tab, and it's easy to forget the node isn't local.
- Errors surface as
fal.ai error: ...- the pack unwraps fal's message for you; a rate-limit or balance error usually tells you exactly what's wrong.
For fast local work on a 24GB card, Z-Image is lighter and free; reach for this node when you want Qwen's specific strengths - text, posters, that 20B adherence - without the VRAM.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| num_imagesopt | INT | 11–4 | — |
| image_sizeopt | COMBO | landscape_4_3 | 7 options: square_hd, square, portrait_4_3, portrait_16_9, landscape_4_3, landscape_16_9, +1 |
| custom_widthopt | INT | 102464–14142 | — |
| custom_heightopt | INT | 76864–14142 | — |
| num_inference_stepsopt | INT | 302–250 | — |
| guidance_scaleopt | FLOAT | 2.50–20 | — |
| seedopt | INT | -1-1–2147483647 | — |
| negative_promptopt | STRING | — | |
| output_formatopt | COMBO | png | 2 options: png, jpeg |
| accelerationopt | COMBO | none | 3 options: none, regular, high |
| use_turboopt | BOOLEAN | false | — |
| enable_safety_checkeropt | BOOLEAN | true | — |
| private_modeopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |