Topaz Labs Starlight Precise 2.5
Topaz's generative video upscaler, as a cloud ComfyUI node
- image
Topaz Labs is the commercial name in upscaling - Video AI and Photo AI are the paid baseline that open nodes keep trying to displace (one NVIDIA-node author famously dropped his Topaz subscription over it). Starlight is Topaz's generative video upscaler line, and "Starlight Precise 2.5" is the current tier served here. This node brings it into ComfyUI as a cloud call: you give it a video, a target width/height, and it returns the upscaled result. If you've been running Topaz Video AI as a separate app and wishing the results lived inside your ComfyUI workflow, this is that bridge.
Read that carefully though: this is a video upscaler - the required input is a video given as a URL or UUID string, not a ComfyUI VIDEO tensor. That's the first thing that'll trip you up, so let's get it out of the way. There's no VIDEO socket on this node; you need the video's address (see the pack's upload utility, or any hosted/public URL) typed into the video field.
How it works
It's an upscale-classified task in the pack, which means it rides the image-returning path: the output is an IMAGE tensor, even though the input is video. That's a quirk of how the pack classifies upscalers - worth knowing so you're not hunting for a VIDEO output that isn't there. The image output will contain the result as ComfyUI frames; how you use them (save as image, reassemble to video) is up to the rest of your graph.
Inputs that matter
video(required) - the input video as a UUID or URL string. This is the gotcha input: it is not a ComfyUIVIDEOsocket. You'll feed it a URL you have, or a UUID you got from uploading the video (the pack's upload flow / your Runware media). If your video lives as a tensor in the graph, you'll need to get its URL first.width- target output width (1–3840, default 1024).height- target output height (1–2160, default 1024). Note the tooltip: the aspect ratio is preserved by computing the upscale factor from the shorter edge - so you're really specifying a target size, and the model keeps the shape. Set one confidently; the other follows.fps- off-by-default gate withfps_value(15–120, default 15). Leave the gate off for the model default; flip it on if you need a specific output frame rate (minimum is 15 or the source's rate, whichever is higher).outputFormat- MP4 (default), WEBM, MOV.outputQuality- 20–99, default 95. Video files balloon fast at high quality on large upscales; don't max it unless you need it.ttl/ttl_value- only relevant to URL output; ignore.
The output is image (an IMAGE).
Installing
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt
Or ComfyUI Manager → search Runware → install → restart. API key via Settings, RUNWARE_API_KEY, or runware auth login.
The honest caveats
Three things to know before you commit. First, the input-wiring friction: no VIDEO socket, so plan how your video becomes a URL/UUID. Second, Topaz's generative upscaling adds plausible detail - and like every generative restorer, it can rewrite fine features and shimmer on repeated texture across frames; the KB's upscaling essay classifies this as the "more detail" job, not the "more pixels" job. Third, this is the paid-baseline option: you're paying Topaz's model per cloud call, so it only makes sense when you don't have (or don't want to use) a local path - an RTX-card node or a free model like SeedVR2 will do parts of this job for nothing. It's the right node when you specifically want Topaz's quality inside ComfyUI without the subscription app.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| video | STRING | Video input (UUID or URL). | |
| width | INT | 10241–3840 | Target output width. The aspect ratio is preserved by computing an upscaling factor using the shorter edge. |
| height | INT | 10241–2160 | Target output height. The aspect ratio is preserved by computing an upscaling factor using the shorter edge. |
| fpsopt | BOOLEAN | false | Enable to set fps. Off uses the model's default. |
| fps_valueopt | FLOAT | 15.0015–120 | Output frame rate. Minimum is 15 or the input video's frame rate, whichever is higher. |
| ttlopt | BOOLEAN | false | Enable to set ttl. Off uses the model's default. |
| ttl_valueopt | INT | 60 | Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`. |
| outputFormatopt | COMBO | MP4 | File format for the generated video. |
| outputQualityopt | INT | 9520–99 | Compression quality of the output. Higher values preserve quality but increase file size. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |