Nodes/ComfyUI-QwenImageWanBridge/Z-Image Text Encoder (Simple)
ComfyUI Node

Z-Image Text Encoder (Simple)

The stripped-down Z-Image encoder for negatives

By fblissjr·Created 12 months ago·Updated 4 months ago· 188
Z-Image Text Encoder (Simple)
  • clip
  • conditioning
  • formatted_prompt
  • debug_output
user_prompt
trigger_words
template_presetnone
system_prompt
add_think_blocktrue
thinking_content
assistant_content
filter_paddingtrue

This is the trimmed-down twin of ZImageTextEncoder. Same Qwen3-4B chat-template plumbing, same template and thinking-block support, but it drops the conversation chaining. The pack author points you at it for one job in particular: negative prompts. When you don't need to feed a multi-turn conversation forward, there's no reason to carry the extra output around, so this is the one you reach for on the negative branch of your sampler.

Quick context, because it changes how you should think about "negative" here. Z-Image comes in two flavors and they behave differently. Turbo is guidance-distilled and runs at CFG 1 - at CFG 1 there is no classifier-free guidance, so a negative prompt does nothing no matter what you plug in. Base runs at CFG 3-5 and genuinely responds to negatives. So this node earns its keep on Base (or any CFG > 1 setup); on Turbo it's along for the ride but won't change your output. That's a property of the model, not the node.

How it works

Like its full-featured sibling, it wraps your text in the Qwen3-4B chat template rather than the old CLIP path. Which means the usual negative-prompt tricks from the SDXL era are off the table: negative embeddings target a CLIP vocabulary these models never learned, and prompt weighting isn't implemented. For a Z-Image negative you just write plain language - "bad anatomy, blurry, watermark" - and let the encoder handle it. The README's own example wires exactly that: ZImageTextEncoder into the KSampler's positive, ZImageTextEncoderSimple into the negative.

The inputs and outputs that matter

  • clip (required) - the Qwen3-4B encoder loaded as CLIP.
  • user_prompt (required) - for a negative, the stuff you want to exclude.
  • template_preset / system_prompt - available if you want them, but for a negative you usually leave these empty and just list what to avoid.
  • add_think_block (default on), thinking_content, assistant_content - the same chat channels as the full node, minus conversation state.

Outputs are conditioning (into the KSampler negative), formatted_prompt (what actually got encoded), and debug_output. Note what's missing versus the full encoder: there's no conversation output here. That's the deliberate difference - no chaining, so nothing to pass to ZImageTurnBuilder.

How to install it

ComfyUI Manager: search ComfyUI-QwenImageWanBridge, install, restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/fblissjr/ComfyUI-QwenImageWanBridge

then restart. You'll need a Z-Image checkpoint and the Qwen3-4B text encoder in place; this node is just the front door to the latter.

Common issues & troubleshooting

The negative has zero effect. You're almost certainly on Turbo at CFG 1. Switch to Z-Image Base and a CFG of 3-5 if you actually want negative prompting; on Turbo, nothing you type here will matter.

You wanted to chain turns and this node won't. Right node, wrong variant - use the full ZImageTextEncoder for anything that produces a conversation to feed forward. Simple is intentionally a dead end.

It's a research pack, so expect churn. fblissjr flags breaking changes up front. If a field moves or a default flips after an update, that's the deal you signed up for - re-check the node against a fresh pull rather than assuming your old graph still wires the same way.

CategoryZImage/Encoding

Inputs (9)

NameTypeDefaultDescription
clipCLIPZ-Image CLIP model (lumina2 type)
user_promptSTRINGYour prompt - what you want (or don't want) the model to generate
trigger_wordsoptSTRINGLoRA trigger words - prepended to user_prompt. Can convert to input for LoRA loader connection.
template_presetoptCOMBOnoneSelect a template to auto-fill system_prompt (editable after selection)
system_promptoptSTRINGSystem instructions (auto-filled by template, then editable)
add_think_blockoptBOOLEANtrueAdd <think></think> block. Default True matches DiffSynth/diffusers reference implementations.
thinking_contentoptSTRINGContent inside <think>...</think> tags
assistant_contentoptSTRINGContent after </think> tags
filter_paddingoptBOOLEANtrueFilter padding tokens (matches diffusers/DiffSynth). Disable for stock ComfyUI behavior.

Outputs (3)

NameTypeDescription
conditioningCONDITIONING
formatted_promptSTRING
debug_outputSTRING