👁️ Show Any
See what's actually on that wire — without breaking the graph
- source
- *
Every ComfyUI user eventually hits the same moment: a node upstream is producing something, and you have no idea what. Is that conditioning actually wired? Is this prompt string empty? Is this latent the size you think it is? 👁️ Show Any is the answer - a universal data inspector you drop onto a wire like a debug print. The name undersells the useful part: it shows you what's flowing through, and then hands the exact same object on to whatever's next, so you can spy on a connection without rerouting your graph.
It comes from the FiL_Design_ImageMind pack (the GitHub repo was renamed from FiL_LLM; the old URL still redirects). The pack is best known for its LLM and vision nodes, but this one is pure plumbing - no API calls, no keys, no model downloads. It's genuinely niche and the community hasn't written much about it yet, which is a shame because "show me what this wire carries" is a need every beginner has.
How it works
Show Any sniffs whatever you plug into its source input and renders a readable summary of it in its panel:
- Text shows as-is; numbers and booleans get formatted.
- Latents get a real breakdown - batch/channel/height/width, the pixel-equivalent resolution (
H×8 × W×8), whether a noise mask is present, dtype and device. - Image tensors show resolution and channel count plus the min/max value range - handy for spotting a black or corrupted tensor at a glance.
- Masks (3D tensors) get a preview too, expanded to RGB.
- Conditioning lists the chunk count, vector shape and pool keys - enough to see whether two conds are even comparable.
- JSON-ish dicts/lists get pretty-printed with an item count.
- MODEL / CLIP / VAE objects report their class and module rather than pretending to show you weights.
Images and masks get a real rendered preview (it reuses ComfyUI's own PreviewImage path), pushed live to the node's panel over a websocket as the queue runs. There are word/character counters on text and a one-click copy button, which makes it a passable lightweight text viewer too: leave source unconnected and type into the text widget instead.
The only inputs are source (ANY) and text (the fallback used when nothing's wired); the single output is * - the original object, passed through untouched. Because Show Any is an output node, ComfyUI runs it every queue regardless of caching, so it's always fresh. That's exactly what you want while debugging - and a reason to delete it when you're done, rather than leaving five inspectors in a batch workflow you run daily.
Using it in practice
Stick it between the node you suspect and its consumer. Prompt not behaving as typed? Put it on the STRING wire and read exactly what left the node. Latent resolution mysteriously wrong? It'll show you the shape and the pixel equivalent without you having to do VAE-decode math. Because the pass-through is untouched, adding one mid-graph changes nothing downstream - the worst case is a slower run while it's in place.
One honest caveat in the spirit of the community's gripe with "ANY" nodes: this socket type-erases - ComfyUI can't type-check anything wired into source, so Show Any is a debug tool to slot in and remove, not a permanent citizen of a clean graph.
Installing it
It's part of the FiL_Design_ImageMind pack:
cd ComfyUI/custom_nodes
git clone https://github.com/FiL-Design-Ai/FiL_Design_ImageMind.git
pip install -r FiL_Design_ImageMind/requirements.txt
Or search FiL_Design_ImageMind in ComfyUI Manager and install, then restart. The pack needs ComfyUI 0.3.60+ (V3 node API) and Python 3.10–3.12 - if the node doesn't appear after install, that's almost always the ComfyUI version, so update it first. Dependencies are minimal (requests, aiohttp, PyYAML, Pillow, numpy, pydantic) and none of them are exotic; the pre-built frontend ships in the repo, so no Node.js is needed on your end.
Troubleshooting
- Empty panel when you expected text means nothing is connected and
textis blank - wire a source or type a fallback. - No pixel preview for latents is by design: latents get the shape/resolution readout, not an image. Decode through a VAE node if you need to see the picture.
- Conditioning shows a summary, not content - that's normal; it can't be rendered as text.
- If Show Any sits in a workflow you share, recipients need the pack installed too - drag-and-drop workflows don't carry custom nodes.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| sourceopt | * | Any incoming data signal to inspect and pass through. | |
| textopt | STRING | Manual text fallback used when no source link is connected. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| * | * | The incoming source passed through untouched. |