Save Merged LoRA
Bake your merge into a normal .safetensors any loader can read
- lora_data
- file_path
Once LoRA Optimizer (or the AutoTuner, or the Inline Chain variant) has done its conflict-resolved merge, that result exists only inside the current graph run - recomputed every time you execute the workflow unless caching is on. Save Merged LoRA takes that internal merge and writes it out as a standalone .safetensors file, the same format any LoRA loader in ComfyUI, or any other UI, already understands. No more re-running the optimizer to get the same combined LoRA - load the file like you'd load any other LoRA.
That's the whole point of the node: portability. Once it's a .safetensors on disk, it's indistinguishable from a LoRA someone trained and uploaded - you can drop it into a totally different workflow, hand it to someone else, or use it in tooling that has no idea the optimizer even exists.
What it needs, and what you set
Connect the lora_data output from LoRA Optimizer (or WanVideo LoRA Optimizer, or the AutoTuner) - that's the required input, and it's the only thing that has to come from upstream. The rest are settings on the node itself:
save_folder- a dropdown of your configured LoRA directories, pulled from ComfyUI's own paths andextra_model_paths.yaml. Pick whichever one your other loaders actually scan.filename(defaultmerged_lora) - subdirectories are allowed (merged/my_style_mix), and.safetensorsgets appended automatically.save_rank(default 0 = auto) - at 0, the saved file uses the sum of your input LoRAs' ranks (three rank-32 LoRAs merge into a rank-96 file - the exact rank needed to represent the merge losslessly on linear operations). Set it to a specific number if you want to force compression down to a smaller file size; expect some quality loss the lower you go.bake_strength(default on) - with this enabled, the saved file reproduces your exact merge when loaded at strength 1.0, which is almost always what you want. Turn it off only if you specifically want to load the merged LoRA and dial its strength manually afterward.
Two optional metadata fields, prompt and description, get embedded in the file itself - handy if you're sharing the merge, since some UIs surface them automatically when someone loads it.
Output is a single file_path string confirming where it landed.
Installing it
Same pack, same steps as the rest of the LoRA Optimizer family. Through ComfyUI Manager: search "LoRA Optimizer," install, restart. Manually:
cd ComfyUI/custom_nodes/
git clone https://github.com/ethanfel/ComfyUI-LoRA-Optimizer.git
Restart ComfyUI. This node needs nothing beyond the base pack - no extra model downloads, no separate dependency.
Common issues & troubleshooting
You can't find the saved LoRA in a loader afterward. Double-check save_folder was actually a path your loaders scan - if you have a nonstandard layout via extra_model_paths.yaml, the dropdown lists what's configured, but it's easy to pick the wrong one if you have several.
The file is bigger than you expected. That's save_rank=0 doing exactly what it's documented to do - summing input ranks rather than compressing. If file size matters more than exactness, set save_rank explicitly to something at or below your largest input LoRA's own rank.
Loaded strength looks wrong. If you disabled bake_strength, the file doesn't carry your merge's strength - you're expected to set it yourself at load time. If you didn't touch that setting and it still looks off, that's more likely an issue with the merge itself (worth checking the optimizer's analysis_report) than with this node.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| lora_data | LORA_DATA | Connect the lora_data output from LoRA Optimizer here. | |
| save_folder | COMBO | Which loras folder to save into. Lists configured lora paths from ComfyUI and extra_model_paths.yaml. | |
| filename | STRING | merged_lora | Name for the saved file. Subdirectories are allowed (e.g. 'merged/my_lora'). Extension .safetensors is added automatically. |
| save_rank | INT | 00–2048 | 0 = auto: uses the sum of all input LoRA ranks (e.g. 3 rank-32 LoRAs → rank 96). Non-zero = compress all layers to exactly this rank via SVD. Use a non-zero value to reduce output file size — set it to match your largest input LoRA's rank or lower. Higher values = more accurate but larger file. |
| bake_strength | BOOLEAN | true | When enabled, the saved LoRA reproduces your exact merge when loaded at strength 1.0. When disabled, strengths are not baked in — you'll need to set the strength manually when loading. |
| promptopt | STRING | Example prompt or trigger words to embed in the file metadata. Useful for sharing — some UIs display this automatically. | |
| descriptionopt | STRING | Optional description or notes about this merged LoRA. Stored in file metadata. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| file_path | STRING | — |