Nodes/ComfyUI-RookieUI/RookieUI A1111 CLIP Text Encode
ComfyUI Node

RookieUI A1111 CLIP Text Encode

Get A1111's prompt parsing back inside ComfyUI

By rookiestar28·Created 4 months ago·Updated 30 days ago· 89
RookieUI A1111 CLIP Text Encode
  • clip
  • CONDITIONING
text
steps10
a1111_engine
parser
embedding_directory
embedding_names
mean_normalizationtrue
use_old_emphasis_implementationfalse

Here's a thing that trips up everyone who moves from Automatic1111 to ComfyUI: paste the exact same prompt into ComfyUI's stock CLIPTextEncode and you don't get the same image. Same checkpoint, same seed, same everything - different result. That's because A1111 and ComfyUI parse and weight prompts differently. A1111 chunks tokens at 75, normalizes attention weights a particular way, and reads (word:1.2) emphasis on its own scale. This node reproduces A1111's tokenizer and conditioning behavior so a prompt written for the WebUI behaves the way it was written.

That's the entire thesis of the RookieUI pack, really - it's an A1111-style sidebar on top of ComfyUI, and prompt parity is the part people actually care about. This is the SD1.5-class encoder; there's a separate SDXL sibling.

How it works

You feed it your prompt text and a clip, and it compiles the prompt into ComfyUI conditioning using A1111 semantics instead of raw passthrough. It handles the A1111 grammar the community lives by: attention markers like (text:1.2), (text) and [text]; BREAK to force a new token chunk; AND for weighted multi-condition composition; scheduling slices like [from:to:at]; and alternation like [a|b]. It also resolves textual-inversion embeddings by name. The output is a single CONDITIONING you wire straight into your KSampler's positive (or negative) input.

Worth knowing: this parity is scoped to the Stable Diffusion family - SD1.5, SDXL, Pony, Illustrious, Noob. Newer non-SD models (Flux, Qwen, Z-Image) run on their native ComfyUI text encoders and don't get A1111 parsing, because there's nothing to be faithful to there.

The inputs that matter

  • text - your prompt, with A1111 syntax intact. That's the point; write it the way you would in the WebUI.
  • parser (A1111 / full / comfy++ / fixed attention) - how weights and emphasis are interpreted. Leave it on A1111. The others exist for compatibility and diagnostics; the default is the one that reproduces the WebUI.
  • mean_normalization (default true) - normalizes the weighted token vectors the way A1111 does. This is a big part of why emphasis feels the same; leave it on unless you're deliberately chasing the old behavior.

The rest are for edge cases. use_old_emphasis_implementation restores A1111's pre-2023 emphasis math if you're reproducing an old image. steps feeds prompt scheduling (the [from:to:at] syntax needs to know the step count). embedding_directory and embedding_names help the node find and diagnose textual-inversion files, with explicit missing-embedding errors instead of silent failures. And a1111_engine (parity / text_only / legacy) is the master switch - parity is the full A1111 path, legacy falls back to the older tokenization if a host environment needs it.

How to install it

Via ComfyUI Manager: search ComfyUI-RookieUI, install, restart. Manually, from your ComfyUI root:

cd ComfyUI/custom_nodes
git clone https://github.com/rookiestar28/ComfyUI-RookieUI
cd ComfyUI-RookieUI
python -m pip install -r requirements.txt

Then restart ComfyUI.

Common issues

Embeddings are where people get confused, and it's usually not this node's fault. A textual inversion is locked to the text encoder it was trained on: an SD1.5 embedding won't load on SDXL, and none of them apply to Flux/Qwen/Z-Image models at all. The nasty part is that most tools silently ignore an embedding they can't apply - so if a trigger word "seems to work" on a model outside its architecture, the filename is probably just being read as ordinary prompt text. This node at least surfaces missing-embedding diagnostics; if an embedding does nothing, check that its base model matches your checkpoint before assuming the node is broken.

The other one: if your image differs from A1111 even through this node, confirm you're on parser: A1111 with mean_normalization on, and that you're actually using this node and not the stock encoder somewhere in the graph.

CategoryRookieUI/conditioning

Inputs (9)

NameTypeDefaultDescription
textSTRING
clipCLIP
stepsoptINT101–10000
a1111_engineoptCOMBO3 options: parity, text_only, legacy
parseroptCOMBO4 options: A1111, full, comfy++, fixed attention
embedding_directoryoptSTRING
embedding_namesoptSTRING
mean_normalizationoptBOOLEANtrue
use_old_emphasis_implementationoptBOOLEANfalse

Outputs (1)

NameTypeDescription
CONDITIONINGCONDITIONING