Bubba Upscaler (ESRGAN)
Bubba Upscaler (ESRGAN)
- pipe
- image
- metadata
- pipe
- image
- metadata
Bubba Upscaler (ESRGAN) does the "more detail, same face" half of upscaling. It runs your image through an ESRGAN-class model - loaded via the same spandrel mechanism ComfyUI core uses, so anything in models/upscale_models that spandrel can read works - and then optionally resizes the result to the exact scale you want. If you've ever wanted a 2x resolution bump with sharp detail that does not rewrite your subject, this is the node. It's the honest complement to diffusion upscalers: it invents no new content, it just enhances what's there.
The KB's upscaling essay draws the two halves of the field cleanly. There's "sharpen and enlarge" (the ESRGAN lineage - what this node is), and there's "redraw with diffusion" (tiled KSampler upscalers, SUPIR-style). They solve different problems. ESRGAN is fast, deterministic, and safe for faces; a tiled diffusion pass adds invented detail but can drift into patchwork territory without careful settings. Most real workflows use both - ESRGAN to get to the target size cheaply, diffusion to add detail on top. This node is the cheap half.
How it works
Three inputs: upscale_model_name (picked from whatever's in models/upscale_models), scale_by (0.1 to 16, default 1), and resize_method (the standard lanczos/bicubic/bilinear/nearest/area set). It runs the model, then resizes to your target. The key trick for that last resize is in the source's own docstring: a 4x ESRGAN model with scale_by set to 0.5 gives you a clean 2x. Run a 4x model raw and you're stuck at 4x output; the resize knob is what lets you use big models for their quality without committing to their native scale.
It's pipe-aware - wire in a pipe (or an explicit image and metadata) and the upscaled image comes back on the pipe output ready for the next Bubba node. Outputs: pipe, image, metadata.
The inputs that matter
upscale_model_name- your ESRGAN model. If you don't have one, grab a classic like 4x-UltraSharp or a 4x_REAL-ESRGAN variant; they're a few hundred MB and the community standard.scale_by- 1.0 (model's native scale) is the default; 0.5 with a 4x model is the move for 2x output.
How to install it
Same Bubba_Nodes pack install: ComfyUI Manager → "Bubba Nodes" → install → restart, or
cd ComfyUI/custom_nodes
git clone https://github.com/bubbafett5611/bubba_nodes.git
restart, pip install -r requirements.txt if needed. The model is the real dependency - this node does nothing until you drop an upscale model into ComfyUI/models/upscale_models/. The pack itself only needs aiohttp and pydantic; spandrel support comes from ComfyUI core. Requires ComfyUI v0.27.0+.
Gotchas
The classic failure: an empty upscale_model_name dropdown, because models/upscale_models is empty. Install a model first, then look at the node. The other common surprise is ESRGAN over-sharpening - 4x models applied to already-clean images can add that crunchy, plastic look, especially on skin. If it's too aggressive, back off to a 2x model or a lower scale_by. And remember the metadata note: this node passes metadata through but doesn't record the upscale in it, so if you want provenance of the upscale step itself, that lives outside the pack's metadata. The pack is young with no community discussion to speak of, so model choice is governed by the usual upscaler forum wisdom rather than Bubba-specific guides.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| upscale_model_name | COMBO | 0 options: | |
| scale_by | FLOAT | 1.000.1–16 | — |
| resize_method | COMBO | 5 options: lanczos, bicubic, bilinear, nearest-exact, area | |
| pipeopt | BUBBA_PIPE | — | |
| imageopt | IMAGE | — | |
| metadataopt | BUBBA_METADATA | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| pipe | BUBBA_PIPE | — |
| image | IMAGE | — |
| metadata | BUBBA_METADATA | — |