FitDiT Virtual Try-on
The node that actually puts the clothes on — FitDiT Virtual Try-on
- model
- model_image
- garment_image
- mask
- pose_image
- output
This is the payoff node. The other two FitDiT nodes are load-and-prep; FitDiT Virtual Try-on is the one that takes your person photo, your garment photo, and returns the dressed image. If you googled "FitDiT ComfyUI" you're probably here for this node, and the good news is it works about as well as the paper previews suggested - with one honest caveat we'll get to.
Why reach for a purpose-built try-on model instead of telling Flux Kontext or Qwen-Image-Edit to "change the shirt"? Because those regenerate the whole frame and drift on everything you didn't touch. FitDiT is trained for one job: authentic garment detail - patterns, logos, fabric texture - on a body it's told not to move. It's built on a diffusion transformer (the SD3 DiT lineage), and it shows in the results. The trade-off is that it needs a mask and a pose skeleton as inputs, which is where the rest of this pack comes in.
How it works
The node pads your model image, garment, mask and pose image to the resolution you pick, runs the two-transformer FitDiT pipeline - one transformer encodes the garment, one does the try-on, with a pose guider keeping the skeleton locked - then crops back to your original image size. Output comes out at the same dimensions you put in, which is nicer than most try-on tools that just dump a fixed-size result at you.
The inputs that matter
model- theFITDIT_MODELfrom FitDiT Load Model. Feed it here and nowhere else.model_image/garment_image- the person and the garment.maskandpose_image- straight from FitDiT Generate Mask. These two are your quality levers; a sloppy mask produces seams no sampler setting can fix.steps(default 20, 15–50) andguidance_scale(default 2.0). This is a DiT, not SDXL - don't crank guidance to 7 thinking you're being helpful. The model was tuned near 2.resolution-768x1024,1152x1536(default, same as the online demo), or1536x2048. This is your VRAM dial as much as your quality dial.seed--1means random; set a fixed seed when you're comparing candidates.- optional
num_images(1–4) - generate a batch and pick the winner.
Output
A single IMAGE tensor (a batch when num_images is above 1), which you wire straight into a Save Image or Preview node. Nothing exotic.
Common issues
- Pattern fidelity isn't 100%. Community consensus puts open-source try-on models at roughly 80–90% on pattern and fabric matching. Stripes and small logos will occasionally drift or soften. That's the state of the art, not a bug in your settings.
- Body shape can shift subtly. Try-on models regenerate the masked region, so the subject can come back a touch slimmer or with a slightly different posture. All of them do this - FitDiT is on the milder side, and the
pose_imagefrom Generate Mask keeps the pose locked, which is an advantage over CatVTON. - VRAM. Default
1152x1536is chunky. If it OOMs, drop to768x1024or enable offload on the Load Model node - people do run this pack on 8GB cards. - Feed it a flat, front-facing product shot of the garment. A garment worn by someone else confuses the model and the "detail authenticity" pitch collapses.
Install is the pack-level routine: ComfyUI Manager (search "ComfyUI-FitDiTx") or cd ComfyUI/custom_nodes && git clone https://github.com/ihmily/ComfyUI-FitDiTx && pip install -r requirements.txt, then grab the models - see the FitDiT Load Model page for the download commands, because that's the step that takes the disk space and the patience.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| model | FITDIT_MODEL | — | |
| model_image | IMAGE | — | |
| garment_image | IMAGE | — | |
| mask | MASK | — | |
| pose_image | IMAGE | — | |
| steps | INT | 2015–50 | — |
| guidance_scale | FLOAT | 2.01–5 | — |
| seed | INT | -1-1–2147483647 | — |
| resolution | COMBO | 1152x1536 | 3 options: 768x1024, 1152x1536, 1536x2048 |
| num_imagesopt | INT | 11–4 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| output | IMAGE | — |