Ask a diffusion model for a 3000-pixel image and you often get two horizons, three arms, or a landscape that repeats itself like wallpaper. That is not a bad prompt, it is a resolution problem with a specific cause and four known fixes. This article explains why models fail above their training resolution, compares the routes to a genuinely large image, and gives the settings for each one.
Native resolution is a training artefact
Every model is trained on images bucketed around a target size. Stable Diffusion 1.5 was trained at 512x512, the SDXL family at 1024x1024. Ask for much more and the model is extrapolating: it has never seen a coherent composition at that scale, so it fills the extra canvas with the only thing it knows, more of the subject. That is the mechanism behind duplicated heads and repeating horizons. It is a property of the training distribution, not a bug you can prompt your way out of.
Later architectures widened the range. The FLUX family handles a broader spread of sizes and aspect ratios than the SDXL generation, and in November 2024 Black Forest Labs added an Ultra mode to FLUX1.1 [pro] generating at up to four megapixels natively, alongside a raw mode aimed at a less-processed photographic look. Higher native ceilings shrink the problem; they do not remove it. Every model still has a size beyond which coherence degrades, and the only way to find yours is to walk the resolution up until subjects start duplicating.
Four routes to a large image
| Route | How it works | Best for | Cost |
|---|---|---|---|
| Generate natively at high resolution | Model was trained to handle the size | Cleanest results when the model supports it | Usually a paid API tier |
| GAN upscaler after generation | A separate network enlarges pixels, adds no new content | Fast 2x to 4x, faithful to the original | Cheap, can look plastic on skin and foliage |
| Latent upscale with a low-denoise pass | Enlarge, then run img2img at low strength so the model re-renders detail | Adding real texture rather than interpolated pixels | Moderate, risks drifting from the original |
| Tiled diffusion | Split the canvas into overlapping tiles, denoise each, blend | Very large output on limited VRAM | Slow, seam and repetition risk |
Most production work is the second and third combined: generate at native size, upscale, then a light denoise pass to restore texture the upscaler could not invent.
The setting that decides everything
In any upscale pass that involves the model, denoise strength is the whole game.
- Below 0.2 — nothing meaningful changes. You paid for compute and got the upscaler's output back.
- 0.3 to 0.45 — the working range. Enough for the model to rebuild skin pores, fabric weave and leaf edges while composition stays put.
- Above 0.55 — the model starts inventing. Faces shift, small objects appear, text becomes garbage. Occasionally you want this, but it is a creative choice, not an upscale.
A workflow that holds up
- Compose at native resolution. Iterate on prompt and seed at the size the model was trained for. Never debug composition at high resolution; it is slower and the failure modes are different.
- Pick an aspect ratio the model supports. Most models expose a list of trained size buckets. An unusual ratio outside those buckets is one of the more common causes of duplication, independent of total pixel count.
- Upscale by no more than 2x per pass. Two 2x passes beat one 4x pass. The model has more anchoring context at each step and drifts less.
- Run the low-denoise pass at 0.35 and inspect at 100 percent zoom. Judge on hands, eyes, text and small repeated patterns. Those break first.
- Tile only when you exceed VRAM. Use at least 64 pixels of tile overlap and a shorter, more generic prompt for the tile pass, otherwise every tile tries to render the full prompt and you get the subject repeated across the canvas.
- Render 20 to 30 percent above your delivery size and downsample. Downsampling averages away upscaler artefacts and produces perceived sharpness nothing else matches. It is the cheapest quality improvement in the whole pipeline.
Failure modes worth recognising
Repeated subjects. Almost always resolution or aspect ratio outside the trained buckets. Go back to native, fix the composition, upscale afterwards.
Plastic skin and smeared foliage. A GAN upscaler with no model pass after it. These networks interpolate; they cannot invent pore-level detail. Add a low-denoise pass.
Seams in tiled output. Overlap too small, or per-tile colour drift. Increase overlap, and where the tool supports it use a tile-aware conditioning model rather than raw tiling.
Detail that looks wrong up close. High resolution exposes material description you never had to write before. At 512 pixels a jacket is a shape; at 4 megapixels it needs a material. Add it to the prompt.
Costs climbing faster than expected. Compute scales with pixel count, not with the linear dimension. Doubling both sides quadruples the work. Budget accordingly before batching.
A prompt built for resolution
Blue hour photography of a bronze Cthulhu-shaped gargoyle at the top of Notre Dame,
Paris cityscape in the background.
This suits a sentence-following model such as FLUX, and it is a good example of a prompt whose value only appears at size. Three of its four elements pay off in detail: bronze is a material instruction that produces patina and specular highlights, the gargoyle is a subject with hard geometry that survives upscaling well, and the cityscape gives the background enough structure that a low-denoise pass has something to sharpen. Blue hour sets both the palette and the contrast level, which is why the same prompt reads as a photograph rather than an illustration.
What it deliberately avoids is a subject that punishes scale. Crowds, small faces and legible signage all get worse as you enlarge, because each becomes a separate coherence problem the model has to solve at a size it was not trained on.
Practical takeaways
- Duplicated subjects mean you are outside the model's trained size or aspect ratio, not that your prompt was weak.
- Compose at native resolution, always. Upscaling is a separate stage with separate settings.
- Denoise between 0.3 and 0.45 in the model-assisted upscale pass. Below that nothing happens, above it the image changes.
- Chain 2x passes rather than jumping straight to 4x.
- Tile only when VRAM forces it, with generous overlap and a shortened prompt.
- Render slightly larger than you need and downsample at the end.
- Write material and texture words once you work at size; resolution makes vagueness visible.



Top comments (0)