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: 8the bot picks8x-ESRGAN.pthunless 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 |
Related#
- Upscaler catalog -- every installed upscaler model and what it is good at
- /upscale -- the command and all of its options
- Hi-res fix and detailer -- the refine method, in detail
- Result card -- the ⬆️ upgrade button