Give Qwen Image 2.1 a picture of a person and a picture of an outfit, and it dresses the person in it. Plain Qwen 2.1 already does that, but the picture comes back a few pixels off, the face gets a little softer and the background gets touched. With this LoRA the swap happens on your picture's own frame: on 16 swaps it had never seen, the result sat 0.1 px from the original (3.6 px without it).
No trigger word. Load it at strength 1.0 (at 0.5 about half of the drift comes back: 1.8 px in the same test), give the person as image 1 and the outfit as image 2, and ask for the swap:
Dress the person in image 1 in the <outfit, in a few words> shown in image 2. Keep their face,
hair, hands, pose and the background exactly the same.
Also on Civitai: the LoRA page and the Outfit Swap workflow that has it set up. Videos on YouTube @ausbossdev.
Qwen Image 2.1 can do an outfit swap without this LoRA. This is what the LoRA changes, measured on 16 swaps it never trained on, same seed and request:
In the pictures below, yellow marks every pixel that differs from the original picture. Without the LoRA the face, the hair and the background light up. With it, only the clothes do.

Top row: the swap, same request and seed. Bottom row: the redrawn pixels in yellow. Neither this person nor this coat is in the training set.

The same comparison in the rain. This person is not in the training set.

This person is not in the training set either.

The LoRA never trained on a swap of this person, and this coat is not in the training set.
In these four, the result sat 4.8, 7.1, 5.2 and 7.2 px off without the LoRA, and 0.1, 0.0, 0.0 and 0.1 px off with it.
It does not draw the outfit better. Buttons, belts and patterns come out the way plain Qwen Image 2.1 draws them, with or without the LoRA. Sometimes plain Qwen copies more of the outfit: in the first picture above it swapped the pants too, where the LoRA kept the old jeans and belt, and in the last one it closed and belted the coat, where the LoRA left it open.
The LoRA is for the rest of the picture. It keeps the framing, the body, the face and the background where they were, so that only the clothes you can see change.
I made this because the outfit swap workflow I was working on messed things up about half the time, and those results were not usable. Before training anything I ran 47 swaps with plain Qwen Image 2.1 and marked every one. I liked 24. The other 23 had something wrong with them, and usually it was not the outfit itself:
These four are from those 47, the same workflow and seed without the LoRA and with it. None of them is in the training set.

| file | notes |
|---|---|
qwen-image-2.1-outfit-swap.safetensors | step 1,000, start here. The one that most often clears the old outfit instead of leaving parts of it on. |
qwen-image-2.1-outfit-swap-1250.safetensors | step 1,250. Holds the picture just as well. Keeps more of what the person already wears (boots, jeans under a skirt). |
qwen-image-2.1-outfit-swap-1500.safetensors | step 1,500, the end of the run. Same hold, a little more change on the face and background than the other two. |
Rank 32, ComfyUI key format, loads onto the Comfy-Org Qwen Image 2.1 weights.
Sixteen swaps the LoRA never trained on: four pairs held back from the set, and twelve pairs of people and outfits that appear nowhere in it (six swimwear, four coats, blazers and dresses, two men). Same seed, 25 steps, CFG 1, euler / simple, about 2 MP, LoRA at 1.0.
| no LoRA | 1,000 | 1,250 | 1,500 | |
|---|---|---|---|---|
| how far the result sits from the person picture (worst corner, median) | 3.6 px | 0.1 px | 0.1 px | 0.1 px |
| the same, worst of the sixteen | 7.0 px | 0.2 px | 0.2 px | 0.2 px |
| face pixels that changed noticeably | 14.1 % | 1.7 % | 1.8 % | 2.0 % |
| face, PSNR against the person picture | 29.8 dB | 37.8 dB | 37.7 dB | 37.1 dB |
| background pixels that changed noticeably | 10.8 % | 0.9 % | 0.9 % | 1.2 % |
| background, PSNR | 27.6 dB | 40.5 dB | 40.4 dB | 40.0 dB |
The face and background numbers are taken after lining each result up with the person picture, so they count repainting, not drift.
Plain Qwen 2.1 often leaves on whatever the new outfit does not cover: boots under a bikini, ripped jeans under a skirt. Two things change that.
The step. Two swaps, three seeds each, plain request:
| jeans gone under the new skirt | boots gone with the bikini | |
|---|---|---|
| no LoRA | 0 of 3 | 0 of 3 |
| step 500 | 0 of 3 | 0 of 3 |
| step 1,000 | 2 of 3 | 2 of 3 |
| step 1,250 | 0 of 3 | 0 of 3 |
A sentence at the end of the request (step 1,000, one seed):
| plain request | + Keep their own shoes and legwear. | + Replace everything they wear. | |
|---|---|---|---|
| tights, swimsuit | tights stay | tights stay | tights gone, shoes stay |
| boots, bikini | barefoot | boots stay | barefoot |
| ripped jeans, cardigan and skirt | jeans gone | jeans gone | jeans gone |
At steps 1,250 and 1,500 the same two sentences made little or no difference on these swaps, which is the other reason step 1,000 is the main file.
The workflow below adds Replace everything they wear. by default, in a box you can edit.
workflows/qwen-image-2.1-outfit-swap.json is the
workflow the numbers come from, with the LoRA row switched on. It uses my nodes
(AusBoss, 2.5.1 or newer) and needs ComfyUI 0.38 or
newer.
The same workflow is on Civitai with example pictures:
Qwen Image 2.1 Outfit Swap.
To add the LoRA to your own two-picture Qwen Image 2.1 edit graph:
image_1, the outfit as image_2, resolution
0, and the request as the prompt.latent output: 25 steps, CFG 1, euler / simple, denoise 1.The short version. The long one, with what went wrong on the way, is in RESEARCH.md.
arch: qwen_image_2, two
references per example (person, outfit), rank 32, LR 1e-4, 1,500 steps.Replace everything they wear., and a coat that is closed in the outfit picture can stay open.Replace everything they wear. a pair of shoes stayed on in
one of the three test swaps.