PIXELS · SECOND PASS · TILES · MEMORY · PROOF

Upscale an image in Forge without changing the wrong details

Choose the path by what may change: Extras for pixel enlargement, Hires. fix for a txt2img second pass, or SD upscale for tiled diffusion.

Product boundaryOriginal Forge onlyInspected snapshotdfdcbab · 26 Jun 2025Review date28 Aug 2026
00 · Direct answer

Resolution is one result; image change is another

The correct path is the smallest process that is allowed to alter the image.

01 · PROTECTStart with what cannot change

Identity, layout, typography and edge content define the route before target size does.

02 · ROUTEKnow whether diffusion runs

Extras is pixel post-processing. Hires. fix and SD upscale perform another sampling pass.

03 · GEOMETRYCalculate before generating

Doubling both dimensions produces four times as many pixels—not twice as many.

04 · CONTROLChange one variable

Upscaler, denoising, tile dimensions and overlap answer different failure questions.

05 · PROOFInspect the delivered image

Check exact dimensions at fit view and artifacts at 100% before escalating.

VERIFIED

This page covers the current original Forge paths. It does not present third-party MultiDiffusion extensions, fork features or arbitrary upscaler files as native guarantees.

01 · Route chooser

Choose by the detail you are willing to regenerate

Target dimensions do not distinguish the three workflows.

VERIFIEDPixel post-processing

Extras → Single Image

Choose this when the image is already correct and the primary task is more pixels, not a new interpretation.

What changes
Resolution, resampling character and optional blend between two upscalers.
What it protects
Composition and subject placement because no Stable Diffusion sampling pass is run by this script.
First controlled run
Save the source, choose Upscaler 1, set a modest target, leave Upscaler 2 visibility at 0, then inspect at 100%.
Done when
Dimensions increase while identity, text, edges and composition remain acceptable.
02 · Three pipelines

Follow the image through the actual path

Only two pipelines return to Stable Diffusion sampling.

EXTRASPIXEL
SOURCE→UPSCALER→OPTIONAL BLEND→OUTPUT

No Hires or SD-upscale diffusion pass in the post-processing script.

HIRES. FIXSECOND PASS
TXT2IMG→LATENT / PIXEL SCALE→IMG2IMG SAMPLE→OUTPUT

Denoising and second-pass conditioning can reconstruct content.

SD UPSCALETILED
SOURCE→PIXEL SCALE→TILE SAMPLE→STITCH

Img2img Width and Height become tile size; overlap supplies neighboring context.

VERIFIED

These branches are derived from the inspected Extras, Hires processing and SD upscale code.

03 · Clean baseline

Prove one modest enlargement before a large target

This keeps the first visual failure attributable.

  1. 01

    Save the untouched source

    Keep the exact input or selected txt2img result. Do not use a preview, grid or already compressed copy as the only baseline.

  2. 02

    Name the job

    Write whether success means pixel enlargement, diffusion-added detail or tiled regeneration. This determines Extras, Hires. fix or SD upscale.

  3. 03

    Record source geometry

    Record width, height, aspect ratio and file format. Calculate the target pixel count before loading a large model or starting a batch.

  4. 04

    Prove one path at a modest target

    Run one image with one upscaler and no unrelated post-processing. Keep batch size 1 and save the exact settings.

  5. 05

    Inspect at two zoom levels

    At fit view, check composition and identity. At 100%, check edges, faces, text, fine lines, flat gradients and repeating textures.

  6. 06

    Change one controlling variable

    For Extras change the upscaler or scale; for Hires. fix change denoising; for SD upscale change overlap or tile size. Keep the receipt fixed.

  7. 07

    Escalate progressively

    Move to the next target only after the smaller pass is acceptable. Save each boundary instead of repeatedly overwriting the only working result.

  8. 08

    Stop at the delivery requirement

    Verify exact dimensions, file format and visual acceptance criteria. More pixels are not proof of more usable detail.

VERIFIED

Baseline done state: one saved output reaches its recorded target, preserves the named protected details and has no unacceptable artifact at fit view or 100% zoom.

04 · Dimension planner

Calculate the target before committing memory and time

Pixel count grows with both dimensions.

TARGET2048 × 2048
OUTPUT PIXELS4.19 MP
PIXEL MULTIPLIER4.00×

VERIFIED The multiplier is exact geometry: scale². ASSUMPTION: it is a workload warning, not a VRAM or runtime prediction.

05 · Extras controls

Use pixel post-processing when content must stay stable

Current labels and ranges are pinned to the inspected commit.

01

Input modes

Current Extras exposes Single Image, Batch Process and Batch from Directory. Directory fields use the same server-directory visibility boundary as the rest of Forge.

02

Scale by

Resize accepts 1.00–8.00 in 0.05 steps and displays 4 by default. Max side length accepts 0 as no limit and can cap the result while preserving aspect ratio.

03

Scale to

Width and Height accept 64–8192 in steps of 8 and display 512. The code scales to cover the target box; Crop to fit then takes a centered target-sized crop.

04

Two upscalers

Upscaler 1 produces the primary result. If Upscaler 2 is selected and visibility is above 0, Forge produces a second result and blends the two images.

05

Visibility

Upscaler 2 visibility accepts 0–1 in 0.001 steps and defaults to 0. It is image blending, not a confidence score or extra diffusion strength.

06

Saved evidence

The post-processing receipt records the scale or target dimensions, crop target and selected upscaler names. Extras output defaults to the extras-images path.

SOURCE RATIO
SCALE TO COVER
CENTER CROP

Scale to + Crop to fit: aspect ratio is preserved during enlargement, then centered overflow is removed. A changed target ratio can cut edge content.

06 · Hires. fix

Treat Hires. fix as a second generation pass

It is not a checkbox that only makes the same image larger.

01VERIFIED

Second pass contract

Hires. fix belongs to Txt2img. Current processing runs a first generation, enlarges either latent samples or decoded pixels, then performs a second img2img sampling pass.

02VERIFIED

Upscaler branch

A latent mode interpolates the latent tensor before the second pass. A named pixel upscaler decodes the first image, resizes pixels, re-encodes them and then samples again.

03VERIFIED

Denoising

The UI accepts 0–1 in 0.01 steps and displays 0.70. It controls the second img2img pass, so raising it can add detail and can also change identity, layout or text.

04VERIFIED

Scale and target

Upscale by accepts 1–4 in 0.05 steps and displays 2. Width and Height targets accept 0–2048 in steps of 8; zeros leave the scale factor in control.

05VERIFIED

Hires steps

Hires steps accepts 0–150. In current processing, 0 means use the first-pass sampling-step value for the second pass; it does not mean skip the pass.

06VERIFIED

Separate controls

The current UI can use another checkpoint, VAE / Text Encoder choice, sampler, scheduler, prompt, negative prompt, CFG and Distilled CFG for the Hires pass. Empty Hires prompts reuse the first-pass prompts.

STALE SNAPSHOT

An August 2024 owner comment says FLUX did not work well with “Latent” upscale in that tested configuration. This is a dated diagnostic clue, not a claim about every current FLUX format or model package.

Inspect the dated issue ↗
07 · SD upscale

Use overlap to share context between regenerated tiles

Tile size, overlap and denoising solve different problems.

OVERLAP
VERIFIED

The current script exposes three direct controls

Width × Height
Img2img sliders set each diffusion tile size.
Tile overlap
0–256 · step 16 · displayed 64.
Scale Factor
1–4 · step 0.05 · displayed 2.

The script enlarges first, splits the result, processes tile batches, then combines them. More overlap means more shared pixels and more work; it does not guarantee invisible seams.

MEMORY BOUNDARYTile the diffusion canvas—not the claim

Tiled processing changes the active spatial workload, but actual memory still depends on checkpoint family, VAE, precision, tile dimensions, batch size, ControlNet, LoRAs and extensions. Route a measured failure through the OOM diagnostic.

08 · Artifact router

Match the visual failure to the stage that can create it

Do not solve every artifact with more denoising.

PIXEL MODEL

Soft or waxy detail

Compare another upscaler on the same crop. The source may not contain recoverable texture.

PIXEL MODEL / BLEND

Halos and hard edges

Remove the second blend, reduce scale or change the pixel upscaler before involving diffusion.

TILED PATH

Grid or seam

Freeze the receipt, then isolate overlap and tile dimensions. Low configured overlap is an explicit seam risk.

DIFFUSION PASS

Identity or texture drift

Restore the seed and lower denoising. Check whether a Hires-specific model or prompt also changed.

ASSUMPTION Diagrams are diagnostic abstractions, not generated benchmark results. Community reports establish that these failures occur; your acceptance threshold requires a recorded local comparison.

The result is larger but not sharper

Confirm the file dimensions first. Then compare another pixel upscaler on the same crop. If the source contains no recoverable detail, a post-processing model may smooth or hallucinate texture rather than restore truth.

Inspect the evidence ↗
The face, subject or composition changed

Identify whether diffusion ran. Extras alone does not run a Stable Diffusion pass; Hires. fix and SD upscale do. Restore the fixed seed and lower denoising before changing the prompt or model.

Open the dedicated route →
Text or logos became different characters

Treat exact typography as protected source data. Start with Extras. Any diffusion-assisted path can reinterpret letter shapes, so mask or composite exact text after generation when fidelity is mandatory.

There are halos or crunchy edges

Compare the untouched source and one unblended upscaler at 100%. Reduce the scale, switch the pixel upscaler or lower Upscaler 2 visibility. Do not add denoising to solve a pixel-model artifact.

Inspect the evidence ↗
A grid or seam crosses the result

For SD upscale, hold the source, seed, prompt and denoising fixed; then test overlap and tile dimensions. Settings explicitly warn that low ESRGAN/DAT tile overlap can leave visible seams.

Inspect the evidence ↗
Textures repeat from tile to tile

Reduce the number of changing variables. Test a closer target, lower denoising and a larger contextual tile if memory permits. Global consistency is not guaranteed when local tiles are regenerated independently.

Inspect the evidence ↗
Hires. fix creates bands or a damaged edge

A dated original-repo issue reports banding and an owner comment warns that one 2024 FLUX setup did not work well with Latent upscale. Treat that as a stale configuration clue, then compare a pixel upscaler and a smaller factor on your recorded build.

Inspect the evidence ↗
Extras throws a float or tiled-upscale TypeError

Issue #2674 records this failure for DAT/ESRGAN/R-ESRGAN in a February 2025 environment. Save the traceback, upscaler name, source dimensions and commit; verify on the inspected code before assuming the model file is bad.

Inspect the evidence ↗
Forge runs out of memory

Stop the batch, prove one smaller target and record the failing stage. Pixel count grows with width × height, while actual VRAM also depends on model family, path, tile, batch, precision and enabled controls.

Open the dedicated route →
The installed MultiDiffusion extension does not activate

Do not treat the core SD upscale script and a third-party MultiDiffusion extension as one feature. Discussion #492 contains unresolved compatibility reports; test the extension against its own dated commit or use the verified core route.

Inspect the evidence ↗
09 · Progressive delivery

Keep each accepted image as a recoverable boundary

Progressive iteration is a testing strategy, not a promise of infinite detail.

01SOURCEuntouched baseline
02MODEST TARGETfirst artifact check
03DELIVERY TARGETonly after acceptance
COMMUNITY-REPORTED

A detailed community workflow uses SD Upscale and MultiDiffusion for very large targets. It demonstrates real user intent, not a native compatibility guarantee or a universal recipe. The core page keeps progressive checkpoints while separating the third-party extension boundary.

Read the dated community workflow ↗
Upscale reproduction receipt
RECORDED0 / 12 recorded
10 · Questions

Resolve the next decision without changing routes blindly

Answers preserve the boundary between code facts, dated reports and untested output quality.

Where is the image upscaler in Stable Diffusion WebUI Forge?

For an existing image, open Extras → Single Image. For a second pass during txt2img generation, enable Hires. fix. For tiled diffusion on an existing image, open Img2img and select the SD upscale script.

Should I use Extras, Hires. fix or SD upscale?

Use Extras when the finished image should remain the same composition. Use Hires. fix while generating when a larger second diffusion pass should add detail. Use SD upscale when an existing image needs diffusion processing in overlapping tiles.

How do I upscale an image without changing it?

Start with Extras, one pixel upscaler and Upscaler 2 visibility at 0. Do not use Hires. fix or SD upscale when any diffusion reinterpretation is unacceptable.

Does Extras run Stable Diffusion again?

The current Upscale post-processing script calls the selected pixel upscaler and optionally blends a second output. It does not perform the Hires. fix or SD upscale sampling pass.

Does Hires. fix add new detail?

It can, because current processing performs a second prompt-conditioned img2img pass after enlargement. The same process can also change faces, objects, layout, text or texture.

Is Hires. fix only for txt2img?

Its controls are constructed in the current Txt2img interface. The gallery upscale action can rerun Hires. fix on a selected txt2img result, while arbitrary existing images belong in Extras or Img2img.

Can I run Hires. fix on a selected gallery image?

Current code provides a txt2img gallery upscale function. It restores the selected result and seed, forces Hires. fix, and rejects grids or control images because their generation information is not a valid single-image source.

What is the difference between latent and pixel upscaling in Hires. fix?

A latent option interpolates the latent tensor. A named pixel upscaler decodes the first image, resizes pixels with that model, re-encodes them, and then runs the second diffusion pass.

What does denoising strength change during Hires. fix?

It controls the second img2img sampling pass. Lower values usually preserve more of the enlarged first pass; higher values allow more prompt-driven reconstruction. It is not a sharpness percentage.

What Hires denoising strength should I use?

There is no model-independent best value. Keep the first image, seed, prompt, target and upscaler fixed; compare separated probes and keep the smallest departure that produces the required detail.

What does Hires steps 0 mean?

In the inspected processing code, zero falls back to the first-pass sampling-step value. It does not disable the Hires sampling pass.

Can Hires. fix use another model or prompt?

Yes. Current controls can select another checkpoint, VAE / Text Encoder set, sampler, scheduler, Hires prompt, negative prompt, CFG and Distilled CFG. Empty Hires prompts reuse the first-pass text.

How does SD upscale work?

The script uses the selected upscaler to enlarge the source, splits the enlarged image into overlapping tiles using Img2img Width and Height, samples the tiles, then combines them into the result.

Where do I set tile size for SD upscale?

Use the Img2img Width and Height controls. The script itself states that those sliders set tile size; Scale Factor controls final enlargement and Tile overlap controls neighboring context.

What is the SD upscale overlap range?

The current script exposes 0–256 in steps of 16 and displays 64. That is an interface fact, not a promise that 64 prevents seams for every image.

Does tiled upscaling use less VRAM?

It avoids sampling the entire enlarged result as one diffusion canvas, but it does not guarantee a specific VRAM amount or prevent OOM. Model family, tile size, batch, precision and other controls still matter.

Why does doubling width and height feel much heavier?

A 2× scale in both dimensions creates 4× as many output pixels. A 4× scale creates 16× as many. Runtime and VRAM do not follow that ratio exactly, but the pixel workload explains why large jumps need caution.

Should I upscale directly to 4K or 8K?

Calculate the target first and prove a smaller pass. Progressive targets make the first failing boundary visible and preserve a usable intermediate result; they are not guaranteed to create more true detail.

What does Max side length do in Extras?

When a Scale by result would exceed the nonzero cap, current code recalculates dimensions so the longest side fits the cap and preserves the source ratio. Zero means no limit.

What does Crop to fit do?

Scale to first enlarges enough to cover the requested width and height. Crop to fit then takes a centered crop of that exact size, so edge content can be removed when aspect ratios differ.

Can I blend two upscalers?

Yes. Select Upscaler 1 and Upscaler 2, then raise Upscaler 2 visibility above 0. Forge blends the two complete upscaled images by that value.

What does Upscaler 2 visibility mean?

It is the blend amount for the second upscaled image, from 0 to 1 in 0.001 steps. It is not denoising, CFG or model confidence.

Which Forge upscaler is best for photos or anime?

The original code exposes installed choices but does not define a universal winner. Compare the same representative crop, target and source; judge faces, linework, gradients, halos and texture at 100%.

Why is an upscaler missing from the list?

Some model groups are controlled in Settings, and custom upscaler files or extensions have their own paths and compatibility. Verify the model name, file location, console and current code before copying a fork-specific installation procedure.

Can Forge batch upscale images?

Extras exposes Batch Process and Batch from Directory. Prove one file first, preserve originals and verify naming, output directory, scale, crop and selected upscalers before starting the batch.

Where are Extras upscaled images saved?

The current default path is outputs/extras-images unless the saving-path settings were changed. Batch directory mode can use an explicit output directory when server-directory controls are visible.

Why is my upscaled image larger but worse?

More pixels do not guarantee more source information. Identify the route, then inspect whether the failure is pixel-model smoothing or halos, Hires drift, or tiled seams and repetition.

Does SD upscale preserve the same seed across tiles?

The script fixes the starting seed, then advances seeds as tile batches are processed and restores iteration behavior for multiple outputs. Record the seed and full script settings; do not describe every tile as one identical noise draw.

Does SD upscale support Batch count?

The latest inspected main commit is specifically titled “Fix SD upscale Batch count.” Current code stores the requested iteration count, processes each upscale and restores it after the tiled job.

Does FLUX work with latent Hires upscaling?

An August 2024 owner comment reports that FLUX did not work well with Latent upscale in that tested setup. This is a stale snapshot, not a universal current compatibility guarantee; compare a pixel upscaler on your recorded model package.

Is MultiDiffusion built into the same SD upscale route?

No claim of equivalence is safe. The verified core script is scripts/sd_upscale.py. MultiDiffusion is a separate extension discussed in dated compatibility reports and must be versioned independently.

How do I make an upscale reproducible?

Save the source and every accepted intermediate; record Forge commit, route, dimensions, scale, upscalers, blend, model package, prompt, seed, sampling controls, denoising, tile size, overlap, batch and the exact result used for another pass.

11 · Evidence ledger

What this page verifies—and what remains local

The workspace SEO book alone governs methodology; product facts come from the original Forge boundary.

VERIFIED · Current original Forge code
COMMUNITY-REPORTED · Real problems and workflows
STALE SNAPSHOT · Dated demonstrations
UNKNOWN

No GPU image generation was run in this workspace. A universal best upscaler, safe 4K/8K target, artifact-free overlap, runtime or VRAM number is therefore not claimed. The page supplies a reproducible local test instead.

AUTHORForge Field Guide team
REVIEWEREvidence desk
ENVIRONMENTOriginal main · dfdcbab
UPDATED28 Aug 2026