Cutoff Regions To Conditioning
Turn your cutoff map into conditioning the sampler can actually use
- clip_regions
- CONDITIONING
Base Prompt hands you a bag of tokens, Set Regions draws the boundaries, and this node is the one that actually does the embedding arithmetic and hands the sampler a finished CONDITIONING. It's the end of every cutoff chain, and it's also where the three knobs you mostly ignore live - until the day they're exactly what's wrong.
If you've built the chain (Base Prompt → Set Regions → this node), the output drops straight into the positive input of a KSampler like any normal conditioning. You can also run a second chain for your negative prompt if you want attribute confinement there too. One practical nicety in the source: if no regions have been set - you skip Set Regions entirely - it just passes the base embedding through untouched. So it's safe to keep in a workflow as a passthrough, though that's a weird way to use it.
The inputs that matter
- clip_regions - the accumulated
CLIPREGIONfrom your Base Prompt and Set Regions nodes. - mask_token - the token used to replace masked-off words. Default blank = the
<endoftext>token, which is the sane choice. If you type something that tokenizes to multiple tokens, you get a console warning and it silently keeps only the first. Leave it alone unless you have a specific reason. - strict_mask - the one you might actually touch. At 1.0 the target words affect only their own region - "blue" colors hair and nothing else. At 0.0 the targets stop affecting other specified regions but still leak into anything outside all regions. So if "blue" should also tint the sky in your image, drop this toward 0.
- start_from_masked - the starting point the embedding "travels" from. 1.0 starts from the fully masked prompt; 0.0 starts from the original prompt. Fun fact from the README: when every region weight is exactly 1.0, the two are mathematically identical, so this only matters once you start scaling weights above or below 1.
How it works
For each region, the node re-encodes the prompt with the target tokens masked out, subtracts your starting embedding to get the target's "direction" in embedding space, scales it by the region's weight and mask, and sums the result back into the base embedding. That's the whole trick behind "blue hair, yellow eyes, red shoes" rendering with the right colors on the right nouns. You don't need to follow the math to use it - but knowing the masks are doing the work explains why the Set Regions matching rules matter so much.
Install
Same routine as the rest of the pack - search "Cutoff" in ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/BlenderNeko/ComfyUI_Cutoff
Then restart ComfyUI. Pure Python, no requirements.txt, no model files. You'll find it under conditioning > cutoff - right next to the ADV version, which is the same node with prompt-weighting controls added. Start here.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| clip_regions | CLIPREGION | — | |
| mask_token | STRING | — | |
| strict_mask | FLOAT | 1.000–1 | — |
| start_from_masked | FLOAT | 1.000–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CONDITIONING | CONDITIONING | — |