ComfyUI for A1111 Users: Graph, Nodes, Shortcuts, Habits
Node graph guide for A1111 migrants: read the graph, five starters, keyboard shortcuts, habits that prevent broken workflows.
On this page
TL;DR
- ComfyUI is a node graph — each box is a discrete operation (load, encode, sample, decode) with typed wires (MODEL, CLIP, VAE, CONDITIONING, LATENT, IMAGE). Core concepts
- Start with five nodes: Load Checkpoint → CLIP Text Encode (×2) → KSampler → VAE Decode → Save Image. First generation
- Learn four shortcuts:
Ctrl+Enter(queue),Ctrl+B(bypass),R(refresh),Space+drag (pan). README - Adopt two habits: back up workflows before editing, and use
--disable-all-custom-nodesto isolate issues. Troubleshooting docs
Why ComfyUI feels alien after Automatic1111
Automatic1111 presents tabs and sliders; ComfyUI presents a directed acyclic graph — boxes connected by wires where each node performs one operation. Data flows left-to-right through typed tensors. If you've used a node editor in Nuke, Blender, or Unreal, think of it as a visual programming environment of reusable blocks.
This architecture means:
- You see the whole pipeline — no txt2img/tabs/extras.
- Reusability is built in — any sub-graph can be saved/shared/dropped.
- Lazy execution — only re-runs nodes whose inputs changed.
Core concepts: "a collection of program objects called nodes that are connected to each other, forming a network" where "only parts of the graph that change from each execution to the next will be executed." Source
Reading the graph: data types and direction
Every wire carries a typed tensor (hover to see). The six types you'll meet:
| Type | What it carries | Produced by | Consumed by | Source |
|---|---|---|---|---|
MODEL | Denoising network (UNet) | Load Checkpoint | KSampler, ControlNet Apply | KSampler/Checkpoint docs |
CLIP | Text encoder | Load Checkpoint | CLIP Text Encode | CheckpointLoaderSimple docs |
VAE | Latent↔pixel converter | Load Checkpoint | VAE Decode, VAE Encode | CheckpointLoaderSimple docs |
CONDITIONING | Prompt embeddings | CLIP Text Encode | KSampler | KSampler docs |
LATENT | Compressed image tensor | Empty Latent Image, KSampler | KSampler, VAE Decode | KSampler docs |
IMAGE | Pixel tensor (H×W×3) | VAE Decode, Load Image | Save Image, Preview Image | KSampler docs |
Direction rule: data flows output → input. A red wire means type mismatch — hover to see expected vs. actual. Source
The five nodes you need for text-to-image
Forget the node library. Drag these onto the canvas in order:
- Load Checkpoint (
CheckpointLoaderSimple) — selects the.safetensorsfile. OutputsMODEL,CLIP,VAE. CheckpointLoaderSimple docs - CLIP Text Encode (×2) — positive and negative prompts. Takes
CLIP, outputsCONDITIONING. - KSampler — the denoiser. Takes
MODEL, bothCONDITIONINGs, aLATENT(from Empty Latent Image), plusseed,steps,cfg,sampler_name,scheduler,denoise. Outputs denoisedLATENT. - VAE Decode — converts
LATENT→IMAGEusing the VAE from step 1. - Save Image — writes the
IMAGEto disk and shows a preview. First generation
Wire left-to-right: Checkpoint → (CLIP to both Text Encodes) → (MODEL + both CONDITIONING + LATENT to KSampler) → (KSampler LATENT + VAE to VAE Decode) → (IMAGE to Save Image).
Settings cheat sheet
| Parameter | Node | Starting value | Why it matters | Source |
|---|---|---|---|---|
ckpt_name | Load Checkpoint | v1-5-pruned-emaonly-fp16.safetensors | Model architecture and weights | CheckpointLoaderSimple docs |
cfg | KSampler | 8.0 | Prompt adherence; >10 often burns | KSampler docs |
sampler_name | KSampler | euler_ancestral | Fast; try dpmpp_2m for quality | KSampler docs |
scheduler | KSampler | normal | karras can sharpen details | KSampler docs |
denoise | KSampler | 1.0 | 1.0 = txt2img; <1.0 = img2img | KSampler docs |
Source: KSampler embedded docs, first generation tutorial.
Keyboard shortcuts worth learning on day one
ComfyUI ships with a full shortcut set (documented in the GitHub README). The ones that save the most friction for A1111 migrants:
| Action | Shortcut | When you'll use it | Source |
|---|---|---|---|
| Queue prompt | Ctrl + Enter | Replaces the big orange Generate button | README |
| Cancel generation | Ctrl + Alt + Enter | Stop a runaway job | README |
| Undo / Redo | Ctrl + Z / Ctrl + Y | Graph editing is destructive; undo saves you | README |
| Bypass selected nodes | Ctrl + B | Disable ControlNet / IP-Adapter without deleting | README |
| Group selected nodes | Ctrl + G | Collapse visual clusters | README |
| Pan canvas | Space + drag | Prevents accidental wire dragging | README |
| Fit view | . (period) | Frame the whole graph instantly | README |
| Refresh graph | R | Reload after dropping new checkpoints | README |
Three UI settings to change now:
- Settings → Comfy → Menu → Use new menu: ON — sidebar with Assets, Nodes, Models, Workflows, Templates. Read more
- Settings → Comfy → Locale — supports EN, ZH, RU, FR, JA, KO.
Habits that prevent broken workflows
1. Back up before you rewire
Drag a workflow .json onto the canvas to load it. Before moving nodes, press Ctrl+S. The original file stays intact; you're editing the browser's live copy.
Source: "It's easy to break stuff and not necessarily easy to fix." — Civitai article 9471
2. Use the hand tool for navigation
Bottom-right toolbar: click the arrow icon to toggle hand mode. In hand mode, drag pans without selecting or moving nodes. Arrow mode lets you rewire — but a careless click drags a node and snaps wires. Civitai 9471
3. Isolate custom-node failures with binary search
When a workflow throws red boxes or "ModuleNotFoundError":
- Launch with
python main.py --disable-all-custom-nodes. - If it works, re-enable half your custom nodes, restart, test.
- Repeat until the culprit is found.
Comfy CLI automates this: comfy-cli node bisect start → mark good/bad → comfy-cli node bisect reset. Source
4. Read red boxes left-to-right
A red node border means missing input. Zoom out (- key), find the leftmost red box. Its input dropdown shows the filename ComfyUI expects. Search your drive for that file (Windows: Everything by Voidtools is excellent). Drop it in the folder the dropdown references, press R to refresh, select it. Civitai 9471
5. Prefer CheckpointLoaderSimple
The old CheckpointLoader asks for both config and checkpoint. CheckpointLoaderSimple needs only the checkpoint name and splits MODEL/CLIP/VAE automatically. The legacy node is deprecated. Source
6. Bypass, don't delete
Need to compare with/without ControlNet? Select the node, press Ctrl+B. It grays out and wires pass through. Press Ctrl+B again to re-enable. Deleting forces you to rewire. Source: "Bypass selected nodes (acts like the node was removed from the graph and the wires reconnected through)."
Common errors and fixes
| Symptom | Likely cause | Fix | Source |
|---|---|---|---|
| "ModuleNotFoundError: No module named 'xyz'" | Custom node dependency missing or wrong Python env | Run pip install -r requirements.txt inside that node folder, or use Manager → Install Missing Nodes | ComfyUI-Manager |
| Red box on Load Checkpoint, dropdown empty | Checkpoint not in models/checkpoints/ | Move .safetensors there, press R | Civitai 9471 |
| KSampler runs but Save Image shows nothing | Missing wire to VAE Decode or VAE not connected | Connect KSampler → VAE Decode → Save Image; wire VAE from Load Checkpoint | KSampler docs |
| "Torch not compiled with CUDA" | PyTorch CPU-only install | Reinstall: pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu130 | ComfyUI README |
| Nodes missing (gray "Unknown" boxes) | Custom nodes not installed | Manager → Install Missing Nodes; or clone the Git repo into custom_nodes/ | ComfyUI-Manager |
| Generated image is solid color | denoise too low or cfg extreme | Set denoise=1.0 for txt2img; keep cfg between 5–9 | KSampler docs |
Sources: ComfyUI troubleshooting docs, KSampler embedded docs, Civitai article 9471, ComfyUI Manager README.
FAQ
What are the most important ComfyUI nodes for beginners? Load Checkpoint, CLIP Text Encode (positive + negative), KSampler, VAE Decode, Save Image. These five form every text-to-image pipeline. Everything else — ControlNet, IP-Adapter, upscalers — plugs into this spine. Read more
How do you load a model in ComfyUI without knowing the filename? Drop a .safetensors into ComfyUI/models/checkpoints/ (or a subfolder). Press R on the canvas. The Load Checkpoint dropdown refreshes and shows the new file.
What is the difference between LATENT and IMAGE nodes? Empty Latent Image creates a blank compressed tensor that KSampler denoises. VAE Decode converts that LATENT into an IMAGE (pixels). Save Image writes it to disk. You never see pixels until after VAE Decode.
How do I bypass ControlNet without deleting the node? Select the node, press Ctrl+B. It grays out and wires pass through. Ctrl+B again to re-enable.
What does the 'seed' parameter do? Seed initializes the random noise tensor. Same seed + same inputs = identical output. control_after_generate offers random, increment/decrement, and fixed.
Why does my workflow cache results instead of re-generating? ComfyUI only re-runs changed nodes. If no inputs differ, it returns cached output. Change a prompt, seed, or parameter to force re-execution.
Sources
- ComfyUI core concepts — workflow graph architecture
https://docs.comfy.org/development/core-concepts/workflow
- ComfyUI text-to-image tutorial — detailed node chain
https://docs.comfy.org/tutorials/basic/text-to-image
- KSampler embedded docs — denoising node parameters
https://raw.githubusercontent.com/Comfy-Org/embedded-docs/main/comfyui_embedded_docs/docs/KSampler/en.md
- CheckpointLoaderSimple docs — model decomposition
https://raw.githubusercontent.com/Comfy-Org/embedded-docs/main/comfyui_embedded_docs/docs/CheckpointLoaderSimple/en.md
- ComfyUI README — keyboard shortcuts
https://github.com/Comfy-Org/ComfyUI
- ComfyUI troubleshooting — custom node debugging
https://docs.comfy.org/troubleshooting/custom-node-issues
- Civitai article 9471 — red-box troubleshooting workflow
https://civitai.com/articles/9471
- ComfyUI-Manager — missing nodes installation
https://github.com/Comfy-Org/ComfyUI-Manager