Here’s what every ComfyUI tutorial skips: if you generate an image, send it to inpainting, make a fix, and want to tweak that fix, you’ll re-upload the image, re-open the mask editor, re-paint your mask, and run it again. There’s no “send to inpaint” button. One community member put it bluntly: “Inpainting with ComfyUI is a chore.”
That’s the deal. ComfyUI gives you total control over your Stable Diffusion pipeline – every sampler, every CLIP encoder, every latent pass is a visible, rewirable node. You work for it.
Think of it like this: Automatic1111 is an automatic transmission. ComfyUI is a manual – more control, steeper learning curve, and you’ll stall a few times before you get good at shifting.
Other guides show you the pretty parts: drag-and-drop workflows, embedded metadata, node graphs. This one shows you what breaks.
Why ComfyUI Exists (And Why You Can’t Just Use A1111 Settings)
ComfyUI is a node-based interface for Stable Diffusion (as of January 2023). Instead of forms and sliders, you build workflows by connecting functional blocks. Load a model, encode text, run a sampler, decode latents – each is a separate node.
The creator built it to figure out how Stable Diffusion works under the hood. Stability AI uses it internally and hired him.
But here’s the problem: you can’t copy settings from Automatic1111 and expect them to work. CFG scale is model-family-specific. According to testing, Flux models are designed for CFG 1.0-1.5. SD1.5 and SDXL? CFG 6.0-8.0. Use CFG 7 on Flux → over-saturated, fried images. CFG 1 on SD1.5 → your prompt gets ignored.
Every model family has its own parameter sweet spot. ComfyUI doesn’t hide this.
The Real Installation Path (Not the One in Tutorials)
Official options: ComfyUI Desktop (one-click installer), portable Windows build, or manual install via GitHub. Desktop is cleanest for beginners, but as of January 2026 it’s still in beta, only supports NVIDIA GPUs on Windows, and lags behind development versions.
Manual install? You get the latest features. Python 3.12 or 3.13, Git, and some command-line comfort required (as of February 2026, per official GitHub README).
git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI
pip install -r requirements.txt
python main.py
Open http://localhost:8188. Default text-to-image workflow loads automatically.
Missing from every guide: the first thing you should install isn’t a workflow or a model. It’s ComfyUI Manager.
Pro tip: Install ComfyUI Manager immediately. It’s the package manager for custom nodes. Without it? Manual git clones, dependency hunts. With it? Click “Install Missing Custom Nodes” and it handles everything.
Installation:
cd ComfyUI/custom_nodes
git clone https://github.com/ltdrdata/ComfyUI-Manager
Restart ComfyUI. Manager button appears in the menu.
How Nodes Actually Work
A node has inputs (left) and outputs (right). Drag from output dot to input dot. Data flows left to right. ComfyUI only executes nodes that have all inputs connected and contribute to a final output.
The default workflow has six nodes: Load Checkpoint (your .safetensors model file – UNet, CLIP text encoder, VAE), CLIP Text Encode (two of them – positive and negative prompts converted to embeddings), KSampler (the denoising loop, where diffusion happens), VAE Decode (latent image → actual pixels), and Save Image (writes to disk).
Seems straightforward. Then you load a shared workflow. 47 nodes. Spaghetti tangle. Welcome.
10-20 hours before you feel comfortable. That’s from one comparison study. Not a weekend – that’s why the community says: don’t start with ComfyUI if you’ve never used Stable Diffusion. Learn the basics in Automatic1111 or Fooocus, then migrate when you hit their limits.
Memory Management: What Changed 3 Weeks Ago
ComfyUI has always been the most memory-efficient Stable Diffusion interface. It dynamically loads and unloads models, letting SDXL run on 8GB GPUs where Automatic1111 would crash.
Three weeks ago (February 2026), Dynamic VRAM shipped. Custom PyTorch VRAM allocator that offloads model weights on-demand when GPU memory is under pressure. Result: lower system RAM usage, faster workflow execution.
Update 13 broke it. Models weren’t offloading from RAM after moving to VRAM. RAM spiked to 32GB during single generations. Constant pagefile swapping. Some workflows that previously ran smoothly? Nearly impossible now.
If you’re on 16GB RAM or less and hitting this, workaround: use --lowvram flag when launching, or downgrade to the commit before Update 13 (until the fix ships, which could be in the next weekly release per the Monday release cycle).
python main.py --lowvram
This forces the text encoder to CPU. Keeps only the diffusion model in VRAM. Slower, but stable.
Workflows: How to Use Them Without Breaking Them
Every image ComfyUI generates embeds the complete workflow as PNG metadata (per official examples repo). Drag any ComfyUI-generated image back into the interface → it loads the exact node setup, parameters, seed. Everything.
This is how the community shares workflows. Find a technique you like on OpenArt or Comfy Workflows, download the image or JSON, drag it in. 90% there.
The other 10%: missing custom nodes. Red boxes. Error message. Click Manager → “Install Missing Custom Nodes.” ComfyUI Manager scans the workflow, finds what’s missing, installs it. Restart. Done.
Tutorials skip this: ComfyUI doesn’t auto-save. Browser crashes? Tab closes? Restart to install a node? Unsaved changes are gone. One tutorial explicitly warns: “ComfyUI does not auto-save. Every change you make is temporary until you explicitly save the workflow as a JSON file.”
Save often. Menu → Save → name it. Or enable auto-save in settings (browser storage – can be cleared, so still manually save important workflows).
Custom Nodes You’ll Actually Use
ComfyUI’s power comes from custom nodes. Core install is minimal. Here’s what the community installs first (per BentoML guide):
| Node Pack | Why You Need It |
|---|---|
| ComfyUI Manager | Package manager for everything else. Install this first. |
| Efficiency Nodes | Combines multiple nodes (checkpoint loader, VAE, prompts, LoRA) into one. Reduces clutter. |
| ComfyUI-Custom-Scripts | Auto-complete for prompts, auto-arrange nodes, preset text templates. Quality-of-life upgrades. |
| ControlNet nodes | Guides generation with reference images, depth maps, or poses. Needed for structure control. |
| Impact Pack | Face detailers, upscalers, automation helpers. Popular for refinement workflows. |
Install via Manager → Custom Nodes Manager → search by name → Install → restart.
The Inpainting Problem
This is where ComfyUI’s flexibility becomes friction.
Automatic1111: generate image → “Send to Inpaint” → paint mask → generate fix → tweak mask → generate again. One-click transitions.
ComfyUI: generate image → right-click Load Image node → open MaskEditor → upload image → paint mask → connect to VAE Encode (for Inpainting) node → generate. Want to tweak the mask? Save the output, re-upload it, re-open MaskEditor, re-paint, run again.
No iteration loop. Each fix is a manual reload.
Workarounds exist – custom nodes that simplify this – but out of the box, inpainting is awkward. ComfyUI doesn’t assume your workflow. It makes you build it.
When You Should Actually Use ComfyUI
Not everyone needs this level of control. Here’s the decision tree:
Start with Automatic1111 or Fooocus if: you’re new to Stable Diffusion, you want instant results, or you’re exploring prompting and model basics.
Switch to ComfyUI when: you’re running multi-step workflows (txt2img → img2img → upscale) and want to automate them, you need reproducible pipelines for production or team sharing, you’re working with AnimateDiff or complex video workflows, or you’re hitting VRAM limits and need better memory management (per testing showing 15% speed improvement).
ComfyUI rewards the time investment with speed, efficiency, and flexibility. Punishes impatience.
What to Do Next
Install ComfyUI. Install ComfyUI Manager. Load the default workflow. Generate one image. Confirm it works.
Then pick one shared workflow that does something you want – SDXL with refiner, ControlNet depth, or a simple upscale – and reverse-engineer it. Follow the wires. See what each node does. Change one parameter at a time. (My first workflow? A ControlNet depth-to-image setup. Took 2 hours to understand, but once I did, I could modify it in 5 minutes.)
Don’t try to understand everything at once. Build from examples, break things, save your work.
FAQ
Why are my images purple or washed out?
VAE mismatch. Some checkpoints include the VAE, others don’t. Check the model page on CivitAI – if it says “requires separate VAE,” download it and load it in the Load VAE node. If the filename includes “vae” or “fp16,” it’s baked in. Don’t load a separate one.
Can I use my Automatic1111 models in ComfyUI?
Yes. Place them in ComfyUI/models/checkpoints. Or edit extra_model_paths.yaml to point ComfyUI to your existing A1111 model folders so you don’t duplicate 20GB files. Restart ComfyUI. Models appear in the Load Checkpoint dropdown. (I did this – saved me 80GB of disk space. Just point to the same folder, don’t copy.)
How do I fix “CUDA out of memory” errors?
Lower your resolution – try 512×768 instead of 1024×1024. Reduce batch size to 1. Use --lowvram flag when launching ComfyUI. Close other GPU-heavy apps. Or use FP8/FP16 quantized models to reduce memory footprint. If you’re on 8GB VRAM, SDXL will be tight – Dynamic VRAM helps (as of February 2026), but you may still need to offload the text encoder to CPU. Another option: lower the resolution in the Empty Latent Image node first, then upscale the result later. 512×768 at batch 1 should fit on 8GB. 1024×1024? You’ll struggle without offloading.