DiffSynth: Stable Diffusion Inference
Yes, it still works, and here's why you'd bother
- pipe
- image
ComfyUI already loads SD 1.5 checkpoints natively, has done for years, and does it better than anything bolted on afterwards. So the honest question about this node isn't "can it generate a picture" - it's "why would anyone run SD 1.5 through DiffSynth." The answer is consistency: this is the same Loader/Inference/VRAM machinery the pack uses for Wan, Qwen and Z-Image, so if you're already in that ecosystem you can put a 2022 UNet in the same graph and reuse every memory trick you've configured.
What it does
It calls DiffSynth-Studio's StableDiffusionPipeline: OpenAI's CLIP ViT-L/14 text encoder, the ~860M UNet, and the VAE, each loaded from its own ModelConfig, then plain classifier-free guidance over a fixed timestep schedule. No dynamic shift, no distilled shortcuts. You give it a prompt and it does the SD 1.5 thing.
And SD 1.5 still has a job. The community case for it in 2026 is creative variation rather than adherence - the blunt version from a thread this year is "I don't use SD1.5 models when I want prompt adherence. I use SD1.5 models when I want prompt rebellion." Four hundred and sixty-eight million parameters of badly-captioned LAION nudging you somewhere unexpected, fast. Plus the deepest checkpoint library in the ecosystem and a pile of pre-2024 concept LoRAs nobody ever ported.
The inputs that matter
pipe- required, from DiffSynth: Stable Diffusion Loader.prompt- required, multi-line. Natural language or tags, your call; 77 CLIP tokens is the actual ceiling, so front-load the important stuff.heightandwidth- both default to 512, which is the resolution this model was trained at. 512×768 portrait works fine. 1024² does not, at least not without a second pass.num_inference_steps(50) andseed- 20–30 steps is usually enough; 50 is generous, not required.negative_prompt,cfg_scale(7.5) - classic SD guidance range. 7–8 is the sweet spot; past 10 you get the fried contrast look.eta- the DDIM-family stochasticity dial. 0 is deterministic, and 0 is nearly always what you want; nudging it up gives seed-to-seed variation on the same prompt at the cost of coherence.guidance_rescale- the oversaturation fix from the SDXL paper, retrofitted here. Off at 0. If a high-CFG image looks blown out, 0.7-ish is the usual patch.
Output is a single image socket. Save Image, upscaler, whatever.
Install
Manager → search DiffSynth-ComfyUI → install → restart. Manual:
pip install git+https://github.com/modelscope/DiffSynth-Studio.git
cd ComfyUI/custom_nodes && git clone https://github.com/modelscope/DiffSynth-ComfyUI.git
The weights are small by 2026 standards - the example graph pulls AI-ModelScope/stable-diffusion-v1-5 split into three files plus a tokenizer directory, a couple of GB total. That's the pleasant part of this pipeline.
Where it goes wrong
- Prompt adherence is worse than you remember. That's the model, not the node. If you want the prompt followed, use Qwen-Image or Z-Image and come back here for the weird stuff.
- Negatives that do nothing. At CFG 7.5 they should bite, so if they aren't, check you actually filled the field - the pack's default is empty, unlike some pipelines where the default is a single space.
- An OOM at 1024². Not a bug, a 512-native model being asked for four times the latent area.
- Sockets shifting after an upgrade. Every input on this node is read off the installed
diffsynthat ComfyUI startup. Restart after you touch the library.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| pipe | DIFFSYNTH_PIPE | — | |
| prompt | STRING | — | |
| seed | INT | 00–4294967295 | — |
| num_inference_steps | INT | 501–200 | — |
| height | INT | 51264–4096 | — |
| width | INT | 51264–4096 | — |
| negative_promptopt | STRING | — | |
| cfg_scaleopt | FLOAT | 7.50–10000 | — |
| etaopt | FLOAT | 0.00–10000 | — |
| guidance_rescaleopt | FLOAT | 0.00–10000 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |