Nodes/ComfyUI-TJ_NODE/Z-Image Turbo (TJ)
ComfyUI Node

Z-Image Turbo (TJ)

The whole Z-Image pipeline in one node, LoRAs and ControlNet included

By designloves2·Created 4 months ago·Updated 3 days ago· 13
Z-Image Turbo (TJ)
  • image
  • model_override
  • clip_override
  • vae_override
  • positive_override
  • negative_override
  • latent_override
  • zit_control
  • image
  • latent
  • width
  • height
  • model
  • model_clean
  • clip
  • vae
  • positive
  • negative
model_nameZIT/z_Image_turbo_bf16.safetensors
clip_nameQwen3/qwen_3_4b.safetensors
vae_namez-image-Vae.safetensors
positive
negative拒绝, 限制, 不应答, lowres, error, cropped, worst quality, low quality, jpeg artifacts, heterochromia, out of frame, disfigured, blurry, fat, (ugly:1.3), deformed, mutilated, fingers cut, face cut, head cut, bad anatomy, bad proportions, two heads, two faces, deformed hands, (twisted fingers:1.22), extra fingers, poorly drawn, grainy, poorly drawn face, mutation, poor facial details, cropped head, poorly drawn eyes, unclear eyes, cross-eyes, malformed limbs, poorly drawn hands, fused hands, mutated hands, malformed hands, (mutated fingers:1.4), (fused fingers:1.313), interlocked fingers, extra or missing fingers, (one hand with more than 5 fingers), (one hand with less than 5 fingers), one hand with more than 5 digits, one hand with less than 5 digits, extra digits, fewer digits, bad hair, poorly drawn hair, fused hair, poorly drawn feet, malformed feet, extra or missing feet, fused feet, missing or extra limbs, disfigured, mutilated hands, extra hands, extra arms, extra legs, missing arms, missing hands, missing legs, fingers of different thickness, pointed fingers, thick fingers, (long thumbs:1.35), sharp fingernails, (greyscale:1.3), grain, (monochrome:1.3), Text, Watermark
get_name(none)
auto_setfalse
setnode_nameZ-Image
ratio_preset2:3
megapixels1.60
divisible_by32
seed1
steps8
width0
height0
batch_size1
cfg1.0
sampler_nameeuler
schedulersimple
denoise1.00
aura_shift3.0
lora_slots0
lora_1_enablefalse
lora_1_nameLora/lina/LINA_ZIT.safetensors
lora_1_strength1.00
lora_2_enablefalse
lora_2_nameNone
lora_2_strength1.00
lora_3_enablefalse
lora_3_nameNone
lora_3_strength1.00
lora_4_enablefalse
lora_4_nameNone
lora_4_strength1.00
lora_5_enablefalse
lora_5_nameNone
lora_5_strength1.00

A distilled-model one-shot: loader, encoder, sampler, and LoRA stack in one node

Z-Image Turbo (TJ) is a self-contained generation node for the Z-Image Turbo model: it loads the diffusion model, the Qwen3 text encoder, and the VAE; encodes your prompt; applies up to five LoRAs; optionally runs ZIT ControlNet; samples; decodes; and hands you the image - plus the model, latent, and conditioning for whatever you want to do next. It's the "everything from prompt to pixels" node, Z-Image edition.

Why a single node for this? Because Z-Image Turbo is a distilled, few-step model (the defaults: 8 steps, cfg 1.0, euler/simple - the classic turbo recipe where CFG stays low and steps stay short), and for a fast iterative model, the friction of wiring the standard loader→CLIP→sampler graph for every test kills the whole point. This collapses that graph into one node, and its setnode_name defaults to "Z-Image" because it's built to also be a wireless provider.

How it works

The node wraps the standard Z-Image Turbo graph. ratio_preset + megapixels + divisible_by compute your width/height (leave width/height at 0 and it does the math), and aura_shift (default 3) is the Z-Image-specific sampling tweak. The lora_1_enable...lora_5_strength slots stack up to five LoRAs inline - no separate LoRA loader nodes cluttering the graph.

The overrides are where it gets flexible: image flips it to img2img, latent_override wins over image/empty-latent, positive_override/negative_override replace the text with ready-made conditioning, and zit_control accepts the bundle from ZIT ControlNet (TJ) for depth/canny/pose control. You can also bypass the built-in loaders entirely with model_override/clip_override/vae_override.

The outputs that matter

The headline one is image. But it also passes through latent, model, clip, vae, and positive/negative conditioning, plus width/height - so you can chain a second pass (upscale, img2img refinement) without re-running the whole pipeline, and model_clean gives you the un-LoRA'd model for comparison. That output breadth is the difference between "a generator" and "a pipeline component."

Install it and get the models

Install the pack, then place the models exactly where the node expects them:

cd ComfyUI/custom_nodes
git clone https://github.com/designloves2/ComfyUI-TJ_NODE.git

Model paths from the README: models/diffusion_models/ZIT/z_Image_turbo_bf16.safetensors, models/text_encoders/Qwen3/qwen_3_4b.safetensors, models/vae/z-image-Vae.safetensors, and optionally models/loras/Lora/lina/LINA_ZIT.safetensors. Drop the model files in those spots, restart, and the dropdowns populate.

Where people get burned

The settings are the trap for people coming from full-scale models: Z-Image Turbo is a turbo, so cranking cfg to 7 and steps to 30 is actively wrong - keep them low (the defaults are the point) and tune aura_shift instead if output feels off. Second, the LoRA slots are per-slot toggles, not auto-applied: enable lora_N_enable or you'll wonder why your LoRA did nothing. And if you connect zit_control but nothing changes, check that ZIT ControlNet actually has a condition enabled - an empty bundle is a no-op. On an 8GB card this model is genuinely usable because it's distilled and fast - that's the whole reason this one-node wrap exists.

Category ✨ TJ_Node/Generator

Inputs (45)

NameTypeDefaultDescription
model_nameCOMBOZIT/z_Image_turbo_bf16.safetensors1 options: ZIT/z_Image_turbo_bf16.safetensors
clip_nameCOMBOQwen3/qwen_3_4b.safetensors1 options: Qwen3/qwen_3_4b.safetensors
vae_nameCOMBOz-image-Vae.safetensors1 options: z-image-Vae.safetensors
positiveSTRING
negativeSTRING拒绝, 限制, 不应答, lowres, error, cropped, worst quality, low quality, jpeg artifacts, heterochromia, out of frame, disfigured, blurry, fat, (ugly:1.3), deformed, mutilated, fingers cut, face cut, head cut, bad anatomy, bad proportions, two heads, two faces, deformed hands, (twisted fingers:1.22), extra fingers, poorly drawn, grainy, poorly drawn face, mutation, poor facial details, cropped head, poorly drawn eyes, unclear eyes, cross-eyes, malformed limbs, poorly drawn hands, fused hands, mutated hands, malformed hands, (mutated fingers:1.4), (fused fingers:1.313), interlocked fingers, extra or missing fingers, (one hand with more than 5 fingers), (one hand with less than 5 fingers), one hand with more than 5 digits, one hand with less than 5 digits, extra digits, fewer digits, bad hair, poorly drawn hair, fused hair, poorly drawn feet, malformed feet, extra or missing feet, fused feet, missing or extra limbs, disfigured, mutilated hands, extra hands, extra arms, extra legs, missing arms, missing hands, missing legs, fingers of different thickness, pointed fingers, thick fingers, (long thumbs:1.35), sharp fingernails, (greyscale:1.3), grain, (monochrome:1.3), Text, Watermark
get_nameCOMBO(none)1 options: (none)
auto_setBOOLEANfalse
setnode_nameSTRINGZ-Image
ratio_presetCOMBO2:39 options: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, +3
megapixelsFLOAT1.600.1–4
divisible_byINT328–128
seedINT10–18446744073709550000
stepsINT81–100
widthINT00–8192
heightINT00–8192
batch_sizeINT11–64
cfgFLOAT1.00–30
sampler_nameCOMBOeuler44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBOsimple9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
denoiseFLOAT1.000–1
aura_shiftFLOAT3.00–20
lora_slotsINT00–5
lora_1_enableBOOLEANfalse
lora_1_nameCOMBOLora/lina/LINA_ZIT.safetensors2 options: None, Lora/lina/LINA_ZIT.safetensors
lora_1_strengthFLOAT1.00-10–10
lora_2_enableBOOLEANfalse
lora_2_nameCOMBONone2 options: None, Lora/lina/LINA_ZIT.safetensors
lora_2_strengthFLOAT1.00-10–10
lora_3_enableBOOLEANfalse
lora_3_nameCOMBONone2 options: None, Lora/lina/LINA_ZIT.safetensors
lora_3_strengthFLOAT1.00-10–10
lora_4_enableBOOLEANfalse
lora_4_nameCOMBONone2 options: None, Lora/lina/LINA_ZIT.safetensors
lora_4_strengthFLOAT1.00-10–10
lora_5_enableBOOLEANfalse
lora_5_nameCOMBONone2 options: None, Lora/lina/LINA_ZIT.safetensors
lora_5_strengthFLOAT1.00-10–10
imageoptIMAGEEmbedded GET / image input. Connected image switches to img2img.
model_overrideoptMODEL
clip_overrideoptCLIP
vae_overrideoptVAE
positive_overrideoptCONDITIONINGConnected = positive text is ignored.
negative_overrideoptCONDITIONINGConnected = negative text is ignored.
latent_overrideoptLATENTConnected = latent wins over image and empty latent.
zit_controloptZIT_CONTROLConnect ZIT ControlNet (TJ).

Outputs (10)

NameTypeDescription
imageIMAGE
latentLATENT
widthINT
heightINT
modelMODEL
model_cleanMODEL
clipCLIP
vaeVAE
positiveCONDITIONING
negativeCONDITIONING