Model Preview Override
Full-resolution live previews during sampling
- model
- vae
- MODEL
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) andpreview_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, thenpip 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.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | Model to attach the preview override to. | |
| max_resolution | INT | 10240–8192 | Max preview side in pixels for the live widget. 0 = full sampler resolution (no downscale). |
| jpeg_quality | INT | 8030–100 | JPEG quality for the live preview transport. |
| suppress_default_preview | BOOLEAN | true | Suppress the standard sampler-node preview overlay while sampling, so only this node's frame updates. Progress bar still advances normally. |
| preview_frames | INT | 11–1024 | Frames 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_fps | INT | 121–60 | Playback FPS for the animated WebP preview. Ignored when preview_frames=1. |
| vaeopt | VAE | Optional 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)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | Model with preview override attached. |