Nodes/ComfyUI-FLUX-BFL-API/Flux Virtual Try-On (BFL)
ComfyUI Node

Flux Virtual Try-On (BFL)

Dress a person in a garment they never wore, from two photos

By gelasdev·Created 2 years ago·Updated 26 days ago· 49
Flux Virtual Try-On (BFL)
  • config
  • IMAGE
person
garment
promptTRY-ON: The person of image 1 wearing garments of image 2.
safety_tolerance2
output_formatjpeg
seed-1
webhook_url
webhook_secret

Flux Virtual Try-On (BFL) does exactly what the name says: give it a photo of a person and a photo of a garment, and it returns the person wearing the garment. It's BFL's flux-tools/vto-v1 endpoint wrapped for ComfyUI, part of the same ComfyUI-FLUX-BFL-API pack as the erase and outpaint tools. For e-commerce mockups, "how would I look in this" previews, or dressing a character reference, it's about as turnkey as this gets - no ControlNet, no segmentation model, no garment-mask pipeline.

The local alternatives are a pain by comparison. Dedicated try-on models need pose estimation, garment segmentation, and a pile of VRAM; this is two images and a prompt, and the whole thing runs in BFL's cloud. The tradeoff is the usual one: it's a paid API call, it takes a while, and moderation is in play.

How it works

You supply two base64 images - person (the subject to dress) and garment (the clothing to apply) - plus a prompt describing how the garment is worn. The node POSTs to flux-tools/vto-v1, polls get_result?id=... until ready, and returns a single IMAGE tensor. The model does the garment transfer while trying to preserve the person's face, pose, and the garment's look. The default prompt is the sensible one: TRY-ON: The person of image 1 wearing garments of image 2. - you can edit it, and you should describe specifics ("open jacket over a white shirt, sleeves rolled") when the default isn't cutting it.

The inputs that matter

  • person - base64 of the subject to dress. Straight, front-facing photos of the full garment area work best.
  • garment - base64 of the clothing. A clean product-style shot of the item gives the model the most to work with.
  • prompt - how it's worn, and what to preserve (face, pose). The default covers the basics.
  • safety_tolerance - 0–5, default 2. Moderation strictness; this endpoint is content-filtered and BFL's filters are not shy.
  • output_format - jpeg (default) or png. JPEG is fine for a web mockup; pick png if it feeds a compositing chain.
  • Optional seed, webhook_url/secret, config.

Installing it

Standard single-pack install:

cd ComfyUI/custom_nodes
git clone https://github.com/gelasdev/ComfyUI-FLUX-BFL-API.git

Restart, key in config.ini or via a Flux Config (BFL) node. No models to download; the pack's only dependency is torch.

Where people get burned

  • Photos of people in the wrong pose. The model preserves the person's pose, so a side-angle person with a front-facing garment can come out awkward. Shoot or pick straight-on photos for the best transfers.
  • Garment detail drift. Complex patterns, logos, and fine textures are where try-on models wobble. Give it a high-quality garment image and don't expect a pixel-perfect reproduction of every button.
  • Black image output. The pack's universal failure signal - moderation bounce, API error, or poll timeout. Check [BFL] logs and the printed curl equivalent to see what BFL actually returned.
  • Expecting a full outfit. This handles garments, singular. A full look needs iterative runs or the local stack.

One tip from the pack's own docs: there's now a v2 variant (Flux Virtual Try-On v2 (BFL), same pack) that does sharper face preservation and garment detail with inputs up to 4MP. If the base v1 output isn't sharp enough around the face, that's your upgrade - same inputs, same workflow.

CategoryBFL

Inputs (9)

NameTypeDefaultDescription
personSTRINGPerson image (base64-encoded string). The subject to dress.
garmentSTRINGGarment image (base64-encoded string). The clothing to apply.
promptSTRINGTRY-ON: The person of image 1 wearing garments of image 2.Text guidance for the try-on. Describe the garment and how it is worn while preserving the person's face and pose.
safety_toleranceINT20–5Tolerance level for input and output moderation. Between 0 and 5, 0 being most strict, 5 being least strict.
output_formatCOMBOjpegjpeg (default) or png.
seedoptINT-1Optional seed for reproducibility. -1 = random.
webhook_urloptSTRINGURL to receive webhook notifications.
webhook_secretoptSTRINGOptional secret for webhook signature verification.
configoptBFL_CONFIGOptional Flux Config (BFL) override for x-key, base URL, and region.

Outputs (1)

NameTypeDescription
IMAGEIMAGE