Negative LoRA Loader
Negative LoRAs without doing the sign flip yourself
- model
- MODEL
You've probably heard that negative embeddings like EasyNegative are a dead end on anything modern - a vector trained on one text encoder's CLIP space just gets silently ignored by Qwen- or Mistral-encoded models. The replacement that actually survived is the negative LoRA: a LoRA trained on output you don't want, applied at negative strength so it suppresses those features instead of adding them. The trick is that nobody wants to type -0.8 and reason about sign flips in the middle of a workflow. This node exists to hide exactly that.
ComfyUI-SnakeOil is a one-node pack from Civitai creator Doctor Diffusion, whose "snake oil" nLoRAs target specific failure modes - bad hands, anatomy, watermarks, that kind of thing. Negative LoRA Loader is the whole pack, and its entire job is: pick an nLoRA from a dropdown, drag a slider, get a model back. The name "Snake Oil" is the joke. "A little snake oil can go a long way," says the README, and honestly, that's about right.
How it works
The node lists every .safetensors file in ComfyUI/models/nloras (it walks subfolders too, so you can organize) and hands the one you pick to ComfyUI's load_lora_for_models, the same function the built-in LoraLoader uses. The one difference is the slider: your "Snake Oil Amount" of 1.0 gets flipped to -1.0 before it's applied. That's the whole mechanism - a negative LoRA is just a LoRA with the sign inverted, nothing fancier. The pack even admits it in a code comment: "Invert the inverted_strength_value value to its negative equivalent haha yes really."
It also caches the loaded LoRA in memory, so re-running the graph doesn't re-read the file from disk each time. At strength 0, or if the file fails to load, it returns your model untouched and prints a note to the console - a fail-loudly behavior that's a big part of why negative LoRAs beat embeddings.
The inputs that matter
Three inputs, and honestly only one of them is interesting:
- model - your base MODEL, straight from a checkpoint loader or whatever's feeding the graph.
- nlora - the dropdown of nLoRAs found in your
nlorasfolder. Pick "None" to pass through unchanged. - inverted_strength_value (the slider labeled "Snake Oil Amount") - 0.0 to 2.0, default 1.0. This is your dose. At 1.0 it applies the LoRA at full negative strength; crank it toward 2.0 to suppress harder, drop toward 0 to barely tickle.
The output is a single MODEL - same type the built-in LoraLoader outputs - so it plugs straight into your KSampler's model input. If you were expecting the "negative" side of a negative prompt, stop: this doesn't touch the text encoder at all. It's a model operation, so it affects every sample through that model regardless of prompt.
Installing it
Use ComfyUI Manager (search "ComfyUI-SnakeOil") or clone it manually:
cd ComfyUI/custom_nodes
git clone https://github.com/DoctorDiffusion/ComfyUI-SnakeOil.git
Then restart ComfyUI. The only dependency is torch, which you already have - no models, no Python packages, nothing heavy.
The actual work is getting the LoRA files. Create ComfyUI/models/nloras and drop the .safetensors there:
mkdir -p ComfyUI/models/nloras
Grab Doctor Diffusion's nLoRAs (SDXL, SD3.5 Medium, or SD3.5 Large) or one of his standalone negative LoRAs from the Civitai pages linked in the README, and save it into that folder. Restart or refresh and it'll show up in the dropdown.
Where people get burned
- Wrong architecture. The nLoRA you download has to match your base model - an SDXL nLoRA on an SD3.5 checkpoint won't apply cleanly. This is the #1 failure mode and it's silent-ish:
load_lora_for_modelsthrows, the node logs an error and returns your model unmodified, and you keep generating wondering why nothing changed. Watch the console. - "None" looks like a bug. With "None" selected the node builds a path to a file that doesn't exist, fails the load, and returns the model as-is. That's the intended pass-through, just implemented the lazy way.
- Stale dropdown. Because the file list is built when the node loads, adding new nLoRAs can require a refresh or restart before they appear.
- The cache. If you overwrite an nLoRA file while ComfyUI is running, the node may keep serving the old cached copy until restart.
It's a small tool, but it does one thing without fuss: if you've got a bad-hands nLoRA and you're tired of typing negatives, this is the cleanest way to pour some snake oil on a workflow.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| nlora | COMBO | 1 options: None | |
| inverted_strength_value | FLOAT | 1.000–2 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |