Nodes/KJNodes for ComfyUI/Model Preview Override
ComfyUI Node Runs on cloud

Model Preview Override

Full-resolution live previews during sampling

By kijai·Created 3 years ago·Updated 3 days ago· 3,030
Model Preview Override
  • model
  • vae
  • MODEL
max_resolution1024
jpeg_quality80
suppress_default_previewtrue
preview_frames1
preview_fps12

ComfyUI's built-in live preview - the little image that updates as the sampler runs - is capped at 512px. On a modern high-res model that means you're squinting at a thumbnail to judge whether a gen is going anywhere. This node replaces that preview with a dedicated frame on the node itself, at full sampler resolution, so you can actually see what's cooking before it finishes. Given how much you learn from watching a bad gen fail early, this is a genuinely nice quality-of-life patch - and its click-through rate suggests plenty of people go looking for it.

What it fixes

Straight from the node's description: the default ComfyUI preview caps at 512px, and this node "sends its own preview straight to a DOM widget on the node so pixel-space models (Chroma Radiance, ZImage, HiDream-O1, …) can be previewed at full sampler resolution." The pixel-space bit matters. Some newer architectures work in pixel space rather than a compressed latent, and for those the default low-res preview is especially unhelpful. This gives them a proper preview window docked on the node.

It's a model patch - MODEL in, MODEL out - so you slot it in the model line before your sampler, and the preview shows up on this node's body while sampling runs. The generation itself is unchanged; only what you see mid-run is upgraded.

The inputs that matter

  • max_resolution (default 1024) - the ceiling for the preview's size. Raise it to preview big gens at higher fidelity; higher means a bit more overhead pushing the preview to the browser.
  • suppress_default_preview (default true) - hides ComfyUI's built-in 512px preview so you're not looking at two. Leave it on.
  • jpeg_quality (default 80) - the preview is sent as JPEG; this trades preview crispness against how much data streams to the browser each step. 80 is a fine balance.
  • preview_frames (default 1) and preview_fps (default 12) - for video models, how many frames to show and at what playback rate, so you get a moving preview of a clip rather than a single still.
  • vae (optional) - supply a VAE so latent-space models can be decoded to a viewable image for the preview.

The output is the MODEL, passed through with the preview behavior attached.

How to install it

It's in kijai's KJNodes pack.

  • ComfyUI Manager - search KJNodes for ComfyUI, install, restart.
  • Manual - cd ComfyUI/custom_nodes && git clone https://github.com/kijai/ComfyUI-KJNodes, then pip install -r ComfyUI-KJNodes/requirements.txt, restart.

No model download for the node itself, though you may want to point the optional vae input at a VAE you already have.

Common issues & troubleshooting

No preview shows up. Make sure previews are enabled in ComfyUI at all (the global preview method setting), and that this node is actually in the active model path feeding your sampler. If it's patched onto a model branch the sampler isn't using, nothing renders.

Latent-space model shows garbage or nothing. Latent models need decoding to be viewable - connect a VAE to the optional vae input so the preview has something to turn the latent into. Pixel-space models don't need this.

Previews lag or stutter the browser. Every step ships a JPEG to the frontend; at high max_resolution, high jpeg_quality, and many preview_frames, that's a lot of data per step over the wire. Turn one of those down - dropping jpeg_quality or max_resolution is the quickest relief, especially on a remote/tunnelled ComfyUI.

Both previews appear. suppress_default_preview got turned off - flip it back on to hide the stock 512px one.

CategoryKJNodes/sampling

Inputs (7)

NameTypeDefaultDescription
modelMODELModel to attach the preview override to.
max_resolutionINT10240–8192Max preview side in pixels for the live widget. 0 = full sampler resolution (no downscale).
jpeg_qualityINT8030–100JPEG quality for the live preview transport.
suppress_default_previewBOOLEANtrueSuppress the standard sampler-node preview overlay while sampling, so only this node's frame updates. Progress bar still advances normally.
preview_framesINT11–1024Frames to sample from each video step's latent for animated preview. 1 = single frame (current behavior, fastest). >1 = animated WebP playing back at preview_fps. Only applies to video models (5D latents); ignored for image models.
preview_fpsINT121–60Playback FPS for the animated WebP preview. Ignored when preview_frames=1.
vaeoptVAEOptional LTX VAE for true-RGB previews. TAEHV-LTX = fast tiny decode (VAE pinned to GPU). Any other LTX VAE = full-quality decode via vae.decode() — MUCH slower per step.

Outputs (1)

NameTypeDescription
MODELMODELModel with preview override attached.