Flux.1 Expand Image
Flux.1 Expand
- image
- IMAGE
Outpainting - growing a portrait into a landscape, turning a close crop into a wide shot - is one of those jobs that's tedious locally and magical in the cloud. Flux.1 Expand is the cloud version: a BFL API node that takes your image, adds pixels on whichever edges you say, and has Flux.1 Pro invent the continuation. It's been in ComfyUI core since the May 2025 API-node batch, and it's the natural sibling of Flux.1 Fill (the inpaint one) - same proxy, same polling loop, same credits meter.
Before you wire it in, know the shared ground: this is a partner node, not a local model. No weights to download, no VRAM used - your image goes out as base64 to api.comfy.org, gets forwarded to Black Forest Labs, and you're billed from the credits on your Comfy account. It won't run until you're logged in with a balance. Every node in the "partner/image/BFL" family works this way; if you've used one, you've used them all.
The interesting input here isn't the prompt, it's top, bottom, left, right. Each one is the number of pixels to expand on that side, from 0 to 2048. This is where people get burned: these are not percentages or a scale factor. Want to add a third of the image's width to the right side of a 1024px image? That's right = 341, not a slider drag. The node sends them straight to BFL, and Flux.1 Expand generates the border content to match the prompt and blend into the existing pixels.
The rest of the inputs are standard Flux fare: prompt describes what the new areas should contain (an empty prompt still expands, it just has no direction), guidance defaults to 60, steps to 50, and seed is best-effort determinism - BFL won't guarantee identical reruns. prompt_upsampling is the one to leave alone; it rewrites your prompt for extra creativity and makes results nondeterministic, and for a precision task like outpainting that's the opposite of what you want.
Output is a single IMAGE, already decoded - no VAE step, wire it into Save Image or anything downstream. The node resizes nothing on its own: the result is your original image plus exactly the pixels you requested, on the sides you requested. Note there's no separate mask input here - Fill takes a mask, Expand takes pixel counts. They're different tools that solve adjacent problems, and mixing them up is the most common mistake.
When would you actually reach for it? The killer use case is aspect-ratio fixing: you've got a 1:1 hero image and the client wants 16:9, and you don't want to just crop. Expand the left and right edges, prompt "matching scenery, seamless continuation," and you've turned a crop into a full frame. The same job locally means setting up a proper outpaint workflow with a padded latent and denoise tuning - this is one call and a poll. For a single conversion it's worth the credits. Just remember those are real pixels you're paying for, so check the price badge before you start expanding on all four sides at 2048.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| prompt | STRING | Prompt for the image generation | |
| prompt_upsampling | BOOLEAN | false | Whether to perform upsampling on the prompt. If active, automatically modifies the prompt for more creative generation, but results are nondeterministic (same seed will not produce exactly the same result). |
| top | INT | 00–2048 | Number of pixels to expand at the top of the image |
| bottom | INT | 00–2048 | Number of pixels to expand at the bottom of the image |
| left | INT | 00–2048 | Number of pixels to expand at the left of the image |
| right | INT | 00–2048 | Number of pixels to expand at the right of the image |
| guidance | FLOAT | 60.001.5–100 | Guidance strength for the image generation process |
| steps | INT | 5015–50 | Number of steps for the image generation process |
| seed | INT | 00–18446744073709550000 | The random seed used for creating the noise. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |