ComfyUI Node

FLUX.1 Fill [pro]

Inpainting without the VAE churn

By Runware·Created 2 years ago·Updated about a month ago· 140
FLUX.1 Fill [pro]
  • seedImage
  • maskImage
  • advancedFeatures.watermark.image
  • image
positivePrompt
seed0
steps50
CFGScale60.00
numberResults1
advancedFeaturesfalse
advancedFeatures.watermark.bgColor
advancedFeatures.watermark.displayPosition(default)
advancedFeatures.watermark.fontColor
advancedFeatures.watermark.opacityfalse
advancedFeatures.watermark.opacity_value0.10
advancedFeatures.watermark.text
providerSettings.bfl.promptUpsamplingfalse
safetyfalse
safety.checkContentfalse
providerSettings.bfl.safetyTolerance2
ttlfalse
ttl_value60
outputFormatJPG
outputQuality95

FLUX.1 Fill is Black Forest Labs' official inpainting and outpainting model - the one that actually understands "fill the masked area" instead of just blurring the edges. This node runs the [pro] variant on Runware's cloud, so you get the full paid version without a BFL API account or the 30GB of Flux Tool weights on your drive.

If you've done local Flux inpainting, you know the ritual: VAE-encode the masked image, run the sampler, VAE-decode, and wince every time someone reminds you that each encode/decode pass is lossy and you're meant to composite the result back instead of re-encoding. This node sidesteps that whole ritual - the cloud handles the pipeline and hands you a finished IMAGE. The output is exactly what you'd paste over the source.

The inputs that matter

  • seedImage (required, IMAGE): the picture being repaired.
  • maskImage (required, IMAGE): the region to regenerate, as a white-on-black mask. Paint it tight - the model works best when the mask covers the thing you're replacing and nothing else.
  • positivePrompt (required, STRING, multiline): what goes in the hole. For outpainting, describe what the extended area should be; for object replacement, name the new object.
  • CFGScale (default 60, range 1.5–100): the FLUX-era guidance knob, and here it reads differently than SD. The BFL API exposes this at a much higher scale than the 3.5 you might be used to from local Flux workflows - trust the default before you yank it.
  • steps (default 50, min 15): fine at the default; higher is rarely needed for Fill work.
  • providerSettings.bfl.promptUpsampling: BFL's prompt expansion. Useful when your prompt is thin; turn it off when you want it to do exactly what you wrote.
  • providerSettings.bfl.safetyTolerance (0–5, default 2): content moderation strictness. Lower is stricter, higher more permissive - the one knob people adjust when a legitimate prompt gets bounced.

Output is a native image (IMAGE). The watermark socket takes a Runware watermark builder if you need one stamped on.

How it works

Your source image and mask are encoded as PNG data URIs and sent with the prompt to Runware; FLUX.1 Fill [pro] runs on their GPUs; the repaired result is downloaded back as an IMAGE. The safety group (safety.checkContent), ttl, outputFormat (JPG/PNG/WEBP) and outputQuality widgets are the standard pack block. Cost per run lands on the title bar - and unlike local inpainting, you pay per fill, not per pixel of VRAM.

Install and gotchas

Pack-wide: ComfyUI Manager → search Runware, or git clone https://github.com/Runware/ComfyUI-Runware into custom_nodes + pip install -r requirements.txt, restart, add a Runware API key (Settings → Runware API key, RUNWARE_API_KEY, or runware auth login).

The classic mistakes: a mask that's too loose (the model fills context it shouldn't), a prompt that describes the whole image instead of just the hole, and CFGScale cranked to 100 because bigger must be better. Keep the mask honest, keep the prompt scoped to the masked region, and remember - [pro] is the paid tier, so a numberResults of 20 is a bill, not a bonus. For clean, composable inpainting with zero local pipeline, this is the easiest path there is.

CategoryRunware/Image/bfl

Inputs (23)

NameTypeDefaultDescription
seedImageIMAGE
maskImageIMAGE
positivePromptSTRINGText prompt describing elements to include in the generated output.
advancedFeatures.watermark.imageoptIMAGE
seedoptINT00–9223372036854776000Random seed for reproducible generation. When not provided, a random seed is generated in the unsigned 32-bit range.
stepsoptINT5015–50Total number of denoising steps. Higher values generally produce more detailed results but take longer.
CFGScaleoptFLOAT60.001.5–100Guidance scale representing how closely the output will resemble the prompt. Higher values produce results more aligned with the prompt.
numberResultsoptINT11–20Number of results to generate. Each result uses a different seed, producing variations of the same parameters.
advancedFeaturesoptBOOLEANfalseEnable to set advancedFeatures. Off uses the model's default.
advancedFeatures.watermark.bgColoroptSTRINGBackground color in hex format.
advancedFeatures.watermark.displayPositionoptCOMBO(default)Watermark position.
advancedFeatures.watermark.fontColoroptSTRINGText color in hex format.
advancedFeatures.watermark.opacityoptBOOLEANfalseEnable to set advancedFeatures.watermark.opacity. Off uses the model's default.
advancedFeatures.watermark.opacity_valueoptFLOAT0.100.1–1Watermark opacity.
advancedFeatures.watermark.textoptSTRINGWatermark text.
providerSettings.bfl.promptUpsamplingoptBOOLEANfalseEnable automatic enhancement and expansion of the input prompt.
safetyoptBOOLEANfalseEnable to set safety. Off uses the model's default.
safety.checkContentoptBOOLEANfalseEnable or disable content safety checking.
providerSettings.bfl.safetyToleranceoptINT20–5Tolerance level for content moderation. Lower values are stricter; higher values are more permissive.
ttloptBOOLEANfalseEnable to set ttl. Off uses the model's default.
ttl_valueoptINT60Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`.
outputFormatoptCOMBOJPGFile format for the generated image.
outputQualityoptINT9520–99Compression quality of the output. Higher values preserve quality but increase file size.

Outputs (1)

NameTypeDescription
imageIMAGE