NF Preview Selector
Pick keepers mid-queue with NF Preview Selector
- images
- latents
- selected_images
- selected_latents
- selection_indices
Every ComfyUI user hits the same wall: you queue up eight variants of a prompt, and then you have to deal with all eight. Either you upscale everything and sort through the results afterward, or you kill the queue, note which seed you liked, and re-run the whole thing. NF Preview Selector is the node that ends that loop. It pauses mid-queue, pops up a floating dialog over your screen, and lets you click the keepers before anything expensive runs on them.
The name is a lie in the best way - it's not a preview. It's a gatekeeper. The intended flow, straight from the README: generate a batch, pick your favorites, then process them with hires fixes or other enhancements. That's the classic "generate small, curate, then upscale the survivors" pattern, and this node makes the curate step a literal click instead of a memory exercise.
How it works
NF Preview Selector subclasses ComfyUI's core PreviewImage node, so it saves the incoming batch to your output folder (files get the NFPreview prefix) and renders them for the UI. But instead of stopping there, it ships the images to a floating dialog over ComfyUI's WebSocket channel and waits. While you decide, it moves the image and latent tensors back to CPU and clears VRAM - a small touch that matters if your review window overlaps other GPU work. When you confirm, it slices out only the selected items and the queue carries on with them.
In the dialog itself you get a grid of images, green numbered marks on whatever you click, a selection counter, and a countdown. A pin button keeps the window open (handy when you're comparing against something else), and double-clicking an image expands it full-screen with zoom and pan (added in v1.2.5). It remembers its window position between runs, which is the kind of quality-of-life detail a reviewer-friendly tool actually needs.
The inputs that matter
You mostly touch three things:
- mode -
review_and_select(default) opens the dialog.pass_throughforwards the whole batch untouched,take_firstandtake_lastgrab one image automatically. Once you've debugged a workflow, switching it topass_throughis the fastest way to re-run without babysitting. - timeout - an integer from 10 to 300 seconds, default 60. Set this to something you can actually live with; more on why below.
- images - the batch you're curating.
The one input worth wiring on purpose is latents (optional). If you feed the node a LATENT batch from your sampler alongside the images, it returns the corresponding selected latents too - so you can pass your keepers straight into a latent-space hires pass without a VAE decode/encode round trip. It's a real efficiency win, not a gimmick.
There's also an optional selection_indices STRING input, but be honest with yourself about it: in the current source it's accepted and then never read. Consider it a stub. The selection_indices output is the real deal - a string like "0,2,4" listing what you chose, which is nice for logging or scripting.
Outputs are selected_images (IMAGE), selected_latents (LATENT), and selection_indices (STRING). The node is an output node, so wire selected_images into your upscaler (tiled or ControlNet-Tile paths pair beautifully here) and selected_latents into any latent-space refinement.
Installing it
Boring in a good way. ComfyUI Manager → search "Preview Selector" and hit install, or clone manually:
cd ComfyUI/custom_nodes
git clone https://github.com/NyaFuP/ComfyUI_Preview_Selector
Restart ComfyUI and the node appears under the image/preview category. That's the whole install: no model files to download, and pyproject.toml lists zero dependencies beyond what ComfyUI already ships (it leans on ComfyUI's own torch, PromptServer, and aiohttp). Cleanest install of the week.
Where people get burned
The biggest trap is that this node interrupts the entire queue if you hit Cancel or let the countdown run out - it raises ComfyUI's interrupt exception, so everything after it stops, not just this step. That's often what you want (you cancelled because you didn't like the batch), but it means your timeout needs to be generous enough that you're never the thing that times out. The author also flags a known issue in the README: if you cancel or time out, the preview isn't saved, and they candidly admit they haven't figured out how to fix it yet. That honesty is worth setting expectations.
Which brings up the last thing: this is a one-person tool, built by a self-described beginner with Claude Code's help, "because I needed it for my own use." It's not Impact Pack - don't expect a support channel. But for the narrow job of choosing between eight variations of the same prompt before spending GPU time on them, it does exactly what it says, and nothing else does it quite this smoothly.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| mode | COMBO | review_and_select | 4 options: review_and_select, pass_through, take_first, take_last |
| timeout | INT | 6010–300 | — |
| latentsopt | LATENT | — | |
| selection_indicesopt | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| selected_images | IMAGE | — |
| selected_latents | LATENT | — |
| selection_indices | STRING | — |