ACTIVE ROOT · FILE ROLE · UI INVENTORY

Where Forge looks for model files

Find the directory used by the running Forge process, identify what the file does, and put it in the folder scanned by that UI control. A familiar filename in a guessed folder is not enough.

Evidence checked24 Aug 2026Code snapshotdfdcbab · 26 Jun 2025ScopeOriginal Forge only
01 · Active root

Start from the process that actually launched

Multiple clones, extracted packages, shortcuts, and custom arguments can all make a correct relative path point to the wrong installation.

  1. 01

    Identify the running Forge directory

    Use the terminal or launcher that opened the UI. Do not start from an old desktop shortcut, download folder, or another WebUI’s path.

  2. 02

    Read the complete launch command

    Look for --data-dir, --models-dir, an inventory-specific directory argument, or --forge-ref-a1111-home.

  3. 03

    Resolve the root before the subfolder

    Only then append Stable-diffusion, Lora, VAE, or another inventory directory.

DATA ROOT--data-dir or program directory
MODEL ROOT--models-dir or [data]/models
INVENTORYStable-diffusion, Lora, …
Embeddings are the important exception.

The default is [data]/embeddings, beside models. Changing --models-dir does not move them; use --embeddings-dir or change the data root.

Verify the arguments in current code ↗
02 · Path resolver

What changes when a path argument is present?

Select the launch setup you see. The result describes the base paths; inventory-specific arguments are checked in the next section.

MODEL ROOT<Forge data directory>/models
EMBEDDINGS ROOT<Forge data directory>/embeddings
BEHAVIOR

Forge uses the active data directory. Without --data-dir, this is normally the WebUI program directory.

VERIFIED Root behavior is traced from paths_internal.py, cmd_args.py, and launch_utils.py ↗

03 · Default tree

The folder name tells Forge which inventory owns the file

These are default relative paths, not a promise that every installation has already created every optional directory.

DEFAULT · RELATIVE TO ACTIVE DATA DIRECTORYCore and specialist model inventories
<active data directory>/
├── embeddings/
└── models/
    ├── Stable-diffusion/
    ├── VAE/
    ├── text_encoder/
    ├── Lora/
    ├── ControlNet/
    ├── ControlNetPreprocessor/
    ├── hypernetworks/
    ├── ESRGAN/     ├── RealESRGAN/
    ├── BSRGAN/     ├── DAT/
    ├── HAT/        ├── ScuNET/
    └── SwinIR/

Case matters on Linux: the current standalone LoRA default is models/Lora. Historical shared A1111 layouts can use lowercase models/lora; use the path actually configured, not a silent spelling variation.

04 · File router

Route by role, then prove the matching control sees it

A .safetensors extension does not tell you whether the file is a checkpoint, LoRA, VAE, or ControlNet model. The publisher’s model card must identify the role.

Choose a file role
ACTIVE INVENTORYCheckpoint / diffusion model
DEFAULT PATHmodels/Stable-diffusion

Subfolders are scanned. Files ending .vae.ckpt or .vae.safetensors are excluded from checkpoint inventory.

UI control
Checkpoint selector
After copy
Use the refresh button beside Checkpoint; restart after changing a launch path.
Code scanner
.ckpt · .safetensors · .gguf
Done state
The exact file appears in Checkpoint. Then complete a plain generation to prove it loads.
05 · Exact map

File → folder → UI → proof

Use this as a placement checklist. “Visible” and “loads successfully” are separate gates.

Default inventories at inspected original Forge commit dfdcbab
File roleDefault pathOwning UIProof
Checkpoint / diffusion modelmodels/Stable-diffusionCheckpoint selectorThe exact file appears in Checkpoint. Then complete a plain generation to prove it loads.
Separate VAEmodels/VAEVAE / Clip selectorThe VAE appears and the model completes final image decoding.
CLIP / T5 text encodermodels/text_encoderVAE / Clip selectorEvery required encoder is selectable and the prompt-encoding stage completes.
LoRAmodels/LoraLoRA Extra Networks inventoryThe card appears, then a fixed-seed A/B test shows the expected effect.
Textual inversion embeddingembeddingsTextual Inversion Extra Networks inventoryA compatible embedding appears and can be applied to its matching model family.
ControlNet modelmodels/ControlNetControlNet model selectorThe unit lists the model and a minimal ControlNet generation completes.
Upscalermodels/<upscaler family>Extras / upscale selectorThe intended upscaler name appears and processes a small known image.
Hypernetworkmodels/hypernetworksHypernetwork inventoryThe hypernetwork appears and can be applied to a compatible base model.
06 · Refresh protocol

Copy, inventory refresh, load test

Refreshing answers “can the scanner find it?” A controlled generation answers “can this exact file set load and run?”

  1. COPY

    Finish the transfer first

    Compare the filename, expected size, and publisher hash when available. Keep every required companion file from the same documented version.

  2. REFRESH

    Refresh the inventory that owns it

    Checkpoint, VAE, Text Encoder, LoRA/Textual Inversion, and ControlNet expose separate discovery paths. Refreshing one does not certify the others.

  3. SELECT

    Select the exact item

    If only part of a split model appears, stop. A selectable diffusion model does not prove its VAE and encoders are present.

  4. PROVE

    Run the smallest documented baseline

    Use the matching preset and model-publisher settings. Keep optional LoRAs, ControlNet, hires passes, and extensions off unless the file under test requires them.

01 · DISCOVEREDAppears in the correct control
02 · LOADABLENo fatal loader error
03 · USABLEBaseline result completes

If a file appears but fails, stop moving it between folders. Record the earliest console error and verify architecture, version, required components, and hash. Inspect the checkpoint scanner ↗

07 · Overrides

Know whether a custom argument adds or replaces

Path arguments do not all behave as one universal “extra models folder” setting.

BASE

--data-dir

Changes the broad data base used for default models, embeddings, outputs, extensions, and other user data.

BASE

--models-dir

Replaces the models root from which many model-family defaults are derived. Embeddings remain outside it.

ADDS

--ckpt-dir

Adds a recursively scanned checkpoint directory. --ckpt can add one specific checkpoint file.

ADDS

--vae-dir · --text-encoder-dir

Add their configured directories to the corresponding module inventories in the inspected code.

REPLACES

--lora-dir · --embeddings-dir

Set the effective root for those inventories. Do not expect the standalone default to remain active automatically.

REPLACES

--controlnet-dir

Sets the ControlNet weights root. The separate preprocessor-cache argument controls a different directory.

Sharing with AUTOMATIC1111 has an official helper.

--forge-ref-a1111-home [path] maps existing A1111 inventories, while explicit directory arguments take precedence. Verify every mapped folder independently; partial sharing is possible.

08 · Split models

One download page can describe several inventories

Do not collapse a split model set into one folder because the files share a model name.

DIFFUSION MODELmodels/Stable-diffusion

Packaged checkpoint, raw diffusion model, or GGUF according to the exact guide.

DECODERmodels/VAE

The VAE named for that exact distribution.

LANGUAGEmodels/text_encoder

Required CLIP-L and/or T5 encoders.

DATED OFFICIAL GUIDANCE The official FLUX split-file instructions document this three-inventory layout. Packaged NF4/FP8 variants can differ. Open the exact guide ↗

09 · Missing-file diagnosis

Read an empty list as a path signal

Work from root to inventory to file before changing performance flags or reinstalling Forge.

The Checkpoint list is empty

Confirm the running installation, active data/model root, models/Stable-diffusion path, supported extension, finished download, and Checkpoint refresh. If --ckpt-dir or --ckpt is present, resolve it exactly.

See the community-reported symptom ↗
The LoRA folder or card is missing

Create models/Lora under the active model root if needed. Preserve capitalization on Linux, verify --lora-dir, refresh Extra Networks, and inspect the first loader message.

Diagnose the missing model or LoRA →Continue with LoRA activation →See the community-reported symptom ↗
VAE or Text Encoder remains empty

Check file role, accepted extension, full companion set, and the specific module refresh. A checkpoint appearing does not prove that a separate VAE, CLIP-L, or T5 was routed correctly.

ControlNet still shows None

Verify that model weights are in the effective models/ControlNet path—not only a preprocessor in ControlNetPreprocessor. Refresh ControlNet and read the first file/state-dict error.

Diagnose ControlNet discovery and loading →Continue with the ControlNet pairing guide →See the community-reported symptom ↗
An embedding is present on disk but absent in the UI

Check [data]/embeddings, not [models]/embeddings. Then verify --data-dir and --embeddings-dir. The loader can skip an embedding that does not match the loaded model family.

See the community-reported symptom ↗
A shared path works for checkpoints but not LoRAs

Check every mapping separately. A1111 reference mapping only uses paths that exist, explicit arguments take precedence, and the standalone/current versus historical shared LoRA directory can differ in capitalization.

The file is listed but loading fails

Folder placement is complete; compatibility diagnosis starts now. Match architecture and version, confirm companion files and hash, then preserve the earliest console error. Do not treat discovery as support.

Choose and verify the model family →
10 · Folder FAQ

Exact answers for path and discovery questions

Each answer starts with the current original Forge defaults and names the condition that can change them.

Where is the Forge model folder?

By default, model inventories start under models in the active Forge data directory. First identify the running installation and any --data-dir or --models-dir argument; an absolute path copied from another guide is not evidence of your active root.

Where do checkpoints go in Stable Diffusion WebUI Forge?

Put checkpoint or primary diffusion-model files in models/Stable-diffusion, unless --ckpt-dir, --ckpt, an A1111 reference home, or another configured path changes the checkpoint inventory.

Where do LoRA files go in Forge?

The standalone default is models/Lora with a capital L. --lora-dir replaces that inventory path. Subfolders are scanned.

Why is there no Lora folder in a fresh Forge install?

Create models/Lora inside the active model root, preserving the capital L. Confirm that you are editing the installation that actually launched and that --models-dir or --lora-dir did not point elsewhere.

Where do VAE files go?

Use models/VAE for separate VAE files. Forge may also discover a same-name .vae file beside its checkpoint. Use only the VAE specified for the exact model.

Where do FLUX CLIP-L and T5 text encoders go?

For the split-file layout in official Forge guidance, put them in models/text_encoder. Packaged checkpoints may use a different layout, so follow the documentation for the exact distribution.

Where do textual inversion embeddings go?

Use embeddings at the data-directory level—not models/embeddings. --models-dir does not move it; --data-dir or --embeddings-dir can.

Where do ControlNet models go?

Use models/ControlNet by default. Do not confuse this with models/ControlNetPreprocessor, which is the separate cache for preprocessor models.

Where do upscaler models go?

Use the directory for the upscaler family, such as models/ESRGAN, models/RealESRGAN, models/BSRGAN, models/DAT, models/HAT, models/ScuNET, or models/SwinIR.

Can Forge scan model subfolders?

Yes for the principal checkpoint, LoRA, VAE, text-encoder, embedding, and ControlNet inventories inspected here. Keep roles separated even when recursive scanning works.

Do I refresh Forge or restart it after copying a model?

Use the refresh control owned by that inventory after copying a file. Restart Forge when you change launch arguments, a base directory, or when the inventory has no working refresh action.

Why is my checkpoint not showing in Forge?

Verify the active data and model roots, exact filename extension, completed download, permissions, and refresh action. Then inspect the first console message about the file.

Why is my LoRA not showing in Forge?

Check models/Lora capitalization, the effective --lora-dir, supported extension, subfolder permissions, and the LoRA inventory refresh. A shared checkpoint path does not prove the LoRA path is shared.

Why is VAE / Text Encoder empty?

Confirm that the file role, folder, and extension match, then refresh the specific module. For split models, verify that every companion file named by the publisher was downloaded.

Why does ControlNet still say None after I copied a model?

Confirm that weights—not only a preprocessor or config—are in the effective ControlNet directory. Refresh ControlNet and read the first file or state-dict error in the console.

What does --models-dir change?

It replaces the general models root used to derive many default model subdirectories. It does not move the separate embeddings directory.

What is the difference between --data-dir and --models-dir?

--data-dir changes the broader user-data base, including default models, embeddings, outputs, and extensions. --models-dir changes the model root only.

Can Forge share model folders with AUTOMATIC1111?

Yes. The official --forge-ref-a1111-home helper conditionally maps existing A1111 checkpoint, VAE, hypernetwork, embedding, LoRA, ControlNet, and preprocessor paths. Explicit directory arguments win.

Can Forge share one model root with ComfyUI?

Do not assume one root maps correctly because the folder layouts differ. Configure the relevant Forge inventory paths individually or use filesystem links only if you can maintain and verify every target.

Why does a model appear in the list but fail to load?

Discovery only proves that the scanner found a candidate file. Verify architecture, exact version, companion files, hash, and the earliest console error; visibility is not compatibility.

11 · Evidence scope

Defaults are code facts; failures are installation-specific

We separate current path behavior from dated guidance and reported symptoms.

VERIFIED

Code-verified

Data/model roots, inventory defaults, supported discovery extensions, refresh controls, and path-argument behavior.

STALE SNAPSHOT

Dated official guidance

FLUX split-file and shared A1111 setup explain exact published layouts, not a timeless compatibility promise.

COMMUNITY-REPORTED

User symptoms

Empty checkpoint lists, absent LoRA cards, ControlNet None, and skipped embeddings define diagnostic questions—not universal causes.

UNKNOWN

Not proved by placement

Architecture compatibility, file integrity, licensing, adequate hardware, and output quality still require their own checks.

Research base

Current original Forge code and primary project discussions were cross-checked against five locally catalogued video transcripts covering checkpoints, ControlNet, embeddings, split text encoders, LoRAs, and shared storage. Videos informed user language; code controls every path claim.

Author
Forge Field Guide editorial team
Technical review
Original code + primary discussions
Inspected snapshot
dfdcbab · 26 Jun 2025
Refresh trigger
Path, loader, or UI inventory change