Nodes/cg-image-picker/Preview Chooser
ComfyUI Node

Preview Chooser

Pause your workflow and pick the keepers

By chrisgoringe·Created 3 years ago·Updated 2 years ago· 337
Preview Chooser
  • images
  • latents
  • masks
  • segs
  • images
  • latents
  • masks
  • selected
  • segs
mode
count1

You generate a batch of four, three of them are garbage, and you want the one good one to carry on through your upscale-and-detailer chain without re-running the whole graph from the seed. That's the job Preview Chooser exists to do. It's a human-in-the-loop gate: the workflow runs, hits this node, and stops to let you look at what came out and decide what continues.

Most nodes are dumb pipes - data goes in, data comes out, nobody asks your opinion. This one is different because it puts you in the middle of the execution. When the run reaches the Preview Chooser, ComfyUI pauses, streams the incoming images onto the node, and waits. You click the images you want (a selected one gets a green box), then hit Progress selected images, and only those get passed downstream. Everything after the chooser - your upscaler, your face detailer, your save node - only ever runs on the images you picked. It's the difference between babysitting a batch and letting the machine waste GPU time refining rejects.

This isn't a fringe node, either. Serious community workflows adopted it years ago - the widely-shared AP Workflow, for one, wired the Image Chooser in as a first-class gate on its enhancement pipeline, defaulting to pass-through so it stays out of the way until you want it. That's the usual pattern: drop it right before the expensive part.

How it works and the settings that matter

Two things you actually set:

  • mode - how the node behaves when a batch arrives. Always pause is the default and the one you want 90% of the time: it stops and waits every run. Repeat last selection reuses your previous pick as long as nothing upstream changed (great for tweaking a downstream setting without re-choosing). Only pause if batch waits when there's more than one image but passes a single image straight through. Progress first pick pauses but sends an image the instant you click it - no second "progress" click. Pass through, Take First n, and Take Last n are the special-case modes; pass-through is just bypassing the node, and the "take n" modes grab the first/last n without asking. Those last three you'll rarely touch.
  • count - how many images the "take n" modes grab (default 1).

For inputs, you'll almost always feed the images output of your VAE Decode. There are also optional latents, masks, and segs inputs, and here's the one piece of real advice from the author worth repeating: always connect images, and if you're working with latents, route them through the chooser too. Same images and latents come out in the same order - the order you clicked them - and passing latents through the node (rather than around it) makes execution order and the restart feature far more reliable. The outputs mirror the inputs: images, latents, masks, segs, plus a selected string telling downstream nodes which indices you chose.

Handy while it's paused: number keys 19 toggle images, and 0 progresses your selection (or cancels if nothing's picked). There's an alert ping when it starts waiting - mutable in settings if it drives you up the wall. And there's a Cancel-on-Queue option so pressing Queue on a paused run cancels it instead of stacking up.

Installing it

No models, no heavy dependencies - it's a UI node, pure and simple. Search cg-image-picker in ComfyUI Manager and install, or from a terminal:

cd ComfyUI/custom_nodes
git clone https://github.com/chrisgoringe/cg-image-picker.git

Restart ComfyUI and it'll be under the image_chooser category.

Things that trip people up

The big one, and it's a ComfyUI fact rather than a bug: you can't change other widgets while the workflow is paused. Tempting as it is to look at your images and then decide on a denoise value downstream, ComfyUI sends every widget value to the server at the start of the run, so edits you make mid-pause are ignored. The chooser nodes are the only exception - they talk to the server directly when you press go. If you need to react to what you saw, use Repeat last selection and re-run.

One more thing to know before you build a workflow around it: this pack is deprecated. The author has moved the functionality (plus new features) into cg-image-filter. Image Chooser still works fine and plenty of people still run it, but if you're starting fresh, the filter pack is where development actually is.

Categoryimage_chooser

Inputs (6)

NameTypeDefaultDescription
modeCOMBO7 options: Always pause, Repeat last selection, Only pause if batch, Progress first pick, Pass through, Take First n, +1
countINT11–999
imagesoptIMAGE
latentsoptLATENT
masksoptMASK
segsoptSEGS

Outputs (5)

NameTypeDescription
imagesIMAGE
latentsLATENT
masksMASK
selectedSTRING
segsSEGS