invoke-ai/InvokeAI · error · ValueError
No source for Wan T5 encoder. Either set 'Wan T5 Encoder' to
Error message
No source for Wan T5 encoder. Either set 'Wan T5 Encoder' to a standalone UMT5-XXL encoder, or set 'Component Source' to a Diffusers Wan main model.
What it means
The loader resolves the Wan tokenizer and text encoder from, in order: the standalone 'Wan T5 Encoder' override, the main model if Diffusers, or the 'Component Source'. If all three are unavailable (non-Diffusers main model, no T5 override, no component source), invoke() raises this ValueError because text encoding is impossible.
Source
Thrown at invokeai/app/invocations/wan_model_loader.py:293
"or set 'Component Source' to a Diffusers Wan main model."
)
# Tokenizer + text encoder: standalone override > main (if Diffusers) > component source.
if self.wan_t5_encoder_model is not None:
t5_config = context.models.get_config(self.wan_t5_encoder_model)
if t5_config.type != ModelType.WanT5Encoder or t5_config.format != ModelFormat.WanT5Encoder:
raise ValueError("The Wan T5 Encoder must resolve to a standalone Wan T5 encoder model.")
tokenizer = self.wan_t5_encoder_model.model_copy(update={"submodel_type": SubModelType.Tokenizer})
text_encoder = self.wan_t5_encoder_model.model_copy(update={"submodel_type": SubModelType.TextEncoder})
elif main_is_diffusers:
tokenizer = self.model.model_copy(update={"submodel_type": SubModelType.Tokenizer})
text_encoder = self.model.model_copy(update={"submodel_type": SubModelType.TextEncoder})
elif self.component_source is not None:
self._validate_component_source_format(context, self.component_source)
tokenizer = self.component_source.model_copy(update={"submodel_type": SubModelType.Tokenizer})
text_encoder = self.component_source.model_copy(update={"submodel_type": SubModelType.TextEncoder})
else:
raise ValueError(
"No source for Wan T5 encoder. "
"Either set 'Wan T5 Encoder' to a standalone UMT5-XXL encoder, "
"or set 'Component Source' to a Diffusers Wan main model."
)
return WanModelLoaderOutput(
transformer=WanTransformerField(
transformer=transformer,
transformer_low_noise=transformer_low_noise,
boundary_ratio=boundary_ratio,
),
wan_t5_encoder=WanT5EncoderField(tokenizer=tokenizer, text_encoder=text_encoder),
vae=VAEField(vae=vae),
)
@staticmethod
def _validate_main_config(config: object, label: str) -> None:
if getattr(config, "base", None) != BaseModelType.Wan or getattr(config, "type", None) != ModelType.Main:View on GitHub (pinned to 0b6a024f2f)
Solutions
- Set 'Wan T5 Encoder' to a standalone UMT5-XXL encoder model
- Set 'Component Source' to a Diffusers Wan main model to source tokenizer and text encoder
- Switch the main model to a Diffusers folder containing the text-encoder components
- Install/scan the UMT5-XXL encoder into the Model Manager if it is missing
Example fix
// before WanModelLoaderInvocation(model=gguf_model) // after WanModelLoaderInvocation(model=gguf_model, wan_t5_encoder_model=ModelIdentifierField(key='umt5-xxl', submodel_type=SubModelType.TextEncoder))
Defensive patterns
Strategy: validation
Validate before calling
cfg = context.models.get_config(invocation.model)
non_diffusers = cfg.format != ModelFormat.Diffusers
if non_diffusers and invocation.wan_t5_encoder_model is None and invocation.component_source is None:
raise ValueError('Need a Wan T5 Encoder or Diffusers Component Source for tokenizer/text-encoder') Type guard
def has_text_encoder_source(inv) -> bool:
cfg = get_config(inv.model)
return cfg.format == ModelFormat.Diffusers or inv.wan_t5_encoder_model is not None or inv.component_source is not None Try / catch
try:
output = invocation.invoke(context)
except ValueError as e:
if 'No source for Wan T5 encoder' in str(e):
invocation.wan_t5_encoder_model = install_or_pick_umt5_xxl() Prevention
- Install the UMT5-XXL encoder once and reference it whenever using GGUF/checkpoint Wan transformers
- Check that workflows include a T5 encoder source when the main model is single-file
- Prefer Diffusers folders so text-encoder components come bundled
When it happens
Trigger: invoke() with a GGUF or single-file checkpoint main model, wan_t5_encoder_model unset, and component_source unset.
Common situations: Using a GGUF Wan transformer with no standalone UMT5-XXL encoder installed; a workflow copied from someone else missing the T5 encoder field; forgetting that single-file checkpoints don't include tokenizer/text-encoder components.
Related errors
- No source for VAE. Either set 'VAE' to a standalone Wan VAE,
- The Wan T5 Encoder must resolve to a standalone Wan T5 encod
- Unknown model: {key}
- The selected FLUX model does not ship its own {', '.join(mis
- The same model is wired to both 'Transformer' and 'Transform
AI-assisted analysis of invoke-ai/InvokeAI@0b6a024f2f (2026-08-29).
Data as JSON: /api/errors/56a2bfa960dcfa9d.
Report an issue: GitHub.