👁️ Preview Type
The 'what am I actually holding?' debug node
- any
Half of ComfyUI debugging is just figuring out what a socket is actually carrying. You connected a node, it errored with a type mismatch, and the error message might as well be in Klingon. The 👁️ Preview Type node is the "put a label on it" tool: wire anything into its single any input and it tells you, in plain words, what type of thing arrived and a bit of detail about it. That's all it does, and it's remarkably handy for it.
What you get in the node's display is a type name and a detail line. The type detection is thorough - the source walks Python types and ComfyUI conventions:
- IMAGE →
batch: 4 size: 512×512 ch: 3(a 4D tensor, dims decoded) - MASK → batch and size (3D tensor, no channel)
- LATENT → batch, spatial size, and channels (a dict with a
sampleskey) - STRING / INT / FLOAT / BOOLEAN → value or length
- DICT → key count plus a few keys
- LIST → it inspects the first element, so you get
STRING_LIST,IMAGE_LIST,MASK_LIST,BOOLEAN_LIST, and evenCONDITIONING(a list of tensor+dict pairs - the classic positive/negative prompt structure)
The conditioning detection is the sleeper here. CONDITIONING objects are the least intuitive thing in a ComfyUI graph, and this node will tell you "yes, that's a conditioning list, count: 2" instead of you guessing from the wire color.
It has no outputs. None. It's a pure terminal node (marked OUTPUT_NODE = True), which means two things: it's meant to sit at the end of a wire and look, and - because it's an output node - it forces the chain upstream of it to execute. Same as a Preview Image node. So it's a live inspection point, not a passive one; if the thing feeding it isn't running, the type preview won't update either.
That last point is the thing to internalize, because it's both a feature and a trap. Feature: drop PreviewType mid-graph and the upstream chain runs on demand, so you can inspect intermediate values that would otherwise be cached away. Trap: it's always dirty (IS_CHANGED → NaN, like the rest of this pack), so it'll keep that upstream chain running on every queue - if you park it in front of a heavy node and forget it, you've turned on the "always compute" switch for that whole branch. When you're done inspecting, disconnect it rather than leaving it as a permanent witness.
The obvious comparison is the pack's other preview node, 🖥️ Universal Preview. They overlap, but they're different tools: Universal Preview renders images to the screen and plays audio inline - it's for seeing the data. Preview Type doesn't render anything; it just tells you the type and shape. If you're debugging "why won't these connect," Preview Type is the sharper instrument; if you want to look at the actual pixels, use Universal Preview. For troubleshooting type mismatches specifically, this one is faster - the answer is in the node title, not in a rendered image.
Installation is pack-level and boring:
cd ComfyUI/custom_nodes
git clone https://github.com/playboy-dongan/ComfyUI-Logic-nodes
or ComfyUI Manager → search "ComfyUI-Logic-nodes" → restart. No models, no dependencies.
Every workflow builder ends up with a "what is this" habit. This node makes that habit one drag-and-drop instead of a trip to the console.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| any | * | — |
Outputs (0)
No outputs