LLS Universal Model Loader
One loader that stops caring which model family you picked
- model
- text_encoder
- vae
- model_info
If you've ever swapped a workflow from SD 1.5 to SDXL, you know the pain: the loader changes, the CLIP setup changes, sometimes the VAE handling changes. LLS Universal Model Loader is the LLS-node answer to that - one loader that speaks SD 1.5, SDXL, and FLUX, and exposes the same three outputs no matter which you load. The trick it pulls off: SDXL and FLUX need two text encoders, but the node resolves that internally and hands you a single text_encoder output, so the graph downstream never needs to know.
It's the loader half of the pack's "universal" line, designed to feed LLS Universal Prompt Encode and LLS Universal Image Generator.
How it works
Pick a checkpoint from model_name, and the node loads it through ComfyUI's checkpoint machinery, tagging what it finds with family metadata. The clever bit is text_encoder_source and the paired text_encoder_1 / text_encoder_2 dropdowns: when a model needs dual encoders (SDXL's two CLIPs, or FLUX's CLIP+T5), the node assembles them into one combined CLIP object before anything else sees it. Downstream, you just have a CLIP - which is precisely why the downstream prompt encoder can be family-agnostic.
The controls are layered so beginners don't drown:
model_family(defaultAuto) - what the loader assumes. Auto means "figure it out from the checkpoint," and that's the right default. You only pin it when a model genuinely misdetects.load_mode-simplehides the encoder/VAE plumbing;advancedsurfaces it for the cases where you want an external VAE or text encoder instead of the embedded one.vae_source/text_encoder_source-auto,embedded, orexternal. Defaultautouses what's baked into the checkpoint. Flip toexternalwhen you're doing the FLUX thing of supplyingae.safetensorsand a separate T5/CLIP by hand.vae_name- the external VAE to use ifvae_sourceis external. Default(auto).
Outputs
model, text_encoder (that single CLIP), and vae go straight into your sampler/encoder chain. The fourth, model_info, is a JSON string with the resolved family, checkpoint name, and encoder details - feed it to LLS Universal Prompt Encode's model_info input to make the downstream family detection bulletproof instead of inferred. (You can also wire it to a text viewer just to confirm the loader got your model right.)
Wiring it in
The universal trio, minimal:
LLS Universal Model Loader → LLS Universal Prompt Encode → LLS Universal Image Generator (or any KSampler)
Installing
ComfyUI Manager → search "LLS-node", or:
cd ComfyUI/custom_nodes
git clone https://github.com/Gin3601/LLS-node
Restart, look under LLS/Model Loader. The pack ships no requirements.txt; this node uses only ComfyUI's built-in model loading, so nothing extra to install.
Gotchas
- A bare
(no models found)in themodel_namedropdown means nothing is inComfyUI/models/checkpoints/. Drop a.safetensorsin there and refresh - this is the single most common "why is this empty" cause across every loader node in the pack. - If you're loading FLUX from a bare diffusers-style or GGUF layout, don't fight
model_familyin simple mode - switchload_modetoadvanced, set encoder source toexternal, and point at your T5/CLIP. Auto handles the common cases; it can't conjure files you haven't placed. text_encoder_1/text_encoder_2default to(auto). You basically never set these manually unless you know a model wants a specific pair of encoders. The(auto)placeholder is the safe state.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| model_name | COMBO | 1 options: (no models found) | |
| model_family | COMBO | Auto | 9 options: Auto, SD1.5, SD15, SDXL, SDXL_TURBO, FLUX_SCHNELL, +3 |
| load_mode | COMBO | simple | 2 options: simple, advanced |
| vae_source | COMBO | auto | 3 options: auto, embedded, external |
| text_encoder_source | COMBO | auto | 3 options: auto, embedded, external |
| text_encoder_1 | COMBO | (auto) | 2 options: (auto), (no text encoders found) |
| text_encoder_2 | COMBO | (auto) | 2 options: (auto), (no text encoders found) |
| vae_name | COMBO | (auto) | 2 options: (auto), pixel_space |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| text_encoder | CLIP | — |
| vae | VAE | — |
| model_info | STRING | — |