ORIGINAL FORGE · PATH LOOKUP

Forge Paths and Folders

Find the root first, then resolve the file. The same relative folder can sit under an extracted Windows package, a Git checkout, or a custom data directory—and only the running process knows which one is active.

Paths mapped36Code inspecteddfdcbabEvidence checked31 Aug 2026
DIRECT ANSWER

Most path mistakes are root mistakes.

VERIFIED

Original Forge resolves three different bases: program for source-owned files, data for most user state, and models for model inventories. They are equal in a default Git install, which is why the distinction is easy to miss.

The Windows package adds an outer layer: launchers and system sit outside its inner webui program/data root. Custom arguments can separate the roots again.

[PROGRAM]defaults to[DATA]models/unless --data-dir or --models-dir changes the chain
01 · INSTALL PROFILE

Translate the same Forge folders into your install shape.

Absolute paths below are operational examples, not required locations. Select the profile whose launcher and outer folder match the process you use.

ASSUMPTIONOFFICIAL ARCHIVE SHAPE

Windows package

The archive has an outer package folder with run/update batch files, system, and webui. Forge user data defaults inside webui. Your extracted folder name can differ.

PROGRAM ROOTC:\AI\Forge\webui
DATA ROOTC:\AI\Forge\webui
MODELS ROOTC:\AI\Forge\webui\models
OUTPUT ROOTC:\AI\Forge\webui\outputs
SETTINGSC:\AI\Forge\webui\config.json
USER EXTENSIONSC:\AI\Forge\webui\extensions
ENVIRONMENTC:\AI\Forge\system
LAUNCHER / CONFIGC:\AI\Forge\run.bat
UNKNOWN

Custom launcher or manager? Its layout is not inferred here. Read the active console, locate launch.py, and inspect its arguments. Do not relabel a Stability Matrix, container, cloud image, or third-party bundle as the official package.

02 · ROOT LEGEND

Five tokens replace dozens of guessed absolute paths.

Every table row uses one of these tokens. Resolve it once for the running process, then append the relative location exactly—including capitalization.

[PROGRAM]
The folder containing launch.py in the running Original Forge source.
[DATA]
Equals [PROGRAM] by default; --data-dir replaces this user-data base.
[MODELS]
Equals [DATA]/models by default; --models-dir replaces only this base.
[PACKAGE]
The outer extracted Windows archive folder containing system and webui.
[CHOSEN]
A path entered by the user in the interface; no stable default can replace it.
03 · COMPLETE LOOKUP

Find the file, folder, or output you need.

This table is a locator, not a compatibility guide. A file appearing in a scanned directory proves discovery only; use the linked task page to test loading or behavior.

Showing all 36 paths

Default Original Forge paths, owners, overrides, and boundaries
ItemDefault formulaWhat it ownsWhat changes itBoundary
Roots & runtime7 entries
[PROGRAM]
Source code, launch.py, launcher scripts, modules, and built-in code.The checkout or package layout—not --data-dir.Locate the launch.py used by the running console. A similarly named clone is not proof.
[DATA]
Base for default user models, outputs, settings, user extensions, styles, and caches.--data-dirDefaults to [PROGRAM]. It can be elsewhere, so do not infer it from the browser URL.
[MODELS]
Base from which most model-family folders are derived.--models-dir; otherwise [DATA]/models--models-dir does not move embeddings, outputs, config, styles, or extensions.
[PROGRAM]/webui-user.bat
Editable Windows variables for Python, Git, venv, and COMMANDLINE_ARGS.Git install only; package launchers differ.Edit the file called by the active launcher. A dormant copy has no effect.
[PROGRAM]/webui-user.sh
Optional Linux/macOS variables such as COMMANDLINE_ARGS, python_cmd, and venv_dir.Source install profile.It must be used by the command that actually starts Forge.
[PROGRAM]/venv
Default isolated Python packages for Windows and Unix source launchers.VENV_DIR on Windows; venv_dir on Unix.The official Windows package instead carries its prepared runtime in the outer system folder.
[PACKAGE]/system
Bundled Git/Python environment in the dated official Windows archive.Selected release archive and outer extraction root.Package-only path. Do not call it venv or copy it into a Git checkout.
Models & components11 entries
[MODELS]/Stable-diffusion
Primary checkpoint, supported diffusion model, or GGUF inventory.--ckpt-dir; --ckpt adds a named file.Discovery is not compatibility. Split FLUX layouts still need their named companion files.
[MODELS]/VAE
Separate image encoder/decoder files.--vae-dir adds another inventory path; --vae-path pins one file.Use only the VAE required by the exact model layout.
[MODELS]/text_encoder
Separate CLIP-L, T5, and supported encoder components.--text-encoder-dir adds another inventory path.Do not place these in embeddings; embeddings are learned prompt tokens.
VERIFIEDLoRA
[MODELS]/Lora
LoRA Extra Networks inventory.--lora-dir replaces the default path.Capital L matters on case-sensitive filesystems. The A1111 reference helper may inspect lowercase lora.
[DATA]/embeddings
Textual Inversion Extra Networks inventory.--embeddings-dirThis is beside models by default, not [MODELS]/embeddings.
[MODELS]/hypernetworks
Legacy hypernetwork inventory.--hypernetwork-dirA folder path does not establish current model-family compatibility.
[MODELS]/ControlNet
Integrated ControlNet model inventory.--controlnet-dirWeights are separate from preprocessor downloads and the built-in extension code.
[MODELS]/ControlNetPreprocessor
Default cache for integrated ControlNet preprocessor models.--controlnet-preprocessor-models-dirA downloaded preprocessor is not a ControlNet weight and will not appear in the model dropdown.
[MODELS]/{ESRGAN, RealESRGAN, BSRGAN, DAT, ScuNET, SwinIR}
Family-specific post-processing and resize model inventories.The matching *-models-path argument.Use the directory owned by that upscaler family; there is no single generic upscaler folder.
[MODELS]/ipadapter
Default model directory used by the integrated IP-Adapter code.Integrated implementation; verify exact workflow code.The presence of this path does not prove that every IP-Adapter model works with every base family.
[MODELS]/insightface
Default InsightFace data used by supported integrated preprocessors.Integrated implementation.Downloads may create deeper subdirectories. Preserve the console download destination.
Generated files8 entries
[DATA]/outputs/txt2img-images/[date]
Default generated txt2img samples, grouped into date subdirectories.Settings → Paths for saving; outdir_samples can override all sample roots.The [date] directory comes from the default save-to-directory pattern and can be changed.
[DATA]/outputs/img2img-images/[date]
Default img2img, sketch, and inpainting samples.Settings → Paths for saving; outdir_samples can override.Batch processing can use a user-selected output directory instead.
[DATA]/outputs/extras-images/[date]
Default results from the Extras/post-processing tab.Settings → Paths for saving.This is distinct from an upscaled image produced inside Hires. fix.
[DATA]/outputs/txt2img-grids/[date]
Default saved grids for txt2img batches when grid saving is enabled.outdir_grids or the specific txt2img grid setting.A grid is not the set of individual samples.
[DATA]/outputs/img2img-grids/[date]
Default saved grids for img2img batches when enabled.outdir_grids or the specific img2img grid setting.The gallery preview does not prove that grid saving is enabled.
[DATA]/log/images
Dedicated destination used by the Save and Save zip controls under the result gallery.Directory for saving images using the Save button.Generate and Save are different actions and can write to different directories.
[DATA]/outputs/init-images
Optional copies of source images used for img2img.Saving setting for init images.The folder is relevant only when that saving option is enabled.
[CHOSEN IN IMG2IMG BATCH UI]
Destination entered for directory-based batch processing.The Output directory field in the batch interface.Do not assume it inherits the normal img2img output directory.
Settings & application data10 entries
[DATA]/config.json
Saved Settings values, including output-path overrides.--ui-settings-fileBack it up before resetting settings. It is not the UI component-default file.
[DATA]/ui-config.json
Saved interface component defaults and layout values.--ui-config-fileIt is separate from config.json. Deleting either file is a reset action, not a harmless cache clear.
[DATA]/styles.csv + [DATA]/styles_integrated.csv
Default prompt-style databases loaded by the current code.--styles-file can add one or more paths or wildcard patterns.Preserve valid CSV structure and back up custom styles before updates or migration.
[DATA]/user.css
Optional user stylesheet inserted into the WebUI when the file exists.--data-dir moves the default location.CSS can hide or break controls. Rename it during clean-interface diagnosis.
[DATA]/params.txt
Prompt-history text written from the last generation path.--no-prompt-history prevents creation.It is not a complete generation receipt and can be overwritten by the next run.
[DATA]/cache
Disk cache for file metadata and other cached subsections in current code.SD_WEBUI_CACHE_DIR; legacy cache.json may be converted.Do not treat all external model/download caches as this directory. Libraries may use OS-level caches.
[DATA]/extensions
Third-party extensions installed for this Forge data root.--data-dir moves the default directory.Extension code is executable and version-sensitive. Keep it separate from other WebUIs.
[PROGRAM]/extensions-builtin
Integrated feature code shipped with the inspected Original Forge source.The installed Forge commit.Do not install third-party extensions here or copy this folder from a fork.
[PROGRAM]/config_states
JSON snapshots created by the Extensions backup/restore interface.Program root and the save action.--data-dir does not move this directory in the inspected code.
[SYSTEM TEMP BY DEFAULT]
Temporary image files used by the interface when no custom temp directory is set.Settings → Directory for temporary images.The OS default is environment-dependent; never publish one universal path.
04 · PATH PRECEDENCE

Resolve overrides from broadest to narrowest.

Do not add more flags until you can explain the effective path at each layer. A specific inventory path can survive while another root moves.

  1. 01

    Find the running program

    Use the console that printed the local URL. Record the source path and exact Original Forge commit.

  2. 02

    Resolve --data-dir

    If absent, [DATA] = [PROGRAM]. If present, settings, outputs, user extensions, and default models start under that custom base.

  3. 03

    Resolve --models-dir

    If absent, [MODELS] = [DATA]/models. If present, it replaces that model base without moving the rest of user data.

  4. 04

    Apply inventory-specific paths

    Check --ckpt-dir, --vae-dir, --text-encoder-dir, --lora-dir, and other named controls only for the affected category.

  5. 05

    Read saved Settings

    config.json can retain custom output directories. The defaults in this table stop being the effective destinations when those fields are populated.

  6. 06

    Prove one write or discovery

    Generate one image or refresh one model inventory, then inspect the actual resulting file or console path before moving anything else.

05 · BACKUP BOUNDARY

Back up state; recreate caches and environments.

A rollback is safer when application state is separated from replaceable code and generated caches.

BACK UP

User-created state

  • config.json and ui-config.json
  • custom styles*.csv and user.css
  • outputs and Save-button copies you need
  • models and license/source records
  • third-party extension list and exact commits
RECREATE DELIBERATELY

Derived or environment state

  • Git venv after recording its working stack
  • Forge cache after diagnosing the reason
  • temporary images
  • downloaded dependencies from authoritative sources
  • a clean Original Forge checkout at the recorded commit
DO NOT MERGE

State from another product

Keep source, venv, configuration, extensions, custom nodes, and outputs separate between Original Forge, A1111, ComfyUI, reForge, Forge Classic, and Forge Neo. Share compatible weights only through explicit, verified category paths.

Build a shared-model layout safely
06 · PATH QUESTIONS

Answers for the paths users actually type.

All relative defaults refer to inspected Original Forge commit dfdcbab. Installation examples are visibly labeled, and custom managers remain outside the verified package boundary.

Where does Stable Diffusion WebUI Forge save generated images?

By default, generated samples go under the active data root: outputs/txt2img-images for txt2img, outputs/img2img-images for img2img and inpainting, and outputs/extras-images for Extras. Date subfolders are enabled by the default directory pattern. Settings can override every destination.

Where is the Forge output folder in the Windows one-click package?

With an example package extracted to C:\AI\Forge, the default output root is C:\AI\Forge\webui\outputs. The actual outer folder can have any name, and a custom --data-dir or saved output setting changes the result.

Where is the Forge output folder in a Git install?

Without path overrides, outputs is inside the cloned stable-diffusion-webui-forge directory on Windows, Linux, or macOS. Resolve the active checkout first, then check config.json for saved output-directory overrides.

Why are my Forge images inside another date folder?

Save images to a subdirectory is enabled by default and the default directory-name pattern is [date]. Change that behavior in the saving settings only after recording the current destination.

Why did clicking Save put the image somewhere else?

The Save button uses its own default destination, [DATA]/log/images, while automatic generation uses the txt2img, img2img, or Extras output directory. Both paths are independently configurable.

What is the difference between the Forge program root and data root?

The program root contains the inspected source and launch.py. The data root owns most user data and equals the program root by default. --data-dir can separate them, while built-in extensions and config_states remain under the program root in the inspected code.

What does --data-dir move in Forge?

--data-dir changes the base for default models, embeddings, outputs, config.json, ui-config.json, styles, user.css, cache, and user extensions. It does not relocate program-owned source files, extensions-builtin, or config_states.

What does --models-dir move?

It replaces the models root used to derive most model-family folders. It does not move embeddings, outputs, settings, styles, extensions, or the Python environment.

Where is config.json in Forge?

The default is [DATA]/config.json. --ui-settings-file can select a different file. This stores Settings values and is separate from ui-config.json.

Where is ui-config.json?

The default is [DATA]/ui-config.json. It stores interface component defaults. --ui-config-file can change the path. Back it up before using deletion as a UI reset.

Where are Forge extensions installed?

Third-party extensions default to [DATA]/extensions. Integrated code ships in [PROGRAM]/extensions-builtin. Never mix those folders or transfer a built-in directory from reForge, Classic, or Neo into Original Forge.

Where is the Forge venv folder?

A default Git/source install uses [PROGRAM]/venv unless the launcher variable changes it. The official Windows package instead has a prepared outer system directory and should not be described as a normal Forge venv.

Where do Forge prompt styles go?

Current code loads [DATA]/styles.csv and [DATA]/styles_integrated.csv by default. --styles-file can add explicit files or wildcard paths. Back up custom CSV files before migration.

Where are ControlNet models and preprocessors stored?

ControlNet weights default to [MODELS]/ControlNet. Integrated preprocessor downloads default to [MODELS]/ControlNetPreprocessor. They serve different roles and appear in different controls.

Where are FLUX GGUF, VAE, CLIP-L, and T5 files stored?

The documented split layout puts the diffusion or GGUF file in [MODELS]/Stable-diffusion, the VAE in [MODELS]/VAE, and CLIP-L/T5 in [MODELS]/text_encoder. Packaged checkpoints can have another documented layout.

Can I move the entire Forge models folder with --data-dir?

--data-dir moves the broad user-data base, which also affects settings, outputs, extensions, and more. Use --models-dir when the intended change is only the WebUI-shaped models tree, or individual model path arguments for one category.

Why does a correct relative Forge path still not work?

You may be editing a different clone, package, data root, or launcher than the running process uses. Start from the console that printed the local URL, record its program path and command-line arguments, then resolve [DATA] and [MODELS].

Does Forge store every downloaded model inside its models folder?

No universal claim is safe. Integrated components often choose a directory under [MODELS], but Python libraries and third-party extensions may use their own data or OS-level caches. Preserve the console download destination and verify the exact extension or component source.

07 · SOURCES & LIMITS

The code defines defaults. The running process defines your absolute path.

Primary claims were checked in a local copy of commit dfdcbab and rechecked against current original-repository pages. Community and tutorial sources supplied user language and failure cases, never the authoritative path rules.

Primary / direct evidence

Local research reviewed: 9 records, including 4 full video transcripts
V37

Shared model paths solution

Full captions: repeated-storage problem and whole-models junction proposal; broad linking shortcut rejected.

VERIFIEDVerified

Default roots, formulas, flags, output settings, and current source ownership.

ASSUMPTIONExamples

Absolute C:\, /home, and /Users paths illustrate a shape; users choose the real parent.

UNKNOWNNot generalized

Third-party manager layouts, extension-specific state, and external library caches.

Author Forge Field Guide editorial teamTechnical review Original Forge source at dfdcbabUpdated 31 Aug 2026