Nodes/smZNodes/CLIP Text Encode++
ComfyUI Node

CLIP Text Encode++

A1111 Prompt Syntax Inside ComfyUI

By shiimizu·Created 3 years ago·Updated about a year ago· 328
CLIP Text Encode++
  • clip
  • CONDITIONING
text
parsercomfy
mean_normalizationtrue
multi_conditioningtrue
use_old_emphasis_implementationfalse
with_SDXLfalse
ascore6.00
width1024
height1024
crop_w0
crop_h0
target_width1024
target_height1024
text_g
text_l
smZ_steps1

If you came to ComfyUI from AUTOMATIC1111's webui and immediately missed (word:1.3), alternating [dog|cat], or the AND/BREAK keywords, this is the node that gets them back. CLIP Text Encode++ is a drop-in replacement for the stock CLIP Text Encode - same job, wire it the same way - except it can parse your prompt the way A1111 does instead of the way ComfyUI does, right down to reproducing near-identical images from the same prompt and seed. It's the single most requested piece of A1111-parity in the ComfyUI ecosystem, and on r/comfyui it's the answer whenever someone asks "how do I get prompt editing back."

One thing worth knowing before you touch it: this whole toolkit - attention weights, AND, BREAK, alternation - is CLIP-era syntax. It does real work on SD 1.5, SDXL, Illustrious, Pony and anything else still running a CLIP text encoder. On the newer LLM-encoded models (Z-Image, Flux 2 Klein, Anima) there's no CLIP layer for any of this to attach to, and (word:1.4) just gets fed through as literal punctuation. So reach for this node on your Illustrious or SDXL workflows, not your Z-Image ones.

How it actually works

ComfyUI and A1111 tokenize and encode prompts differently under the hood - different weight normalization, different chunking - which is why the "same" prompt on both UIs doesn't produce the same image. This node swaps in A1111's own encoding pipeline as an option. The key input is parser, and it's the one thing you have to change to get anything different from stock: it defaults to comfy (literally "the default way ComfyUI handles everything"), so if you drop this node in and leave it alone, you'll get bit-identical behavior to the vanilla node and wonder what the fuss is about. Switch it to A1111 for the real thing, or comfy++ if you want ComfyUI's tokenizer with A1111-style weight averaging. compel and fixed attention are also on the menu if you know what you're looking for.

The inputs that matter

  • text and clip - same as the stock node.
  • parser - pick your dialect (see above).
  • mean_normalization (on by default) - whether prompt weights get averaged the way A1111 does it.
  • multi_conditioning (on by default) - this is what makes AND work: splits your prompt on AND and runs each piece as its own conditioning, similar to a ConditioningCombine node but with per-prompt weighting.
  • use_old_emphasis_implementation - off by default, exists for reproducing old A1111 seeds against a legacy emphasis algorithm. Leave it off unless you're chasing a specific old result.
  • with_SDXL - flip this on to reveal the SDXL refiner-style fields (ascore, width/height, crop_w/crop_h, target_width/target_height, text_g, text_l) mirroring ComfyUI's native SDXL text-encode node. Right-click the node to hide the ones you don't need - the README calls this out explicitly.

There's also an optional smZ_steps input (defaults to 1) tied to the sampler's step count for prompt-editing timing; most people never touch it.

Output is a single CONDITIONING, exactly like the stock node - wire it straight into your sampler's positive or negative input.

Installing it

Either use ComfyUI Manager and search "smZNodes" or "CLIP Text Encode++", or do it by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/shiimizu/ComfyUI_smZNodes

Restart ComfyUI. No models to download, nothing heavy - it's a pure logic swap on the text-encoding path.

Where people get burned

LoRA syntax is not supported. The README states this plainly: <lora:name:1.0> inside the prompt text does nothing here. If you're pasting a prompt over from A1111 wholesale, strip the LoRA tags first and load them with a proper LoRA loader node instead.

"Identical" has limits. Simple prompts really do reproduce near-perfectly between A1111 and ComfyUI once you're on the A1111 parser. Complex prompts with heavy nested weighting can still drift slightly - that's when you reach for the companion Settings (smZ) node to close the remaining gap (RNG source, eta, and a few sampler-level knobs matter more than people expect).

It hooks deep into sampling, which means it can collide with other node packs that also patch the sampler - people have reported it getting knocked out (along with several other packs) after installing certain custom samplers, and version mismatches between smZNodes and a fast-moving model architecture (LTX-2's early days, for instance) have produced tensor-shape errors that needed an update to fix. If something upstream that touches sampling starts acting weird, smZNodes is one of the first places to check - and updating it via Manager is usually the fix.

Categoryconditioning

Inputs (17)

NameTypeDefaultDescription
textSTRING
clipCLIP
parserCOMBOcomfy6 options: comfy, comfy++, A1111, full, compel, fixed attention
mean_normalizationBOOLEANtrueToggles whether weights are normalized by taking the mean
multi_conditioningBOOLEANtrue
use_old_emphasis_implementationBOOLEANfalse
with_SDXLBOOLEANfalse
ascoreFLOAT6.000–1000
widthINT10240–16384
heightINT10240–16384
crop_wINT00–16384
crop_hINT00–16384
target_widthINT10240–16384
target_heightINT10240–16384
text_gSTRING
text_lSTRING
smZ_stepsoptINT11–18446744073709550000

Outputs (1)

NameTypeDescription
CONDITIONINGCONDITIONING