SUPIR Model Loader (v2)
The loader that gets you LoRA support
- model
- clip
- vae
- SUPIR_model
- SUPIR_VAE
If you're building a SUPIR workflow from the individual nodes rather than the all-in-one SUPIR_Upscale box, this is the loader you want. It's the second-generation replacement for the original SUPIR_model_loader, and the whole reason it exists is one word: LoRAs.
The old loader picked your SDXL checkpoint by name and loaded it internally, which meant it was a dead end - nothing else in your graph could touch that model before SUPIR got it. This node flips that around: you feed it a MODEL, CLIP, and VAE you've already loaded yourself, from a plain CheckpointLoaderSimple. Which means you can put a LoraLoader between your checkpoint and this node, and SUPIR inherits whatever style or character LoRA you stacked on. That's a genuinely useful capability the legacy loader never had.
What it does
It merges the SUPIR checkpoint you pick with the SDXL model you hand it, producing the two custom types every other SUPIR node expects downstream. It's a merge step, not a swap - you still need a real SUPIR checkpoint file, this node isn't turning a plain SDXL model into a restoration model on its own.
Inputs and outputs that matter
Required: model, clip, vae - the three outputs of a normal checkpoint loader (plus anything you've chained on top, like a LoRA). supir_model is the enum picker for your SUPIR checkpoint file. fp8_unet casts the unet weights to torch.float8_e4m3fn, which the author's own node description flags plainly: it saves a lot of VRAM at a slight quality cost. diffusion_dtype should stay on auto unless you're actively debugging a load failure.
Optional: high_vram - uses Accelerate to push weights straight to GPU for a slightly faster load. Only worth flipping on if you actually have the VRAM headroom to spare during loading.
Outputs are SUPIR_model (type SUPIRMODEL) and SUPIR_VAE (type SUPIRVAE). The model output feeds the conditioner and sampler nodes; the VAE output feeds the encode/decode/first-stage nodes. Neither is a standard ComfyUI MODEL or VAE - they're SUPIR-specific types, so don't expect to wire them into ordinary KSampler or VAE Decode nodes.
How to install it
ComfyUI Manager: search "SUPIR", install, restart. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/kijai/ComfyUI-SUPIR
pip install -r ComfyUI-SUPIR/requirements.txt
Portable builds use python_embeded\python.exe -m pip install -r .... You'll need a fairly recent PyTorch; xformers is optional but auto-used if it's installed.
You need two checkpoint files in ComfyUI/models/checkpoints: a SUPIR checkpoint (SUPIR-v0Q for general restoration, SUPIR-v0F for lighter degradation - pruned safetensors versions are on Kijai's SUPIR_pruned HuggingFace repo) and any SDXL checkpoint of your choosing, since this loader is what lets you pick one rather than being locked to a name in a dropdown.
Common issues
fp8 on the unet is fine - the author calls it out as a real trade worth taking when VRAM is tight. Don't extend that logic to the VAE side of the pipeline though; that lives in the VAE-facing nodes (first_stage/encode/decode), and fp8 there produces visible artifacts rather than a clean saving - use tiled VAE processing instead.
Note this node is CLIP-agnostic by name only: it takes a single combined clip input, which is what a normal SDXL checkpoint loader hands you. If you're working with separately loaded clip_l and clip_g - say, from a DualCLIPLoader - you want the sibling node SUPIR_model_loader_v2_clip instead, not this one.
And since the pack itself is in maintenance-only mode now that SUPIR ships in ComfyUI core, if you hit an actual bug rather than a settings issue, don't expect a fast fix upstream - check whether the core node solves your problem before spending too long debugging the wrapper.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| vae | VAE | — | |
| supir_model | COMBO | 0 options: | |
| fp8_unet | BOOLEAN | false | — |
| diffusion_dtype | COMBO | auto | 4 options: fp16, bf16, fp32, auto |
| high_vramopt | BOOLEAN | false | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| SUPIR_model | SUPIRMODEL | — |
| SUPIR_VAE | SUPIRVAE | — |