♻ Loop (All Samplers)
Run every sampler on the same seed, one node, one queue
- sampler_name
"Which sampler should I use" is one of those questions everyone answers with a habit rather than a test. This node turns it back into a test. Wire it into your sampler_name input, set it to loop, and ComfyUI runs your whole graph once per sampler on the same prompt, same seed, same everything else - so instead of guessing, you get a side-by-side grid and can actually look.
How it works
Set sampler_name to ALL SAMPLERS and the node emits ComfyUI's full stock sampler list - around 44 of them, from euler and euler_ancestral through the DPM++ family, uni_pc, ddim, and more - as a single wildcard list. That triggers ComfyUI's native list execution: your KSampler and everything after it runs once per sampler, in order, with nothing else in the graph changing. Pick a specific sampler instead of ALL SAMPLERS and it just passes that one through, so the node doubles as a normal sampler-select widget when you don't want the full sweep.
Worth knowing before you queue a 44-way sweep: samplers aren't interchangeable in one dimension. Some (Euler, DPM++ 2M, UniPC) are converging - same seed gives the same settled image, and extra steps just refine it. Others (Euler ancestral, DPM++ SDE) are ancestral - they inject fresh noise each step, so they never fully settle and more steps changes the image rather than sharpening it. A same-seed sampler grid will show you real, meaningful differences, not just noise. And this node only cycles the samplers ComfyUI ships with - third-party solver packs like RES4LYF live outside this list entirely and won't show up no matter what you select.
The inputs and outputs that matter
There's exactly one input, sampler_name - either ALL SAMPLERS or one specific sampler from the stock list - and one output carrying whichever samplers got selected, feeding straight into your KSampler's sampler_name.
Pair it with the pack's sibling node, Loop All Schedulers, if you also want to vary the scheduler (Normal, Karras, sgm_uniform, and so on) - or use Loop Combos if you want the two swept together as matched pairs instead of every sampler crossed with every scheduler, which multiplies fast.
How to install it
ComfyUI Manager → search Bjornulf_custom_nodes → install → restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/justUmen/Bjornulf_custom_nodes
pip install -r Bjornulf_custom_nodes/requirements.txt
Zero special dependencies for this node specifically - it's a static list plus ComfyUI's own sampler registry. The pack's heavier requirements (ffmpeg, ollama, whisper, and so on) exist for its other 150-odd nodes and don't affect whether this one loads.
Common issues & troubleshooting
44 renders is a lot of GPU time for one test. That's the real cost of this node, not a bug - every sampler in the list runs your full graph, and on serverless GPU billing that's 44 separate executions. If you're testing on comfy.icu, run a small resolution and low step count first to see which samplers are even in the right neighborhood, then re-run the shortlist at full settings.
Some samplers look identical, others look completely different. Expected, and it's the converging-vs-ancestral split above - don't assume a subtle difference on one pair means the whole sweep is subtle. Ancestral samplers especially will diverge more the more steps you give them, exactly backwards from what you might expect.
I want to compare against a third-party sampler I installed separately. This node only knows about ComfyUI's built-in list; it can't reach into another pack's registered samplers. You'd need to test those manually, one at a time, outside this loop.
Nothing looped - I got one image. Check that sampler_name is actually set to ALL SAMPLERS and not a specific pick; the node silently behaves like a normal single-sampler selector otherwise.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| sampler_name | COMBO | 45 options: ALL SAMPLERS, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| sampler_name | euler,euler_cfg_pp,euler_ancestral,euler_ancestral_cfg_pp,heun,heunpp2,exp_heun_2_x0,exp_heun_2_x0_sde,dpm_2,dpm_2_ancestral,lms,dpm_fast,dpm_adaptive,dpmpp_2s_ancestral,dpmpp_2s_ancestral_cfg_pp,dpmpp_sde,dpmpp_sde_gpu,dpmpp_2m,dpmpp_2m_cfg_pp,dpmpp_2m_sde,dpmpp_2m_sde_gpu,dpmpp_2m_sde_heun,dpmpp_2m_sde_heun_gpu,dpmpp_3m_sde,dpmpp_3m_sde_gpu,ddpm,lcm,ipndm,ipndm_v,deis,res_multistep,res_multistep_cfg_pp,res_multistep_ancestral,res_multistep_ancestral_cfg_pp,gradient_estimation,gradient_estimation_cfg_pp,er_sde,seeds_2,seeds_3,sa_solver,sa_solver_pece,ddim,uni_pc,uni_pc_bh2 | — |