ControlNet gives you precise control over image generation by conditioning on structural inputs like edges, depth maps, poses, and more. Instead of relying solely on text prompts, you guide the generation with visual references.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/Comfy-Org/ComfyUI/llms.txt
Use this file to discover all available pages before exploring further.
What is ControlNet?
ControlNet is an extension to Stable Diffusion that accepts control images:- Canny edges: Line art and contours
- Depth maps: 3D structure information
- Pose: Human skeleton keypoints (OpenPose)
- Normal maps: Surface orientation
- Scribbles: Rough sketches
- Segmentation: Semantic regions
Prerequisites
- ControlNet model files in
models/controlnet/ - Preprocessor models (optional, for automatic control image generation)
- Input image or pre-processed control map
Basic Workflow
Add CheckpointLoaderSimple to load your base Stable Diffusion model. ControlNet works with SD 1.5, SD 2.1, and SDXL variants.
control_v11p_sd15_canny.pth(edge detection)control_v11f1p_sd15_depth.pth(depth)control_v11p_sd15_openpose.pth(pose)- Many others available
Note: Preprocessor nodes vary by custom node packs. Many use nodes like “CannyEdgePreprocessor” or built-in image processing.
- positive: from positive CLIPTextEncode
- negative: from negative CLIPTextEncode
- control_net: from ControlNetLoader
- image: from LoadImage or preprocessor
- strength: 0.5-1.5 (how strongly to follow control image)
- start_percent: 0.0 (when to start applying control)
- end_percent: 1.0 (when to stop applying control)
Complete Workflow JSON
ControlNet Types
Canny Edge Detection
Best for: Line art, architectural drawings, precise outlines Control image: Black background with white edges Use cases:- Converting sketches to full illustrations
- Maintaining architectural structure
- Preserving composition while changing style
Depth Map
Best for: 3D structure, perspective control Control image: Grayscale depth map (closer = brighter) Use cases:- Maintaining scene depth
- Generating similar compositions
- 3D-to-2D conversion
OpenPose
Best for: Human pose control Control image: Stick figure skeleton Use cases:- Character pose consistency
- Animation frame generation
- Pose transfer between characters
Scribble
Best for: Rough sketches, quick ideas Control image: Simple line drawings Use cases:- Concept exploration
- Quick ideation
- Loose composition control
Segmentation
Best for: Color/region blocking Control image: Colored regions for different semantic areas Use cases:- Precise region control
- Complex compositions
- Scene layout planning
Normal Map
Best for: Surface detail, lighting consistency Control image: RGB normal map Use cases:- Detailed surface structure
- Maintaining 3D form
- Lighting-consistent generation
Parameter Guide
Strength
Controls how strongly the ControlNet influences generation:- 0.3-0.5: Subtle guidance, more creative freedom
- 0.6-0.8: Moderate control, balanced
- 0.9-1.2: Strong adherence to control image
- 1.3-1.5: Very strict, may reduce quality
- > 1.5: Can cause artifacts
Start/End Percent
Control when ControlNet is active during denoising: Full control (default):Multiple ControlNets
Combine multiple ControlNets for complex control:- Load multiple ControlNetLoader nodes
- Chain ControlNetApplyAdvanced nodes:
- First: Apply ControlNet A to base conditioning
- Second: Apply ControlNet B to output of first
- Use final output for KSampler
ControlNet with Img2Img
Combine ControlNet with image-to-image:- Use VAEEncode instead of EmptyLatentImage
- Set denoise 0.6-0.9
- Control image guides structure
- Source image provides style/details
ControlNet with Inpainting
Apply ControlNet to inpainting:- Use VAEEncodeForInpaint or InpaintModelConditioning
- Apply ControlNet to conditioning
- Control image guides the inpainted region
Advanced Techniques
Regional ControlNet
Use ConditioningSetMask to apply ControlNet only to specific regions:Strength Scheduling
Vary strength during generation using start/end_percent: Strong structure, creative details:- strength: 1.2
- start_percent: 0.0
- end_percent: 0.5
- strength: 0.6
- start_percent: 0.0
- end_percent: 1.0
Control Image Preprocessing
For best results:- Match control image resolution to generation size
- Use high-contrast edges for Canny
- Clean poses for OpenPose
- Smooth depth maps for better results
Common Use Cases
Architecture from Floorplan
- Create line drawing of floor plan
- Use Canny ControlNet, strength 1.0-1.2
- Prompt: architectural style, materials, lighting
- Result: Photorealistic render following layout
Character Pose Consistency
- Extract pose from reference with OpenPose
- Use pose ControlNet, strength 0.9-1.1
- Generate multiple characters in same pose
- Perfect for animation frames or style variations
Photo to Illustration
- Source photo → Canny edges
- Canny ControlNet, strength 0.7-0.9
- Prompt artistic style
- Result: Illustration with original composition
3D Scene Rendering
- Export depth map from 3D software
- Depth ControlNet, strength 0.8
- Prompt environment details
- Result: Photorealistic render with 3D structure
Troubleshooting
Too rigid/stiff results
- Lower strength (try 0.6-0.8)
- Reduce end_percent (try 0.7)
- Use less precise control type (scribble vs canny)
Control not being followed
- Increase strength (try 1.0-1.2)
- Check control image quality
- Ensure control image matches generation size
- Increase CFG scale
Artifacts or distortion
- Lower strength (try 0.7-0.9)
- Increase steps (try 30-40)
- Check control image for noise/errors
- Try different sampler
Wrong ControlNet type
- Canny edges appear blurry → regenerate with higher threshold
- Depth looks flat → use better depth estimation
- Pose ignored → ensure skeleton is clear and complete
Best Practices
- Match resolutions: Control image should match target size
- Start conservative: Begin with strength 0.8, adjust up/down
- Clean inputs: High-quality control images = better results
- Combine wisely: 2-3 ControlNets max, more can conflict
- Prompt alignment: Text should complement control image
- Test settings: Different models respond differently to strength
- Use end_percent: Often better to release control for final details
Model Compatibility
- SD 1.5: Most ControlNet models available
- SD 2.1: Fewer models, similar usage
- SDXL: SDXL-specific ControlNets needed
- SD3: Limited ControlNet support currently
Next Steps
- Experiment with different ControlNet types
- Combine multiple ControlNets for complex scenarios
- Try ControlNet with LoRAs for style + structure control
- Explore preprocessors for automatic control image generation
- Create custom control images for precise artistic control