A1111 Style Prompt
Your old A1111 prompt syntax, alive and well inside ComfyUI
- clip
- conditioning
So you made the jump from stable-diffusion-webui to ComfyUI - and now every saved prompt in your collection is garbage, because ComfyUI's stock CLIP Text Encode doesn't understand (text:1.2), doesn't know what BREAK means, and looks at [forest:city:0.5] like you typed a typo. This node fixes exactly that. It's a drop-in CLIP encode that parses the full A1111 prompt language, so your muscle memory and your old prompts work again without you learning a new syntax.
The name isn't a gimmick. It really does implement A1111's emphasis math, BREAK isolation, step scheduling, alternation, and wildcards - and it does it the way A1111 does, not the way ComfyUI approximates it.
How it works
The core trick is that it doesn't fake A1111 syntax on top of ComfyUI's plain encode. The pack ships a real parser (built on lark) that turns your prompt into a per-step schedule, then encodes each unique prompt exactly once and attaches a TransformerOptionsHook to the conditioning. During sampling that hook sees the sampler's sigmas, works out which step you're on, and swaps in the right embedding. No model input, no wires to the sampler - it walks your workflow graph to auto-detect the step count, and it works with any sampler or scheduler.
Two details make it feel like A1111 rather than a clone:
- Direct scaling instead of interpolation. A1111 multiplies the embedding by
z * weight; ComfyUI's native approach blends between embeddings. The multiplication is what gives the "A1111 look" and avoids the color burn you get from ComfyUI's interpolation at high weights. - Real
BREAK. EachBREAKsegment is tokenized separately into its own 77-token chunk, so "forest" doesn't bleed into the description of the character standing in it. On SDXL it scales CLIP-L and CLIP-G independently.
Inputs and outputs
Only four inputs, and you'll touch two of them:
| Input | Type | What it does |
|---|---|---|
| clip | CLIP | Wire your Checkpoint Loader / CLIP Loader here. Required. |
| text | STRING (multiline) | Your A1111-style prompt. Required. |
| normalization | BOOL (default off) | A1111's "Norm" vs "No Norm" toggle. Off = weights apply exactly as written (A1111's default, and what the README recommends for SDXL). On = rescales so the conditioning's mean matches the original, which stops saturation at very high weights on SD1.5. |
| debug | BOOL (default off) | Dumps the resolved schedule to the console - useful the first time something surprises you. |
The single output is conditioning, which feeds the positive input of your sampler, exactly like any other CLIP Text Encode. It's marked as an output node, so it also writes the resolved prompt into PNG metadata - handy for wildcard-heavy workflows.
The syntax that matters, if you're rusty:
a (beautiful:1.3) landscape # emphasis
artist name BREAK character, hat # BREAK isolation
[forest:city:0.5] at sunset # switch at 50% of steps
1girl, [as109|fkey], detailed # alternate every step
__outfits__ # wildcard
Percentage-based scheduling ([a:b:0.5]) is the portable choice. Integer step counts ([a:b:10]) are auto-detected against your sampler and get rescaled if you change steps later.
Installation
ComfyUI Manager is the easy path - search "A1111 Prompt Node" (the pack is Enferlain/ComfyUI-A1111-cond) and hit install. Or do it by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/Enferlain/ComfyUI-A1111-cond
pip install lark # the pack's only real Python dependency
Then restart ComfyUI. The lark parser is the one dependency that isn't already sitting in most installs; torch and aiohttp are just pinned requirements you'll already have. No model files to download - the ~140k-tag Danbooru and e621 databases for autocomplete ship in the repo. If you want wildcards, drop plain .txt files into ComfyUI/custom_nodes/ComfyUI-A1111-cond/data/wildcards/.
Where people get burned
- Step syntax with no sampler.
[thing:10]errors out if the node can't find a sampler downstream. Use[thing:0.5]and it doesn't care. - Alternation is positive-only. Put
[a|b]in the negative node and it silently uses step one's prompt. Don't fight it - keep the negative static. - This is a CLIP-era tool. It only speaks to CLIP-encoded models (SD1.5, SDXL, Illustrious, NoobAI, Pony). On Flux, Z-Image, or any LLM-encoded model,
(weight:1.2)andBREAKare dead letters - the encoder discards them. If you're on a 2026 model, this node is not for you.
Worth knowing even if you write plain prompts: the live token counter in the node header (with orange chunk-boundary bars) is genuinely useful for spotting the 75-token overflow that quietly ruins generations.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| text | STRING | — | |
| normalizationopt | BOOLEAN | false | — |
| debugopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| conditioning | CONDITIONING | — |