ONE MAP · ONE MODEL · ONE PROVABLE CHANGE

Use ControlNet in Forge without guessing

Choose the structure you want to preserve, pair its map with a control model for the same base family, inspect the detected map, then prove the effect against the same seed with the unit disabled.

Product boundaryOriginal Forge onlySource snapshotdfdcbab · 26 Jun 2025Review date27 Aug 2026
00 · Direct answer

ControlNet controls structure, not the whole image

The clean workflow has four gates. Do not tune weight until all four pass.

01 · BASECheckpoint works alone

One fixed-seed image completes with no ControlNet.

02 · MAPPreview shows the intended signal

Pose, edges, depth, or your prepared map is visibly correct.

03 · PAIRControl model matches both contracts

Map type and base-model family agree with the publisher.

04 · PROOFEnabled differs from disabled

Only the unit changes between same-seed outputs.

Page boundary

This page owns the first working structural ControlNet generation. If the real goal is style, content resemblance, or a person’s identity, first choose a method in the reference-image guide. For black or blank output, use the output-stage diagnostic. For missing files, use model file locations. No third-party binaries are mirrored here.

01 · Signal picker

Start from what must stay structurally similar

A source image is not one generic instruction. Select the information you want the preprocessor or prepared map to carry.

CONTROL CONTRACT

A skeleton or keypoint map

Pair
An OpenPose-family preprocessor plus a control model whose publisher names the same map type and base-model family.
Preview check
Limbs and joints should be detected in the positions you intend to preserve. Missing or extra people must be fixed before generation.
What it protects
Body arrangement and gesture—not face identity, clothing, lighting, or exact pixels.

VERIFIED Current source confirms the integrated unit and its controls. Exact third-party model compatibility remains publisher-specific.

02 · Compatibility contract

A filename in the menu is not a passing pair

Forge can discover and filter files without knowing that your complete combination will generate correctly.

  1. GATE A

    Base family

    The control model must support the active checkpoint family. Do not silently mix SD 1.5, SDXL, FLUX, or a fork-specific recipe.

  2. GATE B

    Map type

    Pose weights consume pose maps; Canny weights consume edge maps; depth weights consume depth maps. Similar-looking previews are not interchangeable.

  3. GATE C

    Geometry

    The input map reaches the output through one of three resize behaviors. Aspect mismatch can stretch, crop, or pad the signal before diffusion.

  4. GATE D

    Exact build

    Keep the original Forge commit, model source, and preprocessor name. Old A1111, reForge, Forge Neo, or Forge Classic instructions are not evidence for this build.

VERIFIED

The current Control Type filter builds a model list from filename filters attached to preprocessors. Treat that filter as navigation, not a compatibility certificate.

Inspect the model-filter code ↗
03 · Clean baseline

Build one unit from a passing image

These steps deliberately keep Hires. fix, batches, extra units, LoRAs, and third-party scripts out of the first proof.

  1. 01

    Prove the base model first

    Generate one usable image with the intended checkpoint and preset, batch size 1, a fixed seed, no Hires. fix, no LoRA, and no ControlNet. Save the PNG Info.

  2. 02

    Install only the required control weights

    Use the publisher’s file for the same base family and map type. Put weights in models/ControlNet by default, or use the configured extra path. Forge includes the interface, not every control model.

  3. 03

    Open one ControlNet unit

    In Txt2img or Img2img, expand ControlNet Integrated. Leave every other unit disabled. Add the source image under Single Image.

  4. 04

    Choose the signal pair

    Set Control Type, then choose the preprocessor and Model. Select None only when the input is already the control map expected by that model.

  5. 05

    Inspect the detected map

    Turn on Allow Preview and run the preprocessor. Confirm that the map carries the pose, edges, depth, or other structure you meant to preserve.

  6. 06

    Start from the neutral controls

    Enable the unit, turn on Pixel Perfect, keep Control Weight 1, Timestep Range 0–1, Control Mode Balanced, and choose the resize behavior deliberately.

  7. 07

    Generate the controlled copy

    Keep the prompt, seed, dimensions, sampler, scheduler, steps, and every non-ControlNet setting identical to the passing base.

  8. 08

    Prove the effect with A/B

    Disable only this unit and generate again with the same seed. The enabled image should follow the intended map more closely; otherwise the unit has not earned a place in the workflow.

DONE STATEThe detected map is useful, generation completes, and the same-seed enabled output follows the intended structure more closely than the disabled output.
04 · Control map

Know what each current Forge control can prove

The labels below are checked against the inspected original-Forge source, not copied from another WebUI.

Enable

The unit is ignored when this is off. A selected image, preprocessor, and model do not enable it automatically.

Pixel Perfect

Calculates preprocessor resolution from the input, output size, and resize mode. It does not validate model family, map type, or image quality.

Allow Preview

Exposes the detected-map preview action. Use it to validate the preprocessor before spending time on sampling.

Preprocessor

Turns a source image into a control signal. Choose None when the input is already an accepted control map.

Model

Applies that signal during diffusion. A filename appearing in the dropdown proves discovery, not compatibility.

Control Weight

Sets control strength from 0 to 2; the inspected default is 1. More weight is not automatically more accurate.

Timestep Range

Limits when the control is active across the denoising process; the inspected default is 0–1. Change it only after the full-range baseline works.

Control Mode

Balanced is the neutral baseline. “My prompt is more important” and “ControlNet is more important” change the priority, not the underlying model pairing.

Hires-Fix Option

Appears when Hires. fix is active and can apply control to Both, Low res only, or High res only. Keep Hires. fix off during the first proof.

05 · Resize geometry

Choose whether to distort, crop, or pad

Test with matching aspect ratios first. When ratios differ, every mode makes a visible tradeoff.

Pick the intended tradeoff

Just Resize

Result
Fills the requested width and height by resizing directly.
Tradeoff
If input and output aspect ratios differ, the control map is stretched or compressed.
Use when
Use when ratios already match, or when intentional distortion is acceptable.

VERIFIED Behavior is traced to crop_and_resize_image at commit dfdcbab.

06 · A/B receipt

Record enough to reproduce the difference

A screenshot of the final image is not a ControlNet test. Keep the map, pair, geometry, and disabled comparison.

ControlNet reproduction receipt
RECORDED0 / 11 recorded
A · DISABLEDPassing basesame seed · same prompt · same dimensions
B · ENABLEDOne control unitonly the unit changes
07 · Failure router

Fix the earliest failed gate

Do not compensate for a missing model or broken map by changing prompt, sampler, and weight together.

Model stays None after copying weights

Confirm the effective models/ControlNet directory, not models/ControlNetPreprocessor. Click the ControlNet model refresh button. If you changed --controlnet-dir or the extra scan path, restart and read the first scanner or state-dict error.

Continue with the focused guide →
The detected map is empty, broken, or detects the wrong subject

Stop before generation. Verify the input image, preprocessor, thresholds where exposed, and preview. A better prompt cannot repair a wrong detected map.

Continue with the focused guide →
The map looks right but ControlNet has no visible effect

Confirm Enable, a non-None model, family and map-type compatibility, weight above zero, and a range that includes the run. Compare the exact same seed with only the unit toggled. Open reports show this symptom but do not establish one universal fix.

Continue with the focused guide →
The output is stretched, cropped, or controls the wrong area

Match the output ratio to the input for the first test. Then choose Just Resize, Crop and Resize, or Resize and Fill by the geometry above. Disable Hires. fix while isolating the first pass.

The output turns black or blank only with ControlNet

Return to the passing disabled receipt, then restore one unit with one family-matched model and one map. Preserve the console and use the black-output diagnostic for the first bad stage.

Continue with the focused guide →
Generation throws an error after an update

Record the last passing and first failing Forge commits, the exact control model, preprocessor, tab, and console trace. Reproduce on a clean original-Forge install before calling it a core regression.

Inspect the dated evidence ↗
An old tutorial shows controls or names I cannot find

Follow the labels in your exact build. Forge’s breaking-change notes document removed low-VRAM controls, renamed preprocessors, restored Hires options, and changed multi-input behavior. Advice for AUTOMATIC1111 or a Forge fork may not match original Forge.

Inspect the dated evidence ↗
Multiple units work badly together

Prove each unit alone against the same base receipt. Then enable two units without changing the prompt or seed. Lowering weights may help one composition, but there is no universal multi-unit recipe.

08 · After one pass

Add complexity one boundary at a time

The baseline is a saved state to extend, not a disposable setup.

MULTIPLE UNITS

Prove each map alone

The inspected setting defaults to three units and can be changed from one to ten with a restart. Combine only passing units, then compare the pair against each unit alone.

HIRES. FIX

Restore the second pass

Choose Both, Low res only, or High res only after the base-resolution run passes. Keep the seed, target size, and every other setting fixed.

IMG2IMG

Separate two image influences

Img2img denoising and ControlNet both affect the result. Prove each route independently before deciding how much source appearance and control structure to keep.

BATCH

Prove one file before a folder

Single Image, Batch Folder, and Batch Upload are separate input modes. Record ordering, seed behavior, dimensions, and the file that first fails.

09 · ControlNet FAQ

Questions users ask while pairing and testing

Answers stay inside the original-Forge boundary and keep model-publisher requirements separate from current UI facts.

Is ControlNet built into Stable Diffusion WebUI Forge?

Yes. The inspected original Forge commit contains sd_forge_controlnet under extensions-builtin and labels the accordion ControlNet Integrated. That interface does not bundle every ControlNet weight file.

Do I need to install the sd-webui-controlnet extension in Forge?

Not for the integrated workflow described here. Installing another ControlNet extension adds a second code path and makes diagnosis harder. First prove the built-in original-Forge unit.

Where do ControlNet models go in Forge?

The default weights directory is models/ControlNet. Forge can also scan the ControlNet extra path in Settings or a path supplied with --controlnet-dir. Preprocessor downloads use a separate models/ControlNetPreprocessor directory.

Why does the Forge ControlNet Model dropdown say None?

The integrated interface is present even when no compatible weights have been installed. Put the publisher’s control weights in the effective ControlNet directory, refresh that model inventory, and inspect the first console error if the file remains absent.

What is the difference between a ControlNet preprocessor and model?

The preprocessor derives a control map such as edges, pose, or depth from an image. The ControlNet model consumes that map during diffusion. A useful workflow needs the map type, control model, and base checkpoint family to agree.

Which ControlNet model should I download for Forge?

Use a model whose publisher explicitly names both the map type you need and the family of your active base checkpoint. This page does not mirror binaries or infer compatibility from filenames.

Can I use an SD 1.5 ControlNet model with an SDXL checkpoint?

Do not assume so. Treat the base checkpoint family and control-model family as a required match unless the control-model publisher explicitly documents a different supported pairing.

Does original Forge support FLUX ControlNet?

The current repository contains ControlNet infrastructure, but old tutorials and community requests do not prove that any arbitrary FLUX control model works in the integrated unit. Follow the exact model publisher’s requirements and prove one fixed-seed A/B run; otherwise mark compatibility unknown.

How do I use OpenPose in Forge ControlNet?

Use a clear source image, select an OpenPose-family preprocessor and a matching control model for the base family, preview the skeleton, correct detection failures, then compare one enabled and disabled generation with the same seed.

How do I use Canny ControlNet in Forge?

Select Canny, choose a Canny control model for the active base family, preview the edge map, and check that important contours are present without excessive noise. Start at weight 1, full range, Balanced, and one unit.

How do I use depth ControlNet in Forge?

Select a depth preprocessor and matching depth control model, preview near-to-far separation, and verify that the broad spatial layout is correct. Depth control is not a promise to preserve fine contours or identity.

What preprocessor should I use for an existing control map?

Choose Preprocessor: None when the image is already in the exact map format expected by the selected control model. Running another detector can replace or corrupt the signal you prepared.

What does Pixel Perfect do in Forge ControlNet?

It computes preprocessor resolution from the control image, output dimensions, and Resize Mode. It does not make a mismatched control model compatible and does not guarantee that the detected content is correct.

Should Pixel Perfect always be enabled?

It is a useful first baseline for image-derived maps. Disable it only when you have a reason to set preprocessor resolution manually and can compare the resulting detected maps.

How do I preview a ControlNet map in Forge?

Turn on Allow Preview, choose the preprocessor, and run its preview action. Inspect the detected map before Generate. If it encodes the wrong structure, repair the input or preprocessor settings first.

What Control Weight should I use?

Start from the inspected default of 1. Compare the same seed before changing it. Higher values can force the map more strongly but cannot fix a wrong preprocessor, incompatible model, or bad resize choice.

What does Timestep Range do?

It sets the portion of denoising during which the control applies. The inspected default is 0–1. Keep the full range until the pair works, then change one endpoint at a time for an attributable comparison.

Which Control Mode should I choose?

Start with Balanced. “My prompt is more important” and “ControlNet is more important” adjust priority between prompt and control; neither fixes model-family or map-type mismatches.

Which Resize Mode should I use for ControlNet?

Use Just Resize when aspect ratios match; Crop and Resize when filling the canvas matters and center-cropping is safe; Resize and Fill when preserving the whole control map matters more than avoiding padded bands.

Why is my ControlNet result stretched?

Just Resize changes the map to the output width and height directly. If ratios differ, use a deliberate crop/fill mode or make the first test at a matching ratio. Record the final map and output dimensions.

Can I use ControlNet with Img2img?

Yes. The integrated script handles Txt2img and Img2img, but Img2img adds its own source-image and denoising influence. Prove ControlNet in one simple route first, then add the second influence without changing the seed.

Can I use multiple ControlNet units in Forge?

Yes. The inspected setting defaults to three units and can be configured from one to ten with a restart. Test each unit alone before combining them so you know which map causes a change or failure.

How does ControlNet work with Hires. fix?

When Hires. fix is active, Forge exposes Both, Low res only, and High res only. Leave Hires. fix off for the first proof; then restore it and compare the same seed and target size with one option at a time.

Can I batch ControlNet images in Forge?

The inspected UI includes Single Image, Batch Folder, and Batch Upload modes. Batch adds ordering, seeds, dimensions, and file matching to the receipt, so prove a single image before scaling the workflow.

Why does ControlNet have no effect in Forge?

The common gates are Enable, a valid input, a useful detected map, a non-None compatible model, weight above zero, an active timestep range, and an A/B comparison that changes only the unit. If all pass, preserve the console and exact files for a reproducible report.

How do I report a Forge ControlNet bug?

Include original Forge commit, environment, base and control model filenames and sources, preprocessor, input and detected map, all unit controls, generation receipt, console trace, and same-seed enabled/disabled outputs. State whether a clean install reproduces it.

Does the Control Type filter prove that a listed model is compatible?

No. Current code filters model names using preprocessor filename tags. A filtered dropdown is a convenience; only the model publisher’s contract and a completed controlled test establish support.

Does ControlNet preserve a person’s face or clothing?

Not by itself. Pose controls body arrangement, Canny controls edges, and depth controls spatial layering. Identity and styling require the base model, prompt, and possibly separate compatible methods, each proved independently.

10 · Evidence ledger

What is current, reported, dated, or unknown

Sources explain the product and user problems. The workspace SEO book alone controls the page methodology.

VERIFIED Original Forge code
COMMUNITY-REPORTED Problems and unresolved cases
STALE SNAPSHOT Tutorials and secondary explanation
UNKNOWN

Universal support for an arbitrary downloaded control model—especially a FLUX or fork-specific package—remains unknown until its publisher documents the pair and it passes a controlled run in the exact original-Forge build.

Written by the Forge Field Guide editorial team · reviewed against original Forge commit dfdcbab · source-audited, not GPU-run here · updated 27 Aug 2026.