FLUX Outpainting
Extend the Canvas, Keep the Subject
- image
- outpaint
- advancedFeatures.watermark.image
- image
Outpainting is the quiet sibling of inpainting, and it's the one that fixes a specific, very common frustration: you generated a great image but it's the wrong shape, or you want more context around the subject, or you need a wide shot out of a square one. FLUX Outpainting is Black Forest Labs' hosted answer - you hand it an image plus a canvas definition, and it grows the image outward, inventing plausible continuation that matches the existing scene instead of just pasting blurry noise into the empty space.
The mechanism is the standard outpaint: your image stays pixel-identical, the model fills the region around it, and the border blending is where the quality lives. In the cloud, you get BFL's tuned model without hosting weights or fighting the local tile dance - which is worth something, because outpaint quality is exactly the kind of thing that separates a tuned model from a generic one.
What you set
Required: image and outpaint. The outpaint input is a RUNWARE_OUTPAINT socket from the pack's outpainting builder node under Runware/Params - that's where you define the canvas: how far to extend in each direction (top/bottom/left/right, plus a blur for the transition zone). So the workflow is: load/generate your image, wire it in, wire in an outpaint builder with your extension amounts.
Then two hosted settings that matter:
- settings.autoCrop - defaults to off, and the tooltip is unusually specific about why: if your reference image extends beyond the canvas bounds, an out-of-bounds placement returns a 422 error unless autoCrop is on. If you hit a 422, this toggle is the fix.
- settings.mode -
highvsfast. Quality vs speed.highis the default and the right call for a deliverable;fastis for checking the composition of an extension before committing.
Output is one image at the extended size.
Why not just inpaint?
Fair question, and the community answer is that they're different jobs. Inpainting fixes inside the frame; outpainting changes the frame itself. The mask-based tools that still beat instruction models are exactly this class of job - extending a scene while keeping everything else bit-identical is something an edit model can't do, because it rewrites the whole image and drifts the original. Outpainting keeps your original untouched and only generates the border. That's the node's entire value.
Install
Standard pack install:
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt
Restart, or install "Runware" via ComfyUI Manager; API key in Settings → Runware API key or RUNWARE_API_KEY. No weights download. Shared gotchas: each run bills the account (title bar shows cost), and the settings.autoCrop/422 interaction is the one beginners actually hit - read that tooltip before you start extending images to unusual aspect ratios.
Inputs (19)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| outpaint | RUNWARE_OUTPAINT | — | |
| advancedFeatures.watermark.imageopt | IMAGE | — | |
| numberResultsopt | INT | 11–20 | Number of results to generate. Each result uses a different seed, producing variations of the same parameters. |
| advancedFeaturesopt | BOOLEAN | false | Enable to set advancedFeatures. Off uses the model's default. |
| advancedFeatures.watermark.bgColoropt | STRING | Background color in hex format. | |
| advancedFeatures.watermark.displayPositionopt | COMBO | (default) | Watermark position. |
| advancedFeatures.watermark.fontColoropt | STRING | Text color in hex format. | |
| advancedFeatures.watermark.opacityopt | BOOLEAN | false | Enable to set advancedFeatures.watermark.opacity. Off uses the model's default. |
| advancedFeatures.watermark.opacity_valueopt | FLOAT | 0.100.1–1 | Watermark opacity. |
| advancedFeatures.watermark.textopt | STRING | Watermark text. | |
| settings.autoCropopt | BOOLEAN | false | If true, crop the reference image to the canvas bounds when it extends beyond the edges. Defaults to false (out-of-bounds placements return 422). |
| settings.modeopt | COMBO | high | Generation mode trading quality for speed. |
| safetyopt | BOOLEAN | false | Enable to set safety. Off uses the model's default. |
| safety.checkContentopt | BOOLEAN | false | Enable or disable content safety checking. |
| ttlopt | BOOLEAN | false | Enable to set ttl. Off uses the model's default. |
| ttl_valueopt | INT | 60 | Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`. |
| outputFormatopt | COMBO | JPG | File format for the generated image. |
| outputQualityopt | INT | 9520–99 | Compression quality of the output. Higher values preserve quality but increase file size. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |