ComfyUI_UltimateSDUpscale wraps an Automatic1111 script and ships its source as a submodule
ComfyUI nodes for the Ultimate Stable Diffusion Upscale script by Coyote-A.
At a glance
- What is it?
- A Python ComfyUI custom node that ups large images by running diffusion in tiles, so the working resolution stays at the size the model was trained on. It is a wrapper rather than a reimplementation, and the packaging metadata, the four install paths and the one version number each tell a slightly different story.
- Who is it for?
- Treat ComfyUI_UltimateSDUpscale as a packaging project with a UI attached. If you need to know what a parameter does, the answer is in the upstream wiki written for a different interface, and the copy of the upstream script under repositories/ is what determines the behaviour rather than this repository's own files.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 106 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 5, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Tiled diffusion at the size the model was trained on
The idea is narrow. Instead of handing a large image to the model whole, this node runs the image-to-image diffusion process in tiles, so the working resolution is the size the diffusion model was trained on rather than the size of the picture. The stated benefits follow from that one decision: detail that upscaling normally loses comes back, because the model is doing the work instead of an interpolation step, and the hardware requirement drops, because the peak working image is a tile rather than the full frame.
That also explains the dependency. This is not a new upscaler. It is ComfyUI nodes for the Ultimate Stable Diffusion Upscale script by Coyote-A, the same script written for the Automatic1111 Web UI, and the ComfyUI web page for that script is listed in the references alongside the ComfyUI page itself.
The practical consequence shows up in where you look things up. The nodes sit in the node menu under image/upscaling, documentation ships in the js/docs/ folder, and the same documentation is viewable inside the application by right-clicking a node and picking the info icon. Details about most of the parameters are not in any of those. They are a link away, into the FAQ of the upstream repository's wiki, on a page written for the other interface.
Four install paths, and the word latest means something different in each
There are four ways in, and they are not equivalent.
The git path is the only one with a prerequisite spelled out. Git must be installed, verified by running git -v, and the clone runs from a terminal already sitting in ComfyUI/custom_nodes/:
git clone https://github.com/ssitu/ComfyUI_UltimateSDUpscaleThe ComfyUI Manager path needs the manager installed, then a search for UltimateSDUpscale in the Custom Nodes Manager, a choice of latest for the most up to date version, and a restart of ComfyUI when prompted. The comfy-cli path is one command, comfy node install comfyui_ultimatesdupscale. The manual path is a zip from the Comfy registry, or the green Code button on the repository page for the current nightly, extracted into a folder you create yourself inside ComfyUI/custom_nodes/.
So latest means the manager's newest entry in one case, a chosen registry version in another, and the unversioned tip of the default branch in the third. Note also what none of the four states: a minimum ComfyUI version.
The upstream script arrives as a submodule and is bundled into the package
The tree carries a .gitmodules file and a repositories/ directory, and the packaging metadata says exactly what goes into the Comfy package:
[tool.comfy]
PublisherId = "ssit"
DisplayName = "ComfyUI_UltimateSDUpscale"
Icon = ""
includes = ["/repositories/ultimate_sd_upscale/"]So the upscaling code is not reimplemented here. It is fetched from Coyote-A's repository and carried along, and the includes line is what tells the Comfy packaging step to ship that directory as part of the node.
That is a sensible arrangement, and it splits responsibility in a way worth understanding before you go looking for bugs. Behaviour that surprises you may live in the vendored copy under repositories/ultimate_sd_upscale/ rather than in usdu_nodes.py or usdu_utils.py, and the GPL-3.0 licence on this repository is a statement about this repository. What it covers for the vendored code is not something this repository's own files answer.
It also has an install consequence. Of the four paths, only the git clone fetches submodule content. The manager, the comfy-cli command and the manual zip extract have no submodule step at all, and the guide does not add one for them.
The version number exists in one file and no GitHub release backs it
The packaging file is the whole of the version story:
[project]
name = "comfyui_ultimatesdupscale"
description = "ComfyUI nodes for the Ultimate Stable Diffusion Upscale script by Coyote-A."
version = "1.7.2"
license = { file = "LICENSE" }The repository publishes no GitHub releases. There is no tag series to compare against, and no changelog at the top level. The number 1.7.2 exists in this file and, if you are installing through the registry, as a listed version you choose between. Everywhere else the answer is whatever the default branch happens to hold.
The naming is worth reading twice, because three spellings are in play. The distribution name is comfyui_ultimatesdupscale, which is also the slug on the Comfy registry and the argument comfy-cli expects. The directory the node actually lives in is ComfyUI_UltimateSDUpscale, capitalised, and that is the name the package finder is pinned to:
[tool.setuptools.packages.find]
where = ["."]
include = ["ComfyUI_UltimateSDUpscale"]So the import path and the install argument are not the same string, and the guide uses the lowercase one for the command and the capitalised one for the folder you create by hand.
config.json.example ships at the root and the guide never mentions it
Among the top-level entries there is a file called config.json.example, sitting between __init__.py and crop_model_patch.py. It is the only file of its kind in the root, and the word example in the name implies a second file that is not in the tree.
Nothing in the guide refers to it. The installation section covers four ways to get the files into ComfyUI/custom_nodes/, the usage section covers the node menu, the docs folder and the info icon, and the references section links out. No step says to copy config.json.example to config.json, no step says which directory the copy belongs in, and no key inside it is described anywhere.
That is a real gap rather than a formatting complaint. A file whose name ends in .example is normally a template for a configuration the user is expected to create, and if the node reads such a file, then a user who installs and never copies it is running with defaults they did not choose and cannot see. The rest of the root tells you the same thing about the shape of the code: usdu_nodes.py and usdu_utils.py hold the node and its helpers, usdu_patch.py and crop_model_patch.py and gradio.py are patch files, and modules/ and js/ hold the rest.
The registry publisher id is not the account name
Two small metadata facts sit in the same block of the packaging file. The Comfy registry publisher id is ssit, while the repository account is ssitu, so the identity shown to registry users is the account name with its last letter removed. Nothing in the guide explains the difference or points at where the link between them is configured.
The second is Icon, set to an empty string. The display name is filled in, the publisher is filled in, the package contents are filled in, and the icon is left blank, which is what a registry listing will render without artwork.
These are cosmetic in the way a version number is cosmetic, and they matter in the same way: they are the fields a user reads to decide whether the thing in the manager list is the thing in the repository. If you are auditing where a node comes from before letting it execute, these are the fields to check, alongside the licence, which the packaging file points at as a file rather than quoting.
A test suite with a pytest floor nobody is told to install
There is a test/ directory in the tree and an optional dependency group in the packaging file that exists to run it:
[project.optional-dependencies]
test = [
"pytest>=9.0.0",
"pytest-cov>=7.0.0",
]Both floors are high. The declared minimum is pytest 9 and coverage tooling 7, and the extra is called test, so it is installed on request rather than by default. The guide contains no instruction for running the suite, no mention of the test directory, and no command to trigger it.
The last recorded change to the repository is dated 2026-06-22. What that date does not tell you is which ComfyUI versions the nodes are exercised against, and the absence of a stated minimum ComfyUI version means the compatibility question is left to whoever is running the nodes. If you are installing this into an existing setup, that is the gap to close first.
Editorial conclusion
Treat ComfyUI_UltimateSDUpscale as a packaging project with a UI attached. If you need to know what a parameter does, the answer is in the upstream wiki written for a different interface, and the copy of the upstream script under repositories/ is what determines the behaviour rather than this repository's own files. Two things to check before installing: whether your ComfyUI setup can reach the registry or GitHub without git, and whether config.json.example is meant to be edited, since the guide never says. There is a single declared version, no releases, and no stated minimum ComfyUI version, so pin what you install and keep your own copy of the settings that matter.
Frequently asked questions
How do I install ComfyUI_UltimateSDUpscale?
Four ways are given. Clone it into ComfyUI/custom_nodes/ with git, install it from ComfyUI Manager by searching for UltimateSDUpscale, run comfy node install comfyui_ultimatesdupscale, or extract a zip from the Comfy registry or the repository's Code button into a folder you create inside ComfyUI/custom_nodes/.
Where are the ComfyUI_UltimateSDUpscale node parameters documented?
Parameter descriptions live in the FAQ of Coyote-A's ultimate-upscale-for-automatic1111 wiki, a page written for the Automatic1111 Web UI. This repository also ships documentation in the js/docs/ folder, which can be viewed in the application by right-clicking a node and selecting the info icon.
Where does ComfyUI_UltimateSDUpscale get the upscaling code from?
The upstream script is vendored rather than reimplemented. The tree carries .gitmodules and a repositories/ directory, and the Comfy packaging metadata includes /repositories/ultimate_sd_upscale/ in the node it ships.
What version of ComfyUI_UltimateSDUpscale is current?
pyproject.toml declares version 1.7.2, and the repository publishes no GitHub releases. The Comfy registry lists versions to choose from, while the green Code button is described as giving the current nightly.
Can I use ComfyUI_UltimateSDUpscale without installing git?
Yes. ComfyUI Manager, comfy-cli and a manual zip extract all avoid a clone. Only the git path carries submodule content, and none of the other three has a submodule step.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/ssitu-comfyui-ultimatesdupscale)