Nodes/Comfyui-zhenzhen/zhenzhen-topaz-upscale-fal
ComfyUI Node

zhenzhen-topaz-upscale-fal

Topaz-grade upscaling and video enhancement, inside ComfyUI

By T8mars·Created about a year ago·Updated 2 days ago· 740
zhenzhen-topaz-upscale-fal
  • image
  • video
  • image
  • video
  • response
  • url
modeimage
image_url
video_url
api_key
image_modelStandard V2
video_modelProteus
upscale_factor2.0
output_formatjpeg
subject_detectionAll
crop_to_fillfalse
face_enhancementtrue
face_enhancement_creativity-1.00
face_enhancement_strength0.80
sharpen-1.00
denoise-1.00
fix_compression-1.00
strength-1.00
creativity0
texture0
prompt
autopromptfalse
detail-1.00
target_fps0
compression-1.00
noise-1.00
halo-1.00
grain-1.00
recover_detail-1.00
h264_outputfalse
image_waybase64
video_wayupload
poll_interval6
max_poll_attempts600
skip_errorfalse

The upscaling story in ComfyUI is usually "download an ESRGAN model and run it locally," and for stills that's still the right move. But the moment you want video enhancement - or the kind of heavy model-based restoration Topaz is known for - local gets expensive fast, and that's exactly what Comfly_topaz_upscale_fal is for. It's the pack's FAL route to the full Topaz model lineup: a bunch of image models (Standard V2, High Fidelity V2, Recovery, Redefine, Wonder…) and a wall of video models (Proteus, Artemis, Nyx, Gaia, Starlight…), all pay-per-call through the fal queue.

Think of it as the API answer to the upscaling doc's three-way split: it covers "more pixels," "more detail," and "more pixels over time" - but the video half is where this node has no realistic local competitor for most people. It returns both IMAGE and VIDEO tensors, so it drops into any workflow.

The inputs that matter

  • mode - image or video. Picks which model list applies.
  • image / video (or image_url / video_url) - the source. Wire a tensor in or paste a hosted URL.
  • image_model - defaults to Standard V2, the safe general-purpose pick. High Fidelity V2 for photos, Recovery/Recovery V2 for restoring old or damaged shots, Redefine for generative upscaling (it takes prompt, strength, creativity, texture).
  • video_model - Proteus (default) is the all-rounder; Nyx line for fast clean-ups, Artemis for quality, Gaia for animation/CGI, Starlight for sharpening.
  • upscale_factor - 1.0–8.0, 2.0 default. This drives the bill as much as the quality.
  • face_enhancement - on by default; paired with face_enhancement_creativity and face_enhancement_strength. Great for portraits, and easy to overshoot - start mild.
  • sharpen / denoise / fix_compression / recover_detail / halo / grain - the fine-tuning sliders. They default to -1, which means "let the API decide" - and honestly that's the right default for most jobs. Only reach for these when a specific artifact bothers you.
  • target_fps - 0 = unset; setting it enables frame interpolation (the "make 24fps feel like 60fps" trick).
  • prompt - only used by the Redefine models, which generate new detail.
  • h264_output - off by default; turn on if you need an H.264 delivery file.

Outputs: image, video, url, and response. Only the output for your mode is meaningful - the other comes back empty.

Installing it

cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen

or ComfyUI Manager (search "Comfyui-zhenzhen"), restart. Paste a zhenzhen token (overseas https://ai.t8star.org) into api_key. No models to download - this is a pure API node, though a serious video upscale job will put a dent in your credits.

Common issues

  • The one output you need is empty - you're reading the wrong output for your mode. Image mode fills image; video mode fills video.
  • Video upscale is slow and pricey - a 1080p→4K video job is the most expensive thing in this pack. It's queue-based and can take a while; raise max_poll_attempts and don't re-run out of impatience.
  • Faces look plastic - face_enhancement overshot. Dial face_enhancement_strength down or turn it off entirely for non-portraits.

The honest framing: for a single still image, a free local ESRGAN is probably the better call. But for video, or for the heavy Redefine-style restoration, this node is where "just make it look better" actually gets solved - and it's the only upscaler in this pack that does video at all.

Categoryzhenzhen/FAL

Inputs (36)

NameTypeDefaultDescription
modeCOMBOimage2 options: image, video
imageoptIMAGE
videooptVIDEO
image_urloptSTRING
video_urloptSTRING
api_keyoptSTRING
image_modeloptCOMBOStandard V210 options: Low Resolution V2, Standard V2, CGI, High Fidelity V2, Text Refine, Recovery, +4
video_modeloptCOMBOProteus19 options: Proteus, Artemis HQ, Artemis MQ, Artemis LQ, Nyx, Nyx Fast, +13
upscale_factoroptFLOAT2.01–8
output_formatoptCOMBOjpeg2 options: jpeg, png
subject_detectionoptCOMBOAll3 options: All, Foreground, Background
crop_to_filloptBOOLEANfalse
face_enhancementoptBOOLEANtrue
face_enhancement_creativityoptFLOAT-1.00-1–1-1 leaves API default/unset.
face_enhancement_strengthoptFLOAT0.80-1–1-1 leaves API default/unset.
sharpenoptFLOAT-1.00-1–1-1 leaves API default/unset.
denoiseoptFLOAT-1.00-1–1-1 leaves API default/unset.
fix_compressionoptFLOAT-1.00-1–1-1 leaves API default/unset.
strengthoptFLOAT-1.00-1–1Text Refine only; -1 leaves unset.
creativityoptINT00–6Redefine only; 0 leaves unset.
textureoptINT00–5Redefine only; 0 leaves unset.
promptoptSTRINGRedefine prompt.
autopromptoptBOOLEANfalse
detailoptFLOAT-1.00-1–1Recovery V2 only; -1 leaves unset.
target_fpsoptINT00–1200 leaves unset. Setting FPS enables frame interpolation.
compressionoptFLOAT-1.00-1–1-1 leaves API default/unset.
noiseoptFLOAT-1.00-1–1-1 leaves API default/unset.
halooptFLOAT-1.00-1–1-1 leaves API default/unset.
grainoptFLOAT-1.00-1–0.1-1 leaves API default/unset.
recover_detailoptFLOAT-1.00-1–1-1 leaves API default/unset.
h264_outputoptBOOLEANfalse
image_wayoptCOMBObase642 options: base64, image_url
video_wayoptCOMBOupload2 options: upload, video_url
poll_intervaloptINT61–60
max_poll_attemptsoptINT60010–3600Default 600*6s = 3600s timeout.
skip_erroroptBOOLEANfalse

Outputs (4)

NameTypeDescription
imageIMAGE
videoVIDEO
responseSTRING
urlSTRING