A ComfyUI custom node for managing character LoRAs. Save a character once — its LoRA file, trigger word, and description — and load it into any prompt with a single click. Mix multiple characters in one generation, tweak strengths per-run without touching your saved presets, and keep a large character library organized without cluttering your workflow.
Built for anyone doing repeated character-consistent generation (illustration, portraiture, storytelling) who's tired of re-typing the same trigger + description block and manually wiring up LoRA loaders every time.
One node — Character Prompt Loader — replaces the usual LoRA loader + prompt text combo for character work:
- A checkbox per saved character. Check the ones you want in this generation.
- Checking a character reveals an inline Model / CLIP strength control, pre-filled from the saved preset — tweak it for this run only, without altering what's saved.
- Outputs a ready-to-use
model,clip(LoRAs applied and stacked), andprompt(the combined trigger + description text for every checked character, plus your scene/action prompt).
A "⚙ Manage Characters" popup, opened from the node itself — no separate editor node needed:
- Add a new character: name, LoRA file (pulled live from your loras folder), Model/CLIP strength, trigger, description.
- Click any saved character in the list to load it back into the form for editing.
- Delete with an inline confirmation — no accidental deletes.
- Search by name or trigger — handy once your library grows past a handful of characters.
- A "visible on node" toggle per character, so a library of 50+ presets doesn't have to clutter the checkbox list — only the ones you flag as visible show up on the node face.
Everything is stored locally in a presets.json file — no external services, no manual YAML editing.
- Download or clone this repository into your ComfyUI custom nodes folder:
ComfyUI/custom_nodes/CharacterLoraPreset/ - Restart ComfyUI.
- Add the Character Prompt Loader node (search "character" in the Add Node menu, or find it under the
CharacterLoraPresetcategory).
No extra dependencies beyond what ComfyUI already ships with.
- Add a
Character Prompt Loadernode and wiremodel/clipin from your checkpoint loader. - Click ⚙ Manage Characters.
- Fill in:
- Preset Name — an internal identifier, e.g.
Janice_25 - LoRA File — pick from the dropdown
- Strength (Model / CLIP) — the LoRA's default strength
- Trigger — the trigger word(s) your LoRA was trained on
- Description — the character description block that follows the trigger in your training captions
- Preset Name — an internal identifier, e.g.
- Click Save Preset.
- Close the popup — the character now appears as a checkbox on the node.
- Check the character(s) you want active for this generation.
- Each checked character reveals a Model/CLIP strength row — click the arrows to nudge by 0.01, or click the value to type an exact number. These are per-run tweaks only; they don't change the saved preset.
- Add your scene/action prompt in the
scene_promptbox. - Wire the node's
model/clipoutputs into your sampler chain, andpromptinto your positiveCLIPTextEncode.
The final prompt is built as one line per checked character (trigger, description), followed by your scene prompt — matching the structure most character LoRA training captions use.
- Use the search bar in the Manage Characters popup to filter by name or trigger.
- Toggle "Visible on node" off for characters you're not actively using — they stay saved, just hidden from the node's checkbox list until you need them again.
All presets live in a single presets.json file (created automatically), typically at:
ComfyUI/user/default/character_lora_preset/presets.json
(Falls back to a local folder inside the custom node directory on older ComfyUI versions without a user-data API.)
Each preset:
{
"Janice_25": {
"lora": "Janice_25_v3.safetensors",
"strength_model": 1.0,
"strength_clip": 1.0,
"trigger": "Janice_25",
"description": "Janice, a 25-year-old Latina woman with long wavy dark brown hair, ...",
"visible": true
}
}- Built and tested against the classic (non-Vue) ComfyUI frontend.
- Per-run strength overrides are encoded invisibly in the node's saved workflow state, so they survive switching workflow tabs or reloading the browser.
- Renaming a preset isn't currently supported — delete and recreate under the new name if needed.
https://github.com/AtheIIa/CharacterLoraPreset/blob/main/LICENSE