ComfyUI node reference card
ComfyUI is a node-graph interface for Stable Diffusion where each box does one job and you wire them together by data type. The hard part for newcomers is remembering which sockets connect — a MODEL goes here, a LATENT there, a CONDITIONING into the sampler. This searchable card lists the core built-in nodes with their inputs, outputs, and types so you can wire a graph without guesswork.
How it works
Filter by category (loaders, sampling, conditioning, latent, image) or search
by name. Each card shows the node’s purpose plus its inputs and outputs with
their data types in parentheses. ComfyUI enforces type matching at the socket
level, so knowing that KSampler outputs a LATENT and VAE Decode consumes one
tells you exactly how they chain.
Tips for building graphs
- Follow the data types. A red error usually means a type mismatch — an
IMAGEplugged where aLATENTwas expected. The type labels here prevent that. - Start from the template. A minimal text-to-image graph is Checkpoint Loader → CLIP Text Encode (×2, positive/negative) → Empty Latent → KSampler → VAE Decode → Save Image.
- Decode last. Stay in latent space through sampling and only VAE Decode once at the end; decoding mid-graph wastes compute.
- LoRA before sampling. Load LoRA Loader between the checkpoint and the sampler so its MODEL and CLIP edits apply to both conditioning and denoising.
Key node relationships
Understanding which nodes connect to which helps you build graphs without trial and error.
The core generation loop:
- CheckpointLoaderSimple → outputs MODEL, CLIP, VAE
- CLIPTextEncode (×2) consumes CLIP → outputs two CONDITIONING (positive, negative)
- EmptyLatentImage → outputs a blank LATENT
- KSampler consumes MODEL + positive CONDITIONING + negative CONDITIONING + LATENT → outputs a denoised LATENT
- VAEDecode consumes the LATENT + VAE → outputs an IMAGE
- SaveImage or PreviewImage consumes IMAGE → no outputs (terminal node)
Adding img2img: replace EmptyLatentImage with a VAEEncode node that consumes an IMAGE and the VAE, producing a LATENT starting point for KSampler. Set the denoise parameter below 1.0 so the sampler preserves some of the original structure.
Adding ControlNet: insert an Apply ControlNet node between CLIP conditioning and KSampler. It takes a CONDITIONING, a CONTROL_NET (from a ControlNet Loader), and a reference IMAGE, and outputs a modified CONDITIONING that steers the output toward the control image’s structure without overriding the content.
Upscaling: After VAEDecode, pass the IMAGE into an Upscale Image (simple model-free) or a UpscaleModelLoader + ImageUpscaleWithModel pair for higher quality. Re-encode and refine via KSampler at lower denoise for the “hires fix” pattern.
Sampler parameters explained
KSampler is the most parameter-dense core node. The key inputs:
seed— controls reproducibility; the same seed with the same inputs gives the same output.steps— number of denoising iterations; more steps is slower but can improve quality up to a point. 20–30 is typical.cfg(classifier-free guidance scale) — how strongly the model follows the text prompt. Values of 7–12 are common; very high values (above 15) often cause oversaturation and artifacts.sampler_name— the denoising algorithm (euler, euler_a, dpm++2m, etc.).euler_ais stochastic (different result each run even with same seed);dpm++2mis deterministic.scheduler— the noise schedule (karras, normal, exponential). karras is a popular default.denoise— in img2img mode, 1.0 ignores the input image entirely, 0.0 preserves it fully, and values around 0.6–0.75 blend structure and new generation.