SUPIR Model Loader (Legacy)
The original loader you probably don't want
- SUPIR_model
- SUPIR_VAE
The author's own node description for this one is refreshingly blunt: "Old loader, not recommended to be used." That's not filler text - take it at face value. This was the original way to load a SUPIR checkpoint and merge it with an SDXL model, before SUPIR_model_loader_v2 replaced it. It still works, it's still in the pack, and it's kept around for exactly one reason: not breaking workflows built before the v2 loader existed.
If you're starting fresh, use SUPIR_model_loader_v2 (or SUPIR_model_loader_v2_clip if you're working with separately loaded CLIP-L/CLIP-G) instead and skip this article's node entirely. Read on if you've inherited a workflow that already has this node in it and you're trying to understand what it's doing.
What it does, and why it was replaced
This loader picks your SDXL checkpoint by filename directly, inside the node, rather than accepting an already-loaded MODEL/CLIP/VAE trio. That sounds like a minor implementation detail, but it has one real consequence: you can't put a LoRA loader in front of it. There's no model input to intercept. The v2 loader exists specifically to fix this - it accepts pre-loaded components, so a LoraLoader slotted before it carries through into the SUPIR merge. If your workflow needs a style or character LoRA layered under the restoration, this node structurally can't do that for you.
Inputs and outputs that matter
Required inputs: supir_model (enum, pick your SUPIR checkpoint) and sdxl_model (enum, pick your SDXL checkpoint - both pulled from models/checkpoints), plus fp8_unet (casts unet weights to float8, trading a little quality for a lot of VRAM) and diffusion_dtype (leave on auto unless something's failing to load). There's no optional section on this node - what you see is what you get.
Outputs match the v2 loader exactly: SUPIR_model (SUPIRMODEL) and SUPIR_VAE (SUPIRVAE), feeding the same downstream nodes - conditioner, sampler, encode/decode/first-stage.
How to install it
Same pack, same steps as every other SUPIR node here. ComfyUI Manager: search "SUPIR", install, restart. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/kijai/ComfyUI-SUPIR
pip install -r ComfyUI-SUPIR/requirements.txt
Portable: python_embeded\python.exe -m pip install -r ... from the portable root. A reasonably current PyTorch is expected; xformers is optional. You'll need the SUPIR checkpoint (pruned safetensors on Kijai's HuggingFace, SUPIR_pruned) and an SDXL checkpoint both sitting in ComfyUI/models/checkpoints for the dropdowns to populate.
Common issues
If your dropdown for supir_model or sdxl_model is empty, it's a models-folder problem, not a node problem - both checkpoints need to actually be present in ComfyUI/models/checkpoints before ComfyUI starts, or a manager refresh won't see them either.
The bigger issue is one of intent: people land on this node because it's what an old tutorial or shared workflow uses, then wonder why LoRAs don't seem to apply anywhere in their SUPIR pass. That's this loader working exactly as designed - it was never built to accept one. Swap in SUPIR_model_loader_v2 and rewire your checkpoint loading upstream instead of debugging a limitation that isn't a bug.
And, same caveat as the rest of the pack: this repo only gets breaking-bug fixes going forward, since SUPIR now has native support in ComfyUI core. For a legacy node that was already discouraged before that, there's even less reason to expect further changes here.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| supir_model | COMBO | 0 options: | |
| sdxl_model | COMBO | 0 options: | |
| fp8_unet | BOOLEAN | false | — |
| diffusion_dtype | COMBO | auto | 4 options: fp16, bf16, fp32, auto |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| SUPIR_model | SUPIRMODEL | — |
| SUPIR_VAE | SUPIRVAE | — |