Nodes/ComfyUI_CineStyle/CS Preview Any
ComfyUI Node

CS Preview Any

The one-node debug probe ComfyUI never shipped

By chflame163·Created 11 days ago·Updated a day ago· 49
CS Preview Any
  • source
  • output

Every ComfyUI user eventually hits the same wall: you have no idea what's actually coming out of that node, and the stock preview nodes only speak image. CS Preview Any is the workaround - plug anything into its source input and it figures out what it's looking at and shows you something useful. A video batch gets a video preview. A mask gets a mask preview. Audio gets a waveform. A string, a number, a boolean gets its value printed. A latent gets a metadata readout of shape, dtype, device, channel layout, statistics. Lists and dicts get a length plus per-item breakdown. And the one thing it never does is get in the way: it passes whatever you fed it straight through on output, unchanged.

That passthrough is the feature that makes it a real debugging tool rather than a dead-end display node. You can drop CS Preview Any in the middle of a wire - say, between a segmenter and the composite it feeds - run the graph, inspect what's flowing at that exact point, and leave the node in place or delete it without disturbing anything downstream. It's the ComfyUI equivalent of a print() statement that also renders a picture. In a 70-node graph where "which one is producing garbage" is the question, this is how you bisect the answer.

How it works

The input is a wildcard (* type, so it accepts anything ComfyUI can pass), and the node decides what to do at runtime by inspecting the value. Video is the interesting case: ComfyUI's native image preview can't show video, so the node renders a temporary preview - capped at about 1 megapixel and 25 fps to stay cheap, but keeping the full duration. That's a downscaled preview, not your actual pixels; if you need a full-res copy, save it with CS Save Video instead. Because it's an output node, it always executes, which is exactly what you want from a probe - you don't want the thing you're debugging to get cache-skipped. Text goes through a separate viewport that reports types, tensor shapes, batch sizes, and the like, so even when there's nothing visual to show, there's still something to read.

Inputs and output

  • source - any ComfyUI value, including OUTPUT_IS_LIST values (it'll handle a list of items and preview each).

  • output - a passthrough of whatever you put in, byte-for-byte identical. Wire this onward if you're probing mid-graph.

That's the entire interface. There's nothing to configure, which is the point.

When you'd actually use it

Three situations. First, peeking at a video batch - the only way to eyeball frames mid-workflow without adding a save node. Second, debugging a latent or an unfamiliar type when you can't tell what a node emits. Third, as a permanent "monitor" node on a long video workflow, so every run shows you the state at a stage you care about. It reads as a Utility/plumbing node, and it fills the "illegibility" gap that the whole category exists to fight.

Install is the shared pack drill: ComfyUI Manager, search "ComfyUI_CineStyle", or cd ComfyUI/custom_nodes && git clone https://github.com/chflame163/ComfyUI_CineStyle, restart, and find it under 😺dzNodes/CineStyle. It's built on ComfyUI's newer node API, so update ComfyUI if it doesn't show up. No models, no heavy dependencies - just a preview and a pass-through. The pack is very new, so treat this as a fresh tool rather than community-vetted lore, but the node is simple enough that "it just works" is a reasonable expectation.

Category😺dzNodes/CineStyle

Inputs (1)

NameTypeDefaultDescription
source*Any ComfyUI value, including OUTPUT_IS_LIST values.

Outputs (1)

NameTypeDescription
output*The input value passed through unchanged.