// deploy · devops-pain

LoRA Not Loading in ComfyUI Flux (Fix)

LoRA has no effect in ComfyUI Flux? Six causes: wrong folder, SDXL LoRA, strength value, CLIP mismatch, stale cache, corrupt file. Fix checklist included.

Published 2026-05-18lora not loading comfyuicomfyui lora flux not workingflux lora no effect

A LoRA that has no effect is harder to diagnose than one that crashes ComfyUI - the generation completes without error, but the LoRA simply does not do anything. This guide covers the six most common causes, a compatibility table for Flux LoRA types, and a fix checklist to work through systematically.

How ComfyUI Loads LoRAs

ComfyUI loads LoRA files using the LoraLoader node, which patches the model weights in memory before sampling begins. If the LoRA is not compatible with the loaded model, the patch either fails silently (no effect) or causes an error. The silent failure case is more common and harder to debug because the generation succeeds but ignores the LoRA entirely.

Flux LoRAs must be trained specifically for Flux. A LoRA trained on SDXL, SD 1.5, or SD 2.1 is architecturally incompatible with Flux - the weight shapes do not match. Attempting to load it will either produce no effect or cause a shape mismatch error.

LoRA compatibility matrix for Flux - May 2026
LoRA typeFlux DevFlux SchnellFlux ProNotes
Flux native LoRAYesYesNo (API only)Trained on Flux architecture
SDXL LoRANoNoNoDifferent architecture, silent fail
SD 1.5 LoRANoNoNoDifferent architecture, silent fail
DoRA (Flux)YesYesNoEnhanced LoRA, same compatibility
LoRA-XL (SDXL)NoNoNoSDXL-specific format

Fix 1: Verify LoRA Location

The LoRA file must be in the correct subdirectory for ComfyUI to find it. ComfyUI scans specific directories for each model type. If the file is in the wrong location, it will not appear in the LoRA dropdown or will throw a "model not found" error.

$check-lora-path.sh
# Correct location for LoRA files
ComfyUI/models/loras/your-lora.safetensors

# Not in subdirectories by default (unless you configure extra paths)
# Wrong: ComfyUI/models/loras/flux/your-lora.safetensors
# Wrong: ComfyUI/models/checkpoints/your-lora.safetensors

# Verify your LoRA is in the right place
ls ComfyUI/models/loras/

# If you want subdirectories, add them to extra_model_paths.yaml
cat ComfyUI/extra_model_paths.yaml

If you use subdirectories and ComfyUI is not finding them, add the path to extra_model_paths.yaml:

$extra_model_paths.yaml
comfyui:
  loras: |
    ComfyUI/models/loras/
    /path/to/additional/loras/
0.3 - 0.8
Recommended LoRA strength range for Flux native LoRAs - values above 1.0 often cause distortion
workflow/lab, May 2026

Fix 2: Confirm the LoRA Was Trained for Flux

The most common cause of a LoRA having no effect: it was trained on a different base model. Verify the LoRA architecture before loading it.

$identify-lora.sh
# Check which base model a LoRA was trained on
python3 -c "
from safetensors import safe_open
import sys

with safe_open(sys.argv[1], framework='pt') as f:
    keys = list(f.keys())
    print('Total keys:', len(keys))
    # Flux LoRAs contain transformer_blocks keys
    # SDXL LoRAs contain unet keys
    # SD1.5 LoRAs contain model.diffusion_model keys
    flux_keys = [k for k in keys if 'transformer_blocks' in k or 'double_stream' in k]
    sdxl_keys = [k for k in keys if 'input_blocks' in k or 'unet' in k.lower()]
    print('Flux-style keys:', len(flux_keys))
    print('SDXL-style keys:', len(sdxl_keys))
    if flux_keys:
        print('Likely: Flux LoRA')
    elif sdxl_keys:
        print('Likely: SDXL LoRA (not compatible with Flux)')
    else:
        print('Unknown architecture - check first 5 keys:')
        for k in keys[:5]:
            print(' ', k)
" ComfyUI/models/loras/your-lora.safetensors

Fix 3: Set Correct LoRA Strength

Flux LoRAs typically work at lower strength values than SD 1.5 or SDXL LoRAs. Setting strength too high (above 1.0) with a Flux LoRA often produces distortion, burnt-out images, or complete garbage output. Setting it too low (below 0.1) produces no visible effect.

Recommended starting values for Flux LoRAs:

  • Style LoRAs (artistic style transfer): start at 0.6, adjust between 0.3-0.9
  • Character LoRAs (face/person likeness): start at 0.7, adjust between 0.4-1.0
  • Concept LoRAs (objects, textures): start at 0.5, adjust between 0.2-0.8
  • FLUX-specific trigger LoRAs: check the model card, some work at 1.0 exclusively

The LoraLoader node in ComfyUI has two strength sliders: model strength and clip strength. For Flux, set both to the same value. Some guides suggest setting clip strength to 0 or 1 independent of model strength - for Flux, this produces inconsistent results. Keep them matched unless the LoRA documentation specifies otherwise.

Fix 4: Use the Correct CLIP Model

Flux uses a dual CLIP encoder (CLIP-L and T5-XXL). If you load a LoRA trained with T5-XXL but your workflow only uses CLIP-L (because you used a DualCLIPLoader with the wrong configuration), text conditioning from the LoRA trigger words will not work even if the visual style is applied.

$correct-clip-config.json
{
  "dual_clip_loader": {
    "class_type": "DualCLIPLoader",
    "inputs": {
      "clip_name1": "clip_l.safetensors",
      "clip_name2": "t5xxl_fp16.safetensors",
      "type": "flux"
    }
  }
}

The type field must be "flux" - using "sdxl" or "sd3" will load the models but wire them in the wrong order, causing CLIP conditioning to be ignored or misapplied. This is a silent failure: the workflow completes but the text encoder is not contributing correctly to the conditioning.

Fix 5: Clear Stale Cache

ComfyUI caches loaded models in VRAM to speed up sequential generations. If you swapped a LoRA file on disk without restarting ComfyUI, the old version may still be cached in memory. The new file on disk is not used until the cache is cleared.

To clear the model cache without restarting: in ComfyUI Manager, click "Free Model Memory" (this clears the VRAM cache without a full restart). Alternatively, restart ComfyUI completely - the model cache is always cleared on startup.

$clear-cache.sh
# If ComfyUI Manager is available:
# Manager -> "Free Model Memory" button clears the cache

# Or restart ComfyUI:
# Stop the process (CTRL+C), then:
python main.py --listen

Fix 6: Verify the LoRA File Is Not Corrupt

A corrupt LoRA file may load without error but apply incorrect or empty weight patches, resulting in no effect. Verify the file integrity before assuming the issue is configuration.

$verify-lora.sh
# Quick integrity check
python3 -c "
from safetensors import safe_open
import sys
try:
    with safe_open(sys.argv[1], framework='pt') as f:
        keys = list(f.keys())
        # Try actually reading a tensor (not just metadata)
        first_key = keys[0]
        tensor = f.get_tensor(first_key)
        print(f'OK: {len(keys)} keys, first tensor shape: {tensor.shape}')
except Exception as e:
    print(f'CORRUPT: {e}')
" ComfyUI/models/loras/your-lora.safetensors

Correct Workflow Structure for Flux + LoRA

The LoraLoader node must be placed between the checkpoint loader and the conditioning nodes, not after the sampler. A common mistake is connecting the LoRA to the wrong input or output port.

$flux-lora-workflow.json
{
  "checkpoint_loader": {
    "class_type": "CheckpointLoaderSimple",
    "inputs": { "ckpt_name": "flux1-dev-fp8.safetensors" }
  },
  "lora_loader": {
    "class_type": "LoraLoader",
    "inputs": {
      "model": ["checkpoint_loader", 0],
      "clip": ["checkpoint_loader", 1],
      "lora_name": "your-flux-lora.safetensors",
      "strength_model": 0.7,
      "strength_clip": 0.7
    }
  },
  "clip_encode": {
    "class_type": "CLIPTextEncode",
    "inputs": {
      "clip": ["lora_loader", 1],
      "text": "your trigger word, your prompt"
    }
  },
  "ksampler": {
    "class_type": "KSampler",
    "inputs": {
      "model": ["lora_loader", 0]
    }
  }
}

Note that the model output from LoraLoader (index 0) goes to KSampler, and the clip output (index 1) goes to CLIPTextEncode. Both outputs must be used. If you only connect the model output and use the original CLIP from the checkpoint loader, the LoRA trigger words in your prompt will have no effect.

Frequently Asked Questions

How do I know if a LoRA is designed for Flux or for SDXL?

Check the model card on Hugging Face or Civitai - the base model is always listed. If no documentation is available, inspect the file: Flux LoRAs contain keys with "transformer_blocks", "double_stream_blocks", or "single_stream_blocks". SDXL LoRAs contain keys with "input_blocks", "output_blocks", or "middle_block". The Python script in Fix 2 automates this check.

Can I use multiple LoRAs at the same time with Flux?

Yes. Chain multiple LoraLoader nodes: connect the model output of the first to the model input of the second, and the clip output of the first to the clip input of the second. Each LoRA is applied sequentially. With multiple LoRAs, reduce individual strength values - if each LoRA is at 0.7, the combined effect may produce oversaturation or distortion. Start with 0.4-0.5 per LoRA when stacking two or more.

My LoRA works in AUTOMATIC1111 but not in ComfyUI. Why?

AUTOMATIC1111 automatically detects the LoRA base model and applies compatibility handling. ComfyUI does not - it attempts to apply the LoRA directly. If your A1111 installation has a Flux model AND an SDXL model, A1111 may be silently applying the LoRA to the correct model. In ComfyUI, you must explicitly ensure the LoRA matches the loaded checkpoint. Also check that A1111 is actually loading the LoRA and not falling back to the base model.

What does "model strength" vs "clip strength" do in LoraLoader?

Model strength controls how much the LoRA modifies the image generation (the UNet/transformer weights). Clip strength controls how much the LoRA modifies the text encoder weights - affecting how trigger words and descriptive terms are interpreted. For most Flux LoRAs, keeping both values the same is recommended. Some concept LoRAs work better with clip strength at 0 (visual-only modification with no text conditioning change).

I can see the LoRA in the dropdown but the generation ignores it entirely. What is wrong?

The LoRA is found but not applied effectively. Most likely cause: the LoRA was trained on a different base model (SDXL LoRA on Flux dev). Silent failure is common when the key names do not match - ComfyUI applies zero weight patches without error. Second most likely: the workflow is not connecting both the model AND clip outputs from LoraLoader to the downstream nodes. Check your node connections carefully.

Does LoRA strength above 1.0 ever produce better results?

Occasionally, some style LoRAs respond well to 1.0-1.2 strength. Above 1.2 almost always produces burnt-out colors, distortion, or complete garbage. Start at 0.7, increment by 0.1, and stop if you see artifacts. A well-trained LoRA achieves strong effect at 0.6-0.8 - if you need to push above 1.0 to see any effect, the LoRA is likely not compatible with your model.

The LoRA file is 4 GB. That seems large - is it correct?

Most LoRAs are 50 MB to 500 MB. A 4 GB file is almost certainly a full model or DreamBooth fine-tune, not a LoRA. These files can be loaded via LoraLoader in some cases but are not true LoRAs - they replace model weights rather than patching them additively. True LoRAs store only low-rank matrices representing the difference from the base model, which is why they are small.

Can I use a LoRA trained on Flux dev with Flux schnell?

Generally yes - Flux dev and schnell share the same transformer architecture. LoRAs trained on dev typically work on schnell with some quality variation. The reverse (schnell LoRA on dev) also works. The key difference is that schnell is a distilled model: at schnell-appropriate settings (4 steps, no guidance), the LoRA effect may be stronger or weaker than expected. Test at 0.5-0.7 strength initially.