Nodes/ComfyUI/SplitSigmas
ComfyUI Node Runs on cloud

SplitSigmas

The splice point for every two-pass workflow

By Comfy-Org·Created 4 years ago·Updated about 23 hours ago· 129,495
SplitSigmas
  • sigmas
  • high_sigmas
  • low_sigmas
step0

SplitSigmas takes one SIGMAS list and cuts it in two at an index - the splice point for every two-pass sampling workflow. Almost every "generate base, then refine" graph in ComfyUI is secretly this node: run the first sampler on the noisy half, hand the result to a second sampler with the clean half, and the two passes chain together with no visible seam. It's the mechanism behind denoise-then-refine, sampler-switching mid-generation, and a good chunk of video workflows too.

How it works

You feed it a sigma list (from BasicScheduler, KarrasScheduler, ManualSigmas, whatever) and an index. It returns two lists that overlap by one:

  • high_sigmas - sigmas[:step+1]: the noisy end, down to and including the boundary sigma.
  • low_sigmas - sigmas[step:]: the boundary sigma on down to clean.

The shared boundary value is the whole trick. Your first pass ends at that noise level, your second pass starts from it, so the image state carries over instead of getting re-noised from scratch. It's the "noise-in, noise-out" handoff that makes two samplers feel like one.

Inputs:

  • sigmas - the schedule to split.
  • step (default 0, 0-10000) - which index to cut at. This is a 0-based index into the array. A steps=20 schedule has 21 sigma entries (20 intervals plus the final zero), so step=10 splits roughly at the halfway point.

There's also a sibling, SplitSigmasDenoise, that does the same job but splits by a denoise fraction (0-1) instead of an index - pick whichever matches how you think about the pass.

Why you'd reach for it

The classic pattern: pass one with a cheap, robust sampler for composition; pass two with a higher-quality sampler (or a different CFG, or after a latent upscale) for detail. Or a first pass at low resolution, then split, upscale, and refine. The knowledge base calls this the two-phase pattern that's been standard since 2022 - farm a cheap base, then spend on the keeper. SplitSigmas is the node that formalizes it in the custom-sampling pipeline.

Where people get burned

  • Index arithmetic is off-by-one heaven. With steps=20, the list has 21 entries; step=10 is not "half of 20", it's "the 11th entry". If you split where you think the middle is, you're usually one off. When in doubt, SplitSigmasDenoise with 0.5 is easier to reason about.
  • Both outputs keep the boundary sigma. That's deliberate - don't "fix" it by dropping a value or you'll create a discontinuity.
  • Out-of-range step gives you an empty side. step ≥ the list length yields a degenerate split that some downstream samplers will choke on.

Ships with ComfyUI core. If you've ever downloaded a workflow with two SamplerCustomAdvanced nodes in a row, SplitSigmas is almost certainly sitting between them.

Categorymodel/sampling/sigmas

Inputs (2)

NameTypeDefaultDescription
sigmasSIGMAS
stepINT00–10000

Outputs (2)

NameTypeDescription
high_sigmasSIGMAS
low_sigmasSIGMAS