Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/lllyasviel/Fooocus/llms.txt

Use this file to discover all available pages before exploring further.

Presets are JSON files stored in the presets/ folder that define a complete generation configuration in one place — including which checkpoint and LoRAs to load, default styles, sampler, scheduler, CFG scale, aspect ratio, and even which model files to auto-download if they are missing. Switching a preset instantly reconfigures the entire pipeline, making it easy to jump between photorealistic, anime, and fast-generation workflows without manually adjusting every setting.

Built-in Presets

Fooocus ships with the following presets out of the box:
PresetLaunch FlagBatch FileMain CheckpointDefault Performance
default(none)run.batjuggernautXL_v8Rundiffusion.safetensorsSpeed
anime--preset animerun_anime.batanimaPencilXL_v500.safetensorsSpeed
realistic--preset realisticrun_realistic.batrealisticStockPhoto_v20.safetensorsSpeed
lcm--preset lcmjuggernautXL_v8Rundiffusion.safetensorsExtreme Speed
lightning--preset lightningjuggernautXL_v8Rundiffusion.safetensorsLightning
playground_v2.5--preset playground_v2.5playground-v2.5-1024px-aesthetic.fp16.safetensorsSpeed
pony_v6--preset pony_v6ponyDiffusionV6XL.safetensorsSpeed
sai--preset saisd_xl_base_1.0_0.9vae.safetensorsSpeed
Missing model files listed in a preset’s checkpoint_downloads, lora_downloads, embeddings_downloads, or vae_downloads sections are automatically fetched from the configured URLs the first time that preset is loaded.

Switching Presets

From Fooocus 2.3.0 onward, you can switch presets directly in the web interface without restarting. Open the Preset dropdown (visible in the top section of the UI) and select any preset from the list. Fooocus will load the new configuration immediately.To prevent users from changing presets through the UI, launch with --disable-preset-selection.

Useful CLI Flags for Presets

FlagDescription
--preset PRESETLoad the named preset at startup
--disable-preset-selectionHide the preset dropdown in the browser UI, locking the current preset
--always-download-new-modelAutomatically download any model files declared in checkpoint_downloads / lora_downloads that are not present locally

The previous_default_models Field

When Fooocus starts and the file named in default_model is not found on disk, it falls back through the list in previous_default_models in order, using the first one it finds. This ensures that users who already have an older version of a model can still load the preset without an immediate download.
"previous_default_models": [
    "juggernautXL_version8Rundiffusion.safetensors",
    "juggernautXL_version7Rundiffusion.safetensors",
    "juggernautXL_v7Rundiffusion.safetensors",
    "juggernautXL_version6Rundiffusion.safetensors",
    "juggernautXL_v6Rundiffusion.safetensors"
]

Preset JSON Format

A preset file is a plain JSON object. All keys are optional — any key omitted from the preset file falls back to the value in config.txt or Fooocus’s built-in defaults. The default.json preset is shown below with annotations explaining each field:
{
    // ── Model selection ──────────────────────────────────────────────────────
    "default_model": "juggernautXL_v8Rundiffusion.safetensors",
    "default_refiner": "None",
    "default_refiner_switch": 0.5,

    // ── LoRA slots: [enabled, filename, weight] ──────────────────────────────
    "default_loras": [
        [true,  "sd_xl_offset_example-lora_1.0.safetensors", 0.1],
        [true,  "None", 1.0],
        [true,  "None", 1.0],
        [true,  "None", 1.0],
        [true,  "None", 1.0]
    ],

    // ── Sampler settings ─────────────────────────────────────────────────────
    "default_cfg_scale": 4.0,
    "default_sample_sharpness": 2.0,
    "default_sampler": "dpmpp_2m_sde_gpu",
    "default_scheduler": "karras",
    "default_performance": "Speed",
    "default_overwrite_step": -1,

    // ── Prompt defaults ───────────────────────────────────────────────────────
    "default_prompt": "",
    "default_prompt_negative": "",

    // ── Style and resolution ──────────────────────────────────────────────────
    "default_styles": [
        "Fooocus V2",
        "Fooocus Enhance",
        "Fooocus Sharp"
    ],
    "default_aspect_ratio": "1152*896",

    // ── Auto-download declarations ────────────────────────────────────────────
    "checkpoint_downloads": {
        "juggernautXL_v8Rundiffusion.safetensors": "https://huggingface.co/lllyasviel/fav_models/resolve/main/fav/juggernautXL_v8Rundiffusion.safetensors"
    },
    "lora_downloads": {
        "sd_xl_offset_example-lora_1.0.safetensors": "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_offset_example-lora_1.0.safetensors"
    },
    "embeddings_downloads": {},

    // ── Fallback models ────────────────────────────────────────────────────────
    "previous_default_models": [
        "juggernautXL_version8Rundiffusion.safetensors",
        "juggernautXL_version7Rundiffusion.safetensors",
        "juggernautXL_v7Rundiffusion.safetensors",
        "juggernautXL_version6Rundiffusion.safetensors",
        "juggernautXL_v6Rundiffusion.safetensors"
    ]
}
Standard JSON does not allow comments (//). The annotations above are for illustration only — remove them if you copy this block into a real preset file.

Field Reference

FieldTypeDescription
default_modelstringCheckpoint filename (must be in path_checkpoints)
default_refinerstringRefiner checkpoint filename, or "None"
default_refiner_switchfloat 0–1Fraction of total steps at which to swap to refiner
default_vaestringVAE filename, or "Default (model)" to use the checkpoint’s built-in VAE
previous_default_modelslist of stringsOrdered fallback list used when default_model is not found
FieldTypeDescription
default_loraslistEach element is [enabled (bool), filename (str), weight (float)]
default_loras_min_weightfloatMinimum LoRA weight the UI slider allows
default_loras_max_weightfloatMaximum LoRA weight the UI slider allows
default_max_lora_numberintNumber of LoRA rows shown in the UI
FieldTypeDescription
default_cfg_scalefloatGuidance scale (CFG)
default_sample_sharpnessfloatSAG sharpness enhancement weight
default_samplerstringSampler key (e.g. "dpmpp_2m_sde_gpu")
default_schedulerstringNoise scheduler (e.g. "karras")
default_performancestring"Quality", "Speed", "Extreme Speed", "Lightning", or "Hyper-SD"
default_overwrite_stepintOverride step count; -1 follows the performance mode
default_overwrite_switchintOverride refiner switch step; -1 follows preset
default_aspect_ratiostringResolution as "width*height"
default_image_numberintNumber of images per generation run
FieldTypeDescription
default_promptstringPre-filled positive prompt
default_prompt_negativestringPre-filled negative prompt
default_styleslist of stringsActive style names loaded at startup
FieldTypeDescription
checkpoint_downloadsobject{ "filename": "url", … } — downloaded if file is missing
lora_downloadsobject{ "filename": "url", … }
embeddings_downloadsobject{ "filename": "url", … }
vae_downloadsobject{ "filename": "url", … }

Creating a Custom Preset

1

Create the JSON file

Create a new file in the presets/ directory. The file name (without .json) becomes the preset name.
# Example
touch presets/mypreset.json
2

Define your configuration

Add the keys you want to override. You only need to include the fields you are changing — anything omitted falls back to config.txt defaults.
{
    "default_model": "dreamshaper_xl_v2.safetensors",
    "default_performance": "Speed",
    "default_cfg_scale": 5.0,
    "default_sampler": "dpmpp_2m_sde_gpu",
    "default_scheduler": "karras",
    "default_styles": ["Fooocus V2", "Fooocus Cinematic"],
    "default_aspect_ratio": "1024*1024",
    "checkpoint_downloads": {
        "dreamshaper_xl_v2.safetensors": "https://huggingface.co/your-repo/resolve/main/dreamshaper_xl_v2.safetensors"
    },
    "lora_downloads": {},
    "embeddings_downloads": {}
}
3

Launch with your preset

Pass --preset mypreset on the command line:
python entry_with_update.py --preset mypreset
Or select it from the Preset dropdown in the browser UI without restarting.
To quickly build a preset from an existing configuration, set REWRITE_PRESET = True in modules/config.py, launch Fooocus with --preset yourpreset, and the current live config will be serialized to presets/yourpreset.json automatically. Remember to set REWRITE_PRESET back to False afterwards.

Build docs developers (and LLMs) love