# Model Format Support

InvokeAI recognizes a model's format from the file itself, so you install every build the same way. This page
lists which formats load for which model. What each format is, and how it behaves in memory, is explained under
[Quantized formats](/users-guide/models/model-families/#quantized-formats). Sizes, starter models and measured
speeds are on each family's own page.

**Legend:**

- ✓ loads
- **L** installs, but loading it for generation fails with a message naming the reason
- **R** the install fails with a message naming the reason
- ✗ not supported
- – no such build exists

How an unsupported file fails depends on the file. Some are not recognized at all and install as an unknown model,
with the reason only in the server log: the Diffusers layout of LTX-2, the GGUF builds of MiniMax H3, and llama.cpp
GGUFs of Mistral Small 3's shape that declare scaled RoPE or an attention temperature, such as Devstral Small 2.
Others are recognized by their layer names and fail, or misbehave, only when they load.

Any GGUF, of any model, is refused at install with a message in two cases. A multi-part GGUF (llama.cpp's
`...-00001-of-00003.gguf` files) has to be joined into one file first with llama.cpp's
`llama-gguf-split --merge`, since no part loads alone. A GGUF whose header cannot be read is refused with the
reader's error; if the file is incomplete or corrupt, download it again.

## Main models

| Family | Diffusers | Single file (bf16) | fp8 scaled | int8 | int4 | nvfp4 | MXFP8 | GGUF | SDNQ | NF4 |
|---|---|---|---|---|---|---|---|---|---|---|
| [SD 1.x / 2.x](/users-guide/models/local-models/stable-diffusion-1-2/), [SDXL](/users-guide/models/local-models/sdxl/) | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | R | ✗ | ✗ |
| [SD 3](/users-guide/models/local-models/sd-3/) | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
| [FLUX.1](/users-guide/models/local-models/flux-1/) | ✓ | ✓ | ✓ | ✓ | L | ✗ | ✓ | ✓ | ✓ | ✓ |
| [FLUX.2](/users-guide/models/local-models/flux-2/) | ✓ | ✓ | ✓ | ✓ | L | ✗ | ✓ | ✓ | ✓ | inside the Diffusers folder (FLUX.2 [dev]) |
| [FLUX.3](/users-guide/models/local-models/flux-3/) | ✓ | ✓ | ✓ | ✓ | R | ✓ | – | ✓ | – | – |
| [CogView4](/users-guide/models/local-models/cogview4/) | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
| [Z-Image](/users-guide/models/local-models/z-image/) | ✓ | ✓ | ✓ | ✓ | L | ✓ | ✓ | ✓ | ✓ | ✗ |
| [Qwen-Image](/users-guide/models/local-models/qwen-image/) | ✓ | ✓ | ✓ | ✓ | R | ✓ | ✓ | ✓ | ✗ | ✗ |
| [Qwen-Image-2.1](/users-guide/models/local-models/qwen-image-2-1/) | ✓ | ✓ | ✓ | ✓ | R | R | – | ✓ | ✗ | ✗ |
| [Anima](/users-guide/models/local-models/anima/) | – | ✓ | ✓ | ✓ | L | ✗ | ✓ | ✓ | ✗ | ✗ |
| [Krea-2](/users-guide/models/local-models/krea-2/) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ |
| [Ideogram 4](/users-guide/models/local-models/ideogram4/) | ✓ | ✓ | ✓ | ✓ | R | R | ✓ | ✓ | ✗ | inside the Diffusers folder |
| [ERNIE-Image](/users-guide/models/local-models/ernie-image/) | ✓ | ✓ | L | L | L | L | ✗ | ✓ | ✗ | ✗ |
| [MOSS-Image](/users-guide/models/local-models/moss-image/) | ✓ | ✓ | R | ✓ | R | R | R | ✓ | ✗ | ✗ |
| [Wan 2.2](/users-guide/video-generation/wan-22/) | ✓ | ✓ | ✓ | ✓ | R | L | L | ✓ | ✗ | ✗ |
| [LTX-2](/users-guide/video-generation/ltx-2/) (2.5 only) | official layout ✓, Diffusers layout ✗ | ✓ | L | ✓ | L | ✓ | ✗ | ✓ | ✗ | ✗ |
| [MiniMax H3](/users-guide/video-generation/minimax-h3/) | ✓ | ✓ | L | ✓ | L | L | ✗ | ✗ | ✗ | ✗ |

- **int8** means ComfyUI's `int8_convrot` (`int8_tensorwise`) builds; on NVIDIA GPUs, [int8 Compute](/configuration/optimization/int8-compute/)
  runs them on the int8 tensor cores. **int4** means their packed 4-bit counterparts, `convrot_w4a4` and
  `int4_tensorwise`, which most builds mix with int8 layers. **nvfp4** and **fp8 scaled** mean ComfyUI's checkpoint
  layouts; other exports of the same schemes (AWQ, ModelOpt) fail when the model loads. FLUX.3 also loads Black Forest
  Labs' own builds: the nvfp4 export in NVIDIA ModelOpt's layout and `fp8r` (fp8 with one scale per row). It refuses
  AWQ and other producers' nvfp4 at install. For Qwen-Image-2.1 and FLUX.3, torchao exports such as unsloth's FP8
  builds are refused at install. MOSS-Image loads Comfy-Org's int8 build and GGUFs; its fp8, nvfp4 and w4a8
  transformers, and unsloth's torchao builds, are refused at install, unscaled fp8 included. ComfyUI's other low-bit
  layouts (`w4a8`, `w6a8`, SVDQuant) are not supported; Krea-2,
  Qwen-Image and Wan 2.2 refuse them at install.
- **GGUF** covers the llama.cpp types (Q4_0 through Q8_0, the K-quants, BF16). ComfyUI-GGUF's `Q8_CR` (int8) and
  `Q4_CR` (int4) files load for Krea-2 only; for every other model with GGUF support the install fails, as it does
  for `Q4_CR` files of ComfyUI-GGUF's retired W4A16 kind.
- LTX-2.0/2.3 files, GGUF builds included, fail to install with a message. Wan 2.1, Wan Animate, S2V, Fun-Control
  and VACE single files and GGUFs are not recognized as Wan 2.2 and install as unknown models; a Wan 2.1 Diffusers
  folder is not detected and is not supported either.

## Text encoders

| Encoder | Used by | Folder | Single file (bf16) | fp8 scaled | int8 | nvfp4 | GGUF | SDNQ |
|---|---|---|---|---|---|---|---|---|
| T5-XXL | FLUX.1, SD 3 | ✓ | ✓ | ✓ | R | R | ✓ | ✓ (and bitsandbytes int8) |
| CLIP-L / CLIP-G | SD, SDXL, FLUX.1, SD 3 | ✓ | ✓ | R | R | – | ✗ | CLIP-L inside a FLUX.1 SDNQ pipeline |
| Qwen3 0.6B / 4B / 8B | Z-Image (4B), FLUX.2 Klein (4B, 8B), Anima (0.6B) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Qwen3-VL 4B / 8B | Krea-2, FLUX.3, Ideogram 4, Qwen-Image-2.1 (8B) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ |
| Qwen3-VL 32B (truncated) | MiniMax H3 | in the Diffusers folder | ✓ | L | ✓ | L | ✗ | ✗ |
| Qwen3.5 4B | Anima 3.8B | ✗ | ✓ | R | – | R | ✗ | ✗ |
| Qwen3.5 9B | MOSS-Image | in the Diffusers folder | ✓ | R | ✓ | R | ✗ | ✗ |
| Qwen2.5-VL | Qwen-Image | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ (text only) | ✗ |
| Mistral Small 3 | FLUX.2 dev | ✓ | ✓ | ✓ | L | ✓ | ✓ | ✗ |
| Ministral 3B | ERNIE-Image | ✓ | ✓ | ✓ | L | L | R | ✗ |
| Gemma-2 2B | PiD decoders | ✓ | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ |
| Gemma-4 12B | LTX-2 | ✓ (bf16 or int8) | ✗ | L | in the folder | L | ✓ (LTX-2.5 conversions) | ✗ |
| UMT5 | Wan 2.2 | ✓ | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ |

The single-file T5-XXL builds are ComfyUI's `t5xxl_fp16`, `t5xxl_fp8_e4m3fn` and `t5xxl_fp8_e4m3fn_scaled`. The
fp8 builds keep their weights in fp8 on a GPU that can hold them, about 4.9 GB instead of about 9.5 GB. Prefer
`t5xxl_fp8_e4m3fn_scaled` over `t5xxl_fp8_e4m3fn`: the unscaled build stores every tensor in fp8, its layer norms
included, and its prompt embeddings stray measurably further from the full-precision encoder. Wan's UMT5 file looks
similar but is not a T5-XXL and is not recognized as one. A single-file T5 run on the CPU is held in float32 (about 19 GB of RAM for
T5-XXL).

The single-file CLIP builds are ComfyUI's `clip_l` and `clip_g`, as used by FLUX.1 and SD 3. SD and SDXL take their
CLIP encoders from the main model only, so a separate CLIP file does not change them. A CLIP-G file needs its
`text_projection` for SD 3 and is refused without it, as are extended-context CLIP-L variants such as Long-CLIP.
FLUX.1 takes CLIP-L only.

The Qwen3-VL and Qwen2.5-VL GGUF encoders are the language model only. The Qwen3-VL `mmproj` vision file installs
as its own **Qwen3-VL Vision Tower** model, which Qwen-Image-2.1 edits read reference images through; a Qwen2.5-VL
`mmproj` file is refused. Without the vision tower, Qwen-Image Edit cannot read reference images with the Qwen2.5-VL GGUF encoder and says so
before generating. A Qwen2-VL GGUF, the previous generation under the same llama.cpp architecture name, is refused.
Qwen3-VL nvfp4 single files keep their layers packed: ComfyUI's `qwen3vl_8b_nvfp4`, and repacks that name their nvfp4
layers the same way, in `.comfy_quant` markers or the `_quantization_metadata` header. A repack that packs its vision
tower the same way keeps it packed when Krea-2 edit loads it for reference images. A single file with nvfp4 layers named
neither way, with AWQ layers, or with packed weights missing nvfp4's per-tensor `weight_scale_2` fails to install with a
message; if only its vision tower has such layers, it installs and fails with a message when Krea-2 edit loads the tower
for reference images. Quantized encoder folders (AWQ, ModelOpt, llm-compressor) are not covered by this. The Gemma-4
encoder installs as a folder (its `config.json` and tokenizer files next to exactly one weight file, bf16 or int8) or as
a GGUF conversion of the LTX-2.5 encoder that packs its tokenizer and config in, such as elix3r's or Rootport's.
Google's stock Gemma-4-12B GGUF fails to install with a message, since LTX-2 needs the Lightricks-tuned weights; its
`mmproj` file is not recognized. A standalone `.safetensors` file is not recognized.

The Qwen3.5 4B and 9B install as the same encoder type but are not interchangeable: Anima-3.8B takes only
the 4B and MOSS-Image only the 9B, and each refuses the other. A 9B file must hold the whole language model:
of a sharded export, the first shard is refused at install with a message and the others install as unknown
models. Install the whole MOSS-Image Diffusers folder or a merged single file instead.

The Qwen3.5 9B encoder also installs in ComfyUI's `int8_convrot` build. It keeps its quantized layers in int8 and
widens the embedding when it loads; the vision tower, LM head and multi-token-prediction head in the file are not read.
The files in Comfy-Org's MOSS-Image repository (`text_encoders/`) have the same tensors as the FLUX.3 prompt
upsampler, so nothing in the file tells the two apart; InvokeAI goes by where the file came from. Installing it from
that repository by URL, or with the **Qwen3.5 9B Encoder (int8)** starter model, gives a Qwen3.5 encoder, and
Reidentify repairs an older Text LLM record made from that URL. A local copy of the file installs as a
[Text LLM](#text-llms), so use the starter or the URL. A model already installed as a Qwen3.5 encoder stays one when
it is reidentified. w4a8, fp8 scaled, nvfp4 and mxfp8 builds are refused at install with a message. No int8 build
of the 4B exists to test against.

## Text LLMs

Text LLMs rewrite prompts in [Expand Prompt](/users-guide/image-generation/prompt-tools/#expand-prompt) and run the
Text LLM workflow nodes.

| Model | Folder | Single file (bf16) | int8 | GGUF | Other quantizations |
|---|---|---|---|---|---|
| Causal language models (`…ForCausalLM`), Gemma-4 | ✓ | ✗ | ✗ | ✗ | ✗ |
| Qwen3.5 vision-language models, such as the [FLUX.3 prompt upsampler](/users-guide/models/local-models/flux-3/#prompt-upsampler-model) | ✓ | ✓ (9B) | ✓ (9B) | ✗ | R (w4a8, fp8 scaled, nvfp4, mxfp8) |

A folder is a Hugging Face model folder with its tokenizer files; quantized folders (bitsandbytes, GPTQ, AWQ) are not
supported. Gemma-4 and Qwen3.5 folders also read an image when the folder carries its processor files. A single file
installs as a Text LLM when it is a whole 9B Qwen3.5 vision-language model, with its vision tower and LM head:
ComfyUI's exports of the FLUX.3 prompt upsampler (bf16 or `int8_convrot`), or the release's own `model.safetensors`.
InvokeAI supplies the config, tokenizer and processor itself. Such a file in w4a8, fp8 scaled, nvfp4 or mxfp8 is
refused at install with a message, and a GGUF of it is not recognized. The same layout at the 4B's width installs as a
Qwen3.5 encoder, and other widths are not identified.

## VAEs

| VAE | Single file | Diffusers | Used by |
|---|---|---|---|
| SD 1.x, SDXL, SD 3, FLUX.1, FLUX.2 | ✓ | ✓ | its own family; FLUX.1's also by Z-Image, FLUX.2's also by FLUX.3, Ideogram 4, ERNIE-Image and MOSS-Image |
| SD 2.x | ✓ | ✗ | SD 2.x |
| Wan (16 and 48 channels) | ✓ | ✓ | Wan 2.2; the Wan 2.1 VAE also by Anima |
| Qwen-Image | ✓ | ✗ | Qwen-Image, Krea-2 |
| Qwen-Image-2.1 | ✓ | ✓ | Qwen-Image-2.1 |
| CogView4, LTX-2, MiniMax H3 | – | bundled | taken from the model's own folder |

A standalone single-file LTX-2 or MiniMax H3 VAE, video or audio, is not identified and stays Unknown.

Quantized VAE files (fp8, int8, nvfp4) are not supported; use the unquantized VAE. The SD 3, FLUX.2, Qwen-Image,
Qwen-Image-2.1, Wan, Anima and Ideogram 4 VAEs fail with a message when they load. The FLUX.1 and SD 1.x / SDXL single-file VAEs do
not check, so a quantized file there fails with an unclear error or decodes incorrectly.

## Preview decoders (Tiny AutoEncoders)

Tiny AutoEncoders render [live denoising previews](/users-guide/image-generation/advanced-topics/tiny-autoencoder-previews/)
and nothing else. Each one is a single file, a `.safetensors`, `.pth` or `.pt`.

| Tiny AutoEncoder | File | Installs under | Previews for |
|---|---|---|---|
| TAESD | `taesd_decoder.safetensors` | SD 1.x | SD 1.x, SD 2.x |
| TAESDXL | `taesdxl_decoder.safetensors` | SDXL | SDXL, SDXL Refiner |
| TAESD3 | `diffusion_pytorch_model.safetensors` from `madebyollin/taesd3` | SD 3 | SD 3 |
| TAEF1 | `diffusion_pytorch_model.safetensors` from `madebyollin/taef1` | FLUX.1 | FLUX.1, Z-Image |
| TAEF2 | `taef2.safetensors` | FLUX.2 | FLUX.2, FLUX.3, ERNIE-Image, Ideogram 4, MOSS-Image |
| TAEQI2.1 | `taeqi2_1.safetensors` | Qwen-Image-2.1 | Qwen-Image-2.1 |
| TAEW2.1 | `taew2_1.safetensors` | Wan 2.2 | Wan 2.2 A14B, Qwen-Image, Krea-2, Anima |
| TAEW2.2 | `taew2_2.safetensors` | Wan 2.2 | Wan 2.2 TI2V-5B |
| TAELTX2.3 | `taeltx2_3.safetensors` | LTX-2 | LTX-2.5 |

The image TAEs (TAESD) load in both published layouts: the decoder-only files (the `*_decoder.safetensors` files
above, and the `*_decoder.pth` files ComfyUI keeps in `models/vae_approx/`) and the files that hold encoder and
decoder together (`diffusion_pytorch_model.safetensors`, `taef2.safetensors`, `taeqi2_1.safetensors`). The video
TAEs (TAEHV: TAEW2.1, TAEW2.2, TAELTX2.3) load as published in madebyollin's `taehv` repository, one file with
encoder and decoder.

Some networks are not specific to one model. TAESD and TAESDXL read the same 4-channel latents with the same
network, and so do TAESD3 and TAEF1 with 16 channels. TAEW2.1's network is also published as `taehv`
(HunyuanVideo) and `taecvx` (CogVideoX), and TAELTX2.3's as `taeltx_2` (LTX-2). For these six the file name, its
folder name or the download source has to name the TAE (`taesd`, `taesdxl`, `taesd3`, `taef1`, `taew2_1` or
`taeltx2_3`); a file that names none of them is refused (**R**). An install that sets the base explicitly, as the
starter models do, needs no name. TAEF2, TAEQI2.1 and TAEW2.2 are recognized by their network alone.

- **R:** the "tinier" TAEQI2.1 (`taeqi2_1_tinier`); the message asks for `taeqi2_1.safetensors` instead.
- **R:** a file named `taeltx_2`, the TAE for LTX-2's VAE, even with an explicit base. It previews LTX-2.5 worse than
  the linear preview; the message asks for TAELTX2.3.
- **R:** a file named `taehv` or `taecvx`, even with an explicit base. They decode HunyuanVideo and CogVideoX
  latents, which InvokeAI does not run.
- **Not recognized:** other Tiny AutoEncoders, such as the 32× Sana decoder, `taeh3` (MiniMax H3 uses its own
  built-in preview decoder), `taehv1_5` and the "super" TAEHV decoders. They install as unknown models.
- A Diffusers `AutoencoderTiny` folder (for example the `madebyollin/taesdxl` repository as a whole) installs as a
  VAE and is not used for previews. Install the single file instead.

## LoRAs and adapters

| Family | LoRA | ControlNet | Other adapters |
|---|---|---|---|
| SD 1.x / 2.x | ✓ (LyCORIS, Diffusers) | ✓ | IP-Adapter, T2I-Adapter (SD 1.x), textual inversion |
| SDXL | ✓ (LyCORIS, Diffusers, OMI) | ✓ | IP-Adapter, T2I-Adapter, textual inversion |
| FLUX.1 | ✓ (LyCORIS, Diffusers, OMI) | ✓ | Control LoRA, IP-Adapter, Redux |
| FLUX.2, Z-Image | ✓ (LyCORIS, Diffusers) | FLUX.2 [dev] (single-file checkpoint), Z-Image | |
| Qwen-Image, Krea-2, Wan 2.2, Anima | ✓ (LyCORIS/kohya and Diffusers PEFT, including LoKR where noted on the family page) | Qwen-Image (single-file checkpoint: Fun and InstantX ControlNet Unions; InstantX Inpainting is refused), Anima (ControlNet-LLLite) | |
| Qwen-Image-2.1 | ✓ (ComfyUI, diffusers/PEFT and kohya, including LoKR, LoHA and DoRA as noted on the family page) | ✗ | |
| FLUX.3 | ✓ (diffusers/PEFT, ComfyUI and ai-toolkit files and Diffusers folders, including DoRA, and LoKR and LoHA under diffusers or BFL module names; LyCORIS's flattened `lycoris_…` names are not recognized, and PEFT LoKr/LoHa adapters with a diffusers header and distillation extracts are refused, as noted on the family page) | ✗ | |
| LTX-2, MiniMax H3 | ✓ (plain low-rank; LoKR, LoHA and DoRA are refused) | ✗ | |
| ERNIE-Image | ✓ (ai-toolkit/ComfyUI, diffusers/PEFT; LoKR and LoHA too, DoRA is refused) | ✗ | |
| SD 3 / 3.5 | ✓ (diffusers, PEFT, SimpleTuner LyCORIS, kohya; CLIP-L/G too; DoRA is refused) | ✗ | |
| Ideogram 4 | ✓ (ai-toolkit/ComfyUI, kohya and diffusers files and Diffusers folders, LoKR too; DoRA is refused, LoHA is not recognized) | ✗ | |
| CogView4, MOSS-Image | ✗ | ✗ | |

FLUX.1 and FLUX.2 also accept ComfyUI/OneTrainer PEFT LoRAs whose module names start with `diffusion_model.`.
Per-layer `.alpha` values in these `diffusion_model.` files set the LoRA scale.

For SD 1.x / 2.x and FLUX.2, LyCORIS LoKr files may store either Kronecker operand whole or as a
factorized `_a` / `_b` pair. FLUX.2 also accepts LoHA files in the same BFL and kohya layouts.

Plain Qwen-Image LoRAs also load in ComfyUI's `diffusion_model.` key layout and as raw PEFT adapters
(`base_model.model.`) when they train the blocks' modulation or MLP layers; see the
[family page](/users-guide/models/local-models/qwen-image/#lora).

Qwen-Image LoRAs also patch the Qwen2.5-VL encoder when the file has text-encoder layers; see the same page.

[PiD decoders](/users-guide/image-generation/advanced-topics/pid-decode/) load for FLUX.1, FLUX.2, SD 3, SDXL and
Qwen-Image (v1 and v1.5, bf16 and int8 builds). FLUX.3 and MOSS-Image use the FLUX.2 decoders.