Load Diffusion Model Hub Pro
Load a Diffusion Model and Route the Whole Recipe in One Node
- MODEL
- steps
- step_refiner
- cfg
- unet_name
- sampler_name
- scheduler
- denoise
- positive_prompt
- negative_prompt
- metadata
Load Diffusion Model Hub Pro is the UNET-flavored sibling of the pack's flagship hub. Where Load Checkpoint Hub Pro loads a whole checkpoint and hands you MODEL, CLIP, and VAE, this one loads just the diffusion/UNET weights and routes the sampling recipe alongside: steps, refiner steps, CFG, sampler, scheduler, denoise, plus your positive and negative prompts and a metadata string. One node, the model and the entire generation plan, on a single line of sockets.
It's the node for the modern split-model world. Checkpoints bundle everything into one file; diffusion models don't. If you're running Flux, SD3, or any of the 2026 generation that ships its text encoder and VAE as separate downloads, you're already working with a diffusion_models folder and a grab-bag of companion files - and this hub matches that reality by loading only the UNET and leaving CLIP and VAE to you.
How it works
Under the hood it's comfy.sd.load_unet() on the resolved model path, wrapped in the same parameter-routing surface as the checkpoint hub. The unet_name dropdown is built from folder_paths.get_filename_list("diffusion_models"), so it covers both models/diffusion_models and models/unet. The sampler and scheduler lists come live from comfy.samplers, so they always match what your ComfyUI supports. Prompts are multiline with dynamic prompts enabled; metadata is single-line.
The outputs, and the one that's easy to miss
MODEL- the loaded UNET weights, straight into your sampler.steps,step_refiner,cfg,sampler_name,scheduler,denoise- the recipe, wired to the matching KSampler inputs. The sampler and scheduler sockets are combo-typed, so they click into place.unet_name(*) - the filename as a wildcard, for routing into context nodes or loaders that want to know which model ran.positive_prompt,negative_prompt,metadata- plain STRING outputs feeding your CLIP Text Encode nodes and save/metadata nodes.
Here's the part people trip on: there is no CLIP and no VAE output. The node only loads the diffusion model. You still need a separate CLIP loader (or DualCLIP loader) and a VAE to actually encode your text and decode your latents - and in 2026 those are separate files you download yourself. This isn't a bug; it's the node doing the one job a diffusion_models folder actually contains. If your workflow errors on a missing CLIP or VAE, that's the gap.
Installing it
Part of MarwanDSAI/comfyui-mdsnodes. ComfyUI Manager: search "ComfyUI-MDSNodes", install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/MarwanDSAI/comfyui-mdsnodes
Restart, no pip step - requirements.txt is empty and the pack declares zero dependencies.
Gotchas
If your diffusion_models folder is empty, the dropdown falls back to a single "None" entry - and queuing with that selected will error out, because there's nothing to load. Drop at least one model in first. And remember the hub is explicit-wire plumbing, not a magic context bundle: the benefit is one authoritative source for the recipe, and the cost is that you're still wiring the sockets by hand. That's the trade, and for a testing workflow it's usually the right one.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| unet_name | COMBO | None | Select the diffusion / UNET model file from your models/diffusion_models or models/unet folder. |
| steps | INT | 201–10000 | The total number of sampling/denoising steps for base generation. |
| step_refiner | INT | 100–10000 | Target step count for refiner passes or the step transition threshold for multi-pass pipelines. |
| cfg | FLOAT | 7.00–100 | Classifier-Free Guidance (CFG) scale. Controls how strictly the model adheres to your prompt. |
| sampler_name | COMBO | The mathematical sampling algorithm used to generate or denoise the image (e.g., euler, dpmpp_2m). | |
| scheduler | COMBO | The noise scheduling rate/curve across the steps (e.g., normal, karras, sgm_uniform, simple). | |
| denoise | FLOAT | 1.000–1 | Denoise strength. Set to 1.0 for initial txt2img generation, or 0.20-0.60 for img2img / upscaling. |
| positive_prompt | STRING | Enter positive prompt text. Expanding the node will enlarge this text box. | |
| negative_prompt | STRING | Enter negative prompt text. Expanding the node will enlarge this text box. | |
| metadata | STRING | Single-line metadata text or workflow tags to pass downstream. |
Outputs (11)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | The loaded diffusion model. |
| steps | INT | Base generation step count (INT). |
| step_refiner | INT | Refiner step count or threshold (INT). |
| cfg | FLOAT | Classifier-Free Guidance scale (FLOAT). |
| unet_name | * | The selected diffusion/UNET model filename (Universal Wildcard *). |
| sampler_name | euler,euler_cfg_pp,euler_ancestral,euler_ancestral_cfg_pp,heun,heunpp2,exp_heun_2_x0,exp_heun_2_x0_sde,dpm_2,dpm_2_ancestral,lms,dpm_fast,dpm_adaptive,dpmpp_2s_ancestral,dpmpp_2s_ancestral_cfg_pp,dpmpp_sde,dpmpp_sde_gpu,dpmpp_2m,dpmpp_2m_cfg_pp,dpmpp_2m_sde,dpmpp_2m_sde_gpu,dpmpp_2m_sde_heun,dpmpp_2m_sde_heun_gpu,dpmpp_3m_sde,dpmpp_3m_sde_gpu,ddpm,lcm,ipndm,ipndm_v,deis,res_multistep,res_multistep_cfg_pp,res_multistep_ancestral,res_multistep_ancestral_cfg_pp,gradient_estimation,gradient_estimation_cfg_pp,er_sde,seeds_2,seeds_3,sa_solver,sa_solver_pece,ddim,uni_pc,uni_pc_bh2 | Sampler algorithm name (COMBO slot for KSampler / SamplerSelect). |
| scheduler | simple,sgm_uniform,karras,exponential,ddim_uniform,beta,normal,linear_quadratic,kl_optimal | Scheduler curve type (COMBO slot for KSampler / BasicScheduler). |
| denoise | FLOAT | Denoise strength multiplier (FLOAT). |
| positive_prompt | STRING | Positive prompt string (connect to CLIP Text Encode). |
| negative_prompt | STRING | Negative prompt string (connect to CLIP Text Encode). |
| metadata | STRING | Passthrough metadata string. |