Top Upscale Models Selector (Auto-DL)
An Upscaler Dropdown That Downloads the Model You Picked, Right Then
- MODEL_NAME
Every ComfyUI beginner hits the same wall with Load Upscale Model: the dropdown is empty until you've manually gone to HuggingFace, found an ESRGAN .safetensors, and dropped it into models/upscale_models. Top Upscale Models Selector removes that step entirely. It presents six of the community's most-used upscale models as a dropdown, labels each one [AVAILABLE] or [DOWNLOADABLE], and - the punchline - if you queue with a [DOWNLOADABLE] model selected, it downloads the file for you before the run proceeds.
For a testing workflow it's genuinely handy: you can hand someone a workflow file and they don't need to source a single upscaler. Pick a model, hit queue, come back in a minute.
How it works
The dropdown isn't a static list. On startup the node scans models/upscale_models and checks each of its six registered models against the files already present, appending - [AVAILABLE] or - [DOWNLOADABLE] accordingly. When you queue with a missing model selected, the execution kicks off a download: a hardcoded HuggingFace URL per model, fetched with urllib using browser headers (to dodge redirect blocks), streamed in 1MB chunks with a progress bar, written to a .tmp file and renamed into place when done.
The six models, all real and all still in community circulation:
- 4x-UltraSharp - the general-purpose favorite
- 4xRealWebPhoto_v4_dat2 - the popular photo-real variant
- 4xNomos8kDAT and 4xNomos8k_atd_jpg - the Nomos8k pair
- 4x_NMKD-Siax_200k - the anime/illustration standard
- 4x-AnimeSharp - sharper anime alternative
The one output, MODEL_NAME (*), is the clean filename with the - [DOWNLOADABLE] suffix stripped - wire it straight into the model_name input of a Load Upscale Model. Because the node is flagged as an output node, it runs on every queue and prints a status line (Status: Downloaded successfully or Status: Model exists locally).
What these models are for
Keep expectations in check: this is the ESRGAN family, the "more pixels" rung of upscaling, not the generative one. These add no invented detail and can't hallucinate - they're fast, cheap, and right when your source is already sharp and you just need it bigger. If you're trying to restore a soft, damaged image, this is the wrong tool entirely; that's SeedVR2/SUPIR territory. The selector is for the pixel rung, and it's the right tool for that job.
Installing it
Part of MarwanDSAI/comfyui-mdsnodes. ComfyUI Manager: search "ComfyUI-MDSNodes", install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/MarwanDSAI/comfyui-mdsnodes
Restart after either route. No extra Python packages - requirements.txt is empty.
Gotchas
- The download blocks the queue. The first run with a
[DOWNLOADABLE]model selected can hang for a while - these are tens to hundreds of MB, downloaded single-threaded with no resume. The progress bar lives in the console, so check there if it looks frozen. - The URLs are hardcoded. If a HuggingFace link dies, you get a
FileNotFoundError("no download configuration") rather than a graceful retry. For the widely-mirrored models here that's unlikely but not impossible. - It installs into the first
upscale_modelsfolder path, so make sure that's the one ComfyUI's Load Upscale Model reads.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| model_name | COMBO | 4x-UltraSharp.safetensors - [DOWNLOADABLE] | Select an upscale model. If ending in [DOWNLOADABLE], clicking 'Queue Prompt' will auto-download it. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL_NAME | * | The clean model filename passed forward as a string/universal stream. to be connected to the model_name of the Load Upscale Model |