Skip to content

Upscaling Methods#

There are four different ways the bot can make an image bigger, and they are not interchangeable. This page covers the methods. For the list of upscaler models themselves, see the Upscaler catalog.


Comparison#

Method Diffusion? Uses your prompt? Speed Best for
Model-based no no fastest Clean enlargement with no change to content
SeedVR2 yes no slow, VRAM-hungry Restoring detail in soft or low-quality sources, capped at 4K
USDU (tiled diffusion) yes, per tile on SDXL only slowest Adding genuine new detail at large sizes
Upgrade-only no no fastest The ⬆️ button on a result card

How to reach each one:

Method Where
Model-based /upscale method: Model-based (fast), the default
SeedVR2 /upscale upscaler: SeedVR2
USDU /upscale method: USDU (tiled diffusion), or usdu style in the Detailer menu
Upgrade-only the ⬆️ button on a result card

A fifth path, /upscale method: Refine (img2img low-denoise), is not a separate upscaler -- it drives the hi-res fix pipeline with the factor ceiling raised to 8.0.


Model-based (fast)#

The default. It loads an upscaler model, runs the image through it, and resizes the output to your exact target with lanczos filtering.

  • No sampler, no prompt, no seed. The content of the image cannot change.
  • The lanczos resize is why a 4x upscaler still gives you exactly 2x when you ask for 2x.
  • Scale choices are 2x, 4x, 8x. Anything else gives "Scale must be 2x, 4x, or 8x."
  • At scale: 8 the bot picks 8x-ESRGAN.pth unless you named an upscaler yourself.

Use this when the source is already sharp and you only need more pixels.


SeedVR2#

A diffusion-based restoration model, selected by passing upscaler: SeedVR2 rather than by the method: option.

  • The bot works out the target short side and long side from your image and scale, then caps the long side at 4096 and scales the whole thing down proportionally if it would go over.
  • Maximum scale is 4x. Asking for 8x gives "SeedVR2 only supports up to 4x scale."
  • SeedVR2 is memory-hungry enough that the bot clears VRAM before starting it.

Use this on soft, compressed or low-resolution sources where a plain upscaler would just enlarge the mush.


USDU (tiled diffusion)#

Ultimate SD Upscale. The image is cut into overlapping tiles and each tile is re-sampled by the diffusion model, then reassembled. This is the only method that adds real new detail at large sizes.

Behaviour Value
Input cap resized down to 4 megapixels before tiling
Tile size half the input, clamped to 256 to 1024 pixels per side
Denoise 0.2 by default
Sampler / steps / CFG your explicit values, else the source job's, else the model's own, else deis / beta / 20 steps / CFG 5

Your prompt is only used on SDXL

Only SDXL-architecture models get the scene prompt fed into every tile. On Krea 2, Flux 2, Flux Dev, Z-Image, Anima, ERNIE, Qwen, Neta-Lumina, Mage-Flow and Mugen, the tile prompt is swapped for a fixed generic one: positive highly detailed, sharp focus, high quality, intricate details, clean, negative blurry, low quality, low resolution, artifacts, jpeg artifacts. Prompt-obedient models otherwise paint a complete miniature copy of your scene into each individual tile.

USDU refuses three families

USDU is not compatible with Z-Image, Neta-Lumina or Ideogram 4. You get "USDU upscale is not compatible with X models. Try the regular upscale...". Use model-based or SeedVR2 for those.

If you give no prompt#

Running USDU without a prompt: and without a source job makes the bot describe the image for you with a vision model, in the style the default model expects, and carry on. If you did supply a prompt, or the auto-description fails, an ephemeral USDU Upscale Setup panel appears with a model dropdown and three buttons: ⚡ Use Generic Prompts, ✏️ Set Custom Prompts, ✖️ Cancel.


Upgrade-only#

The path behind the ⬆️ Upgrade button on a finished result card. It is the same four-node graph as model-based upscaling, driven by the upgrade level rather than a scale you type.

It deliberately skips the normal parameter validation, which is what lets you upgrade an image that came from an API-backed model like gpt-image-2 or a Gemini model -- those names are not real local checkpoints and would otherwise fail the model lookup.


Which upscaler model gets used#

When you do not name an upscaler, the bot walks a short list.

Priority Source
1 The upscaler you passed on the command
2 Your saved Upscaler in /settings
3 The model's own configured default, where it has one
4 The global fallback, 4x-AnimeSharp.pth

Models that ship their own default:

Model Its default upscaler
Z-Image / Lumina family 4x_remacri_original.safetensors
Krea 2 4x_NMKD-Siax_200k.pth
Nano (Gemini) 4x_NMKD-Siax_200k.pth

Everything else lands on 4x-AnimeSharp.pth.

/upscale ignores your saved upscaler

The /upscale command uses the bot's global default, not the Upscaler you saved in /settings. The ⬆️ button on a result card does honour your saved choice. If you want a specific model from /upscale, pass upscaler: explicitly.

Note

Setting upscaler: on /imagine does not upscale anything. It records your choice on the job so the ⬆️ and 🔍 buttons on the finished card use it later. The one exception is a /turbo MrFlow run, where it is used live as the stage-2 upscale model.


Input limits#

Limit Value
Attachment size 25 MB -- larger gives "Image must be smaller than 25MB."
File type must be an image, else "Please provide an image file."
denoise clamped 0 to 1
steps clamped 1 to 100
cfg clamped 0 to 30