ꘇ image preview
Look at your image without writing a preview file
- image
- image
A preview that leaves no trace
ComfyUI already has Preview Image. ꘇ image preview is what you reach for when you want to see an image mid-graph without the standard preview's side effects - files in your temp directory, the preview-method setting in Comfy's options, and viewers that behave differently depending on which frontend you're on.
The trick is that it never writes a file. It encodes the frame in the backend, hands the browser a base64 data URL, and draws it in the node. Nothing lands in temp/, nothing shows up in an output folder, and there's nothing to clean up. For a node you'll sprinkle around a graph while debugging, that's the right default.
The mechanism
From the shipped source, in order:
- Take frame zero of the batch and scale it to 8-bit.
- Check whether the image has any real transparency. If the alpha channel isn't uniformly opaque, keep it and encode PNG; otherwise drop to RGB and encode JPEG at quality 85, because JPEG is much smaller and this is a preview.
- Thumbnail bilinear to your
preview_size- the default 512, in steps of 64, up to 2048. - Emit the data URL to the frontend, plus a timing value in milliseconds so you can see what the encode cost.
It's flagged not_idempotent, which is Comfy's way of saying "this node's output isn't a pure function of its inputs" - the right classification for a live view, and the reason it updates whenever something upstream executes rather than sitting on a cached result.
Passthrough preserves the entire batch. That's the important line, because it means the node is invisible to the rest of the pipeline: the image output is what you put in, all of it, not the downscaled preview. So the standard move is to wire it inline - texture → preview → next operator - and it costs you nothing but the encode.
Inputs and outputs
image-IMAGE, required.preview_size- INT, default 512, 64–2048 in steps of 64. The only knob. Bigger is more legible and slower; 512 is a sensible ceiling for a sidebar-sized panel.image-IMAGEout, the untouched input batch.
It's an output node, so it always runs when you queue - you don't need to wire it to anything downstream. Which is also how you should treat it: a probe you leave in place.
One caveat that the pack's own docs are careful about: a frozen or minimised preview skips its local drawing work, but connected consumers and open output viewers keep receiving frames. Freezing a display is not the same as muting a branch.
Install
Genereti only. Manager → search Genereti (publisher liuboto) → install → restart → refresh the browser tab, because the display is a frontend extension and a stale page shows a blank box. Manual install:
cd ComfyUI/custom_nodes
git clone https://github.com/languel/genereti.git genereti
cd ..
./.venv/bin/python -m pip install -r custom_nodes/genereti/requirements.txt
Use ComfyUI's interpreter - .venv on a checkout, python_embeded\python.exe on Windows Portable, the bundled one on Desktop. The requirements file is one line (comfyui-frontend-package>=1.53.6), so this is not a heavyweight install: no model downloads, no inference server, no extra node packs. ComfyUI 0.38.2+ and Python 3.11+.
Worth saying plainly, since it's the natural objection: a node this simple does not require a 49-operator performance library. If all you want is a preview that avoids temp files, you're dragging in a lot of unrelated alpha code to get it. That's a legitimate reason to skip it and keep using Preview Image.
Gotchas
- It's still browser-side, despite the name. The name
LiveImagePreviewand the "no files" behaviour make it feel like a headless-safe node, but the display is JavaScript. Queueing from a headless/API client works - the node executes - you just don't see anything. - JPEG quality 85 on the preview. Don't use it to judge fine grain or noise. Look at the real output for that.
- Frame zero again. Batches pass through whole; the panel shows one.
- Alpha. The README says "super alpha - early classroom testing… back up your workflows before updating," and the pack has essentially no community discussion to fall back on. Its own docs are the best reference you'll get.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| preview_size | INT | 51264–2048 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |