Nodes/Smart Upscaler - Hallett/Output-Scale Tiles: AI or Standard Resize
ComfyUI Node

Output-Scale Tiles: AI or Standard Resize

The node that decides how big the picture gets and where the tiles fall

By HallettVisual·Created about a month ago·Updated about a month ago· 17
Output-Scale Tiles: AI or Standard Resize
  • image
  • upscale_model
  • upscaled_tiles
  • processing_preview
  • upscaled_image
  • blend_masks
  • tile_metadata_json
  • preflight_summary
upscale_methodAI upscaler model (ESRGAN, etc.)
min_tile_size1024
max_tile_size1536
overlap32
feather16
scale_factor2.00
divisible_by16
upscale_batch_size1
padding_modeedge
cache_moderead_write
cache_tagauto
preview_max_size1600

This is where you set the actual upscale. The Prompt Director decides what the job is; the Tile Planner decides how many times bigger the output is, how it's divided into tiles, how much the tiles overlap, and how the joins get feathered. In the shipped workflow it's the node with scale_factor sitting on it, and the README's first-run advice is basically "set that to 2 and press Run."

What it does

It takes your source image and does three jobs at once:

  1. Enlarges it - either with an AI upscaler model (ESRGAN-family) or a standard resize (Lanczos, bicubic, bilinear, area). The two families are different jobs in the KB's sense of the word: AI models can add detail but may round small objects like lettering or car wheels; standard resizing preserves source geometry and can't invent anything. Lanczos is the shipped default precisely because it needs no model and keeps geometry honest.
  2. Plans the tile grid - splits the enlarged image into overlapping tiles sized to your sampler, with overlap and feather set in final output pixels.
  3. Emits everything downstream needs - the tile batch, the blend masks, the tile metadata, a preflight summary, and a diagnostic preview showing the grid.

Every tile is cached to disk, so changing scale_factor and rerunning reuses the prompts and (where possible) the enlarged tiles. The cache is safe to delete; entries are reproducible.

Inputs that matter

  • upscale_method - AI upscaler model (ESRGAN, etc.) or one of the standard resize methods. The AI option requires an upscale_model wired in (a 4x model from OpenModelDB); the workflow ships on Lanczos so it runs with zero extra downloads. The README's warning about the ESRGAN loader: the shipped workflow deliberately leaves it unwired so a missing model can't refuse your run before it starts.
  • scale_factor - how many times larger the final image is, 1 to 12. The tooltip does the math for you: a 1340×896 source at 12x renders about 90 tiles. Start at 2.
  • min_tile_size / max_tile_size - processing tile size in final sampler pixels, 1024–1536 by default. Sampler tiles stay small so the working memory stays small; it's model weights that dominate VRAM, not tile size.
  • overlap / feather - seam controls. Going from 32/16 to 128/64 usually costs no extra tiles; the planner just makes each tile slightly larger. Check the preflight box before and after.
  • upscale_batch_size - tiles sent through an AI upscaler together. Default 1; lower this first if the enlarger runs out of VRAM. Ignored by standard resize methods.
  • padding_mode - edge repeats the outermost pixels for tiles past the border (right for photos); zero is for images with true black borders.
  • cache_mode / cache_tag - cache control; cache_tag is optional, since the upscaler weights are fingerprinted automatically.

Outputs: upscaled_tiles, processing_preview (the grid diagnostic), upscaled_image (the enlarged baseline, un-overlaid), blend_masks, tile_metadata_json, and preflight_summary (a string you can eyeball before committing to a 90-tile run).

Where it sits

upscaled_tiles, blend_masks, and tile_metadata_json feed SmartTileJobDirector (which cuts the exact tiles and hands each one its context) and later SmartTileFinalizer (which stitches using those same masks). The preview and preflight are your sanity checks before the expensive part starts.

Install

Via ComfyUI Manager (search "ComfyUI-Smart-Upscaler") or:

cd ComfyUI/custom_nodes
git clone https://github.com/HallettVisual/ComfyUI-Smart-Upscaler

then restart. Grab ComfyUI-KJNodes and rgthree-comfy too. No Python deps; the ~13 GB of models are listed in docs/MODELS.md, and none of them are needed just to run this node on Lanczos - that's the point of the default.

Gotchas

  • Missing-model workflow refusal. A loader pointing at a model you don't have stops the run before a tile is drawn. This is why the ESRGAN loader ships unwired.
  • High scale = long run. The tooltip's 90-tile example at 12x is not a typo. Use the one-tile test (SmartSamplerTileSelector) before committing.
  • VRAM on the enlarger. upscale_batch_size down first, then max_tile_size.
  • Seams visible in flat areas. That's usually the prompt (check the prompt log), not the planner - unless one tile is a different shade, which is the stitcher's cross_tile_consistency job. Raise overlap/feather if the geometry itself is showing.
CategorySmart Upscaler/Tiling

Inputs (14)

NameTypeDefaultDescription
imageIMAGE
upscale_methodCOMBOAI upscaler model (ESRGAN, etc.)AI models can add detail but may round small objects. Standard resize methods preserve source geometry and need no model.
min_tile_sizeINT1024256–4096Minimum processing tile size in final sampler pixels.
max_tile_sizeINT1536256–4096Maximum processing tile size in final sampler pixels.
overlapINT320–1024Total shared overlap in final sampler pixels.
featherINT160–512Blend fade width in final sampler pixels.
scale_factorFLOAT2.001–12How many times larger the final image is. High scales multiply tile count and time: a 1340x896 source at 12x renders about 90 tiles.
divisible_byINT161–256
upscale_batch_sizeINT11–16Tiles sent through an AI upscaler together. Ignored by standard resize methods.
padding_modeCOMBOedgeHow tiles that reach past the image border are filled before enlargement. Edge repeats the outermost pixels (right for photos - leave it here). Zero fills black, only useful for images with true black borders.
cache_modeCOMBOread_writeReuse enlarged tiles from disk, regenerate them, or skip the disk cache.
cache_tagSTRINGautoOptional cache label. The upscaler weights are fingerprinted automatically.
preview_max_sizeINT1600512–8192Maximum dimension of the output-scale diagnostic preview.
upscale_modeloptUPSCALE_MODELRequired only when the AI upscaler method is selected.

Outputs (6)

NameTypeDescription
upscaled_tilesIMAGE
processing_previewIMAGE
upscaled_imageIMAGE
blend_masksMASK
tile_metadata_jsonSTRING
preflight_summarySTRING