Easy Prompt
Type LoRAs straight into your prompt text
- clip
- model
- MODEL
- Positive
- Negative
Easy Prompt is a CLIP text encoder with a trick: you can write <lora:name:weight> tags right in your prompt, and it loads those LoRAs, applies them to your model, strips the tags out of the text, and encodes the rest into conditioning. One node instead of the usual "LoRA loader → CLIP text encode" two-node shuffle.
That inline tag syntax is the same one used by ComfyUI-Prompt-Control and ComfyUI LoRA Manager, so if you've got prompts written for those, they port over cleanly. And if you're tired of dragging a separate LoRA loader around every time you want a different character or style in your workflow, this is the comfort you're looking for.
What it does under the hood
The node scans your prompt for <lora:...> tags with a regex, resolves the name against your ComfyUI/models/loras folder (subfolder paths and .safetensors suffixes both work), and applies the LoRA with the same load_lora_for_models call ComfyUI's own loader uses. Then it removes the tag from the text and encodes the cleaned prompt. Two weight formats:
<lora:mylora:0.8>- one number applies to both the model and the CLIP.<lora:mylora:0.8,0.5>- model strength, then clip strength. Handy when a LoRA is strong on the model but overcooks the text side.
This is real LoRA handling, not a gimmick. The mechanism is the same one ComfyUI's native loader uses, which is exactly what you want from a node like this.
Inputs and outputs
clip(CLIP, required) - the text encoder.positiveandnegative(STRING, multiline) - your prompts. Tags live in either.model(MODEL, optional) - wire this in or the LoRA has nothing to patch.
Outputs: MODEL (the model with your LoRAs baked in), plus Positive and Negative conditioning, which feed straight into a sampler just like any CLIPTextEncode output would.
Where people get burned
The model input being optional is the trap. If you feed LoRA tags but leave model disconnected, the node can only patch the clip side, and your LoRA effectively does far less than you expect. Wire the model in.
Missing LoRA names are handled gracefully but confusingly: the node prints [EasyPrompt] LoRA not found for tag ... to the console and leaves the tag in the prompt text - so you get a literal <lora:whatever:1> string in your conditioning rather than an error. Not catastrophic, but it's how workflows silently stop doing what they claim.
One caveat about conditioning in general: this node encodes with whatever CLIP you pass it, so it's meant for CLIP-based models (SD 1.5, SDXL, Illustrious, Pony lineage). The newer LLM-encoder models like Flux or Z-Image don't use this kind of CLIP encode node, so this isn't the tool for them.
Installation
It's part of the ComfyUI-Jax-Nodes pack. In ComfyUI Manager, search "ComfyUI-Jax-Nodes" and install, then restart. Manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/Kebolder/ComfyUI-Jax-Nodes
Restart and it'll show up. No requirements.txt, no extra pip packages, no model downloads - the LoRAs it loads are already in your models/loras folder. The pack uses ComfyUI's newer extension API, so keep ComfyUI reasonably current (late 2025 or newer).
If you're already neck-deep in a Krita-style workflow and want the version that also appends extra prompt fragments, that's Easy Prompt (W/ Append), the same pack's fuller node. For everyone else, this is the one.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| positive | STRING | — | |
| negative | STRING | — | |
| modelopt | MODEL | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |
| Positive | CONDITIONING | — |
| Negative | CONDITIONING | — |