Nodes/smZNodes/Settings (smZ)
ComfyUI Node

Settings (smZ)

A1111's Sampler Settings, Wired Into a ComfyUI Graph

By shiimizu·Created 3 years ago·Updated 6 days ago· 333
Settings (smZ)
  • *
  • *
◄ㅤStable Diffusion►
◄prompt_word_wrap_length_limit20►
◄enable_emphasistrue►
◄RNGcpu►
◄ㅤㅤCompute Settings►
◄disable_nan_checktrue►
◄ㅤㅤㅤSampler parameters►
◄eta1.00►
◄s_churn0.00►
◄s_tmin0.00►
◄s_tmax0.00►
◄s_noise1.000►
◄ENSD0►
◄skip_early_cond0.00►
◄sgm_noise_multipliertrue►
◄upcast_samplingtrue►
◄ㅤㅤㅤㅤOptimizations►
◄NGMS0.00►
◄NGMS_all_stepsfalse►
◄pad_cond_uncondfalse►
◄batch_cond_uncondtrue►
◄ㅤㅤㅤㅤㅤCompatibility►
◄use_old_schedulingtrue►
◄ㅤㅤㅤㅤㅤㅤExperimental►
◄use_CFGDenoiserfalse►
◄debugfalse►

This is the deep-cut companion to CLIP Text Encode++, from the same pack. Where that node gets you A1111's prompt syntax, this one gets you the other half of A1111's Settings > Stable Diffusion panel - RNG source, eta, NaN checks, the CFGDenoiser optimizations - as a single node you drop into a ComfyUI graph. The author built it, in their own words, "to explore the various settings found in stable-diffusion-webui." Most people will never touch 90% of it. The 10% they do touch is genuinely useful for closing the last gap between an A1111 image and a ComfyUI reproduction of it.

How it works

Functionally it's a Reroute node with opinions. It has one required input typed * - a wildcard, so you can feed it CLIP, MODEL, or basically anything else - and it passes that through while patching in whatever settings you've configured on its widgets. The patch only applies to what's downstream of its link: a CLIP input only affects CLIP Text Encode++ specifically (not the stock CLIP Text Encode), and everything else applies locally, the same way a model-patch node does. You can chain multiple Settings nodes in sequence and a later one overrides an earlier one, which is handy for A/B testing a setting change partway through a graph.

Two real landmines from the README, worth internalizing before you build around this node: it can change shape when the pack updates, so if an update leaves it looking broken, delete and recreate it before you go debugging anything else. And right-click the node for a "Hide/show all descriptions" toggle - with every setting expanded it's a genuinely enormous node, and most of what you see are cosmetic section headers (Stable Diffusion, Compute Settings, Sampler parameters, Optimizations, Compatibility, Experimental) grouping the real widgets underneath.

The settings actually worth knowing

Everything here mirrors an A1111 setting, and the tooltips are the author's own - trust them over guessing:

  • RNG (cpu / gpu / nv) - the noise source. This is the single biggest lever for matching seeds between A1111 and ComfyUI; use cpu to match across GPU vendors, nv to match what an Nvidia card produced in A1111.
  • enable_emphasis - the on/off switch for attention-weight parsing ((word:1.1) and friends). On by default.
  • eta, s_churn, s_tmin, s_tmax, s_noise - the classic k-diffusion sampler-noise cluster. eta only applies to ancestral (Euler a) and SDE samplers; the s_* group applies to Euler, Heun, Heun++2, and DPM2's churn-based stochasticity instead. Only worth touching if you're trying to match A1111's exact noise behavior on one of those samplers.
  • ENSD (eta noise seed delta) - does nothing for quality; exists purely to reproduce specific old seeds on ancestral samplers.
  • skip_early_cond and NGMS - both skip the negative prompt for part of the run to save time (early steps vs. late steps respectively). Community reports on r/comfyui note NGMS is generally the better trade - skip_early_cond hits quality harder for the same speedup.
  • disable_nan_check, pad_cond_uncond, batch_cond_uncond, sgm_noise_multiplier, upcast_sampling - a grab-bag of A1111 CFGDenoiser-era performance and precision toggles. pad_cond_uncond and batch_cond_uncond in particular only take effect if you also flip on Use CFGDenoiser (see below).
  • Use CFGDenoiser - off by default, and explicitly marked experimental. This opts you into A1111's own denoiser implementation, which is the switch that actually unlocks several of the Optimizations fields above.
  • Use previous prompt editing timelines - a compatibility toggle for how [red:green:N] prompt-editing syntax interprets N. Only matters if you're reproducing an old A1111 seed.
  • debug - dumps extra logging to the console.

Output is the same * wildcard type you fed in - this is a pass-through node, not a generator, so nothing new comes out the other side except your original input with settings attached to its downstream links.

Installing it

Same pack as CLIP Text Encode++: ComfyUI Manager (search "smZNodes"), or

cd ComfyUI/custom_nodes
git clone https://github.com/shiimizu/ComfyUI_smZNodes

No models, no heavy dependencies - restart ComfyUI and it's there.

Where people get stuck

The most common confusion is wiring it in and seeing nothing change. Two usual causes: either the setting you touched only applies to CLIP Text Encode++ and you're still using the stock CLIP Text Encode downstream, or the node isn't actually inline - it has to sit in the wire between two nodes to patch anything, dangling doesn't do anything. The second most common one is exactly what the README warns about: after updating the pack, an old Settings node can start behaving oddly or throwing errors until you delete and rebuild it. And if you're chasing an exact A1111 reproduction and it's still not matching, check RNG first - a CPU/GPU mismatch there will throw off your seed before anything else in this node even gets a chance to matter.

Categoryadvanced

Inputs (27)

NameTypeDefaultDescription
*COMFY_MATCHTYPE_V3Model or CLIP to attach smZ settings to
ㅤSTRINGStable Diffusion—
prompt_word_wrap_length_limitINT200–255Prompt word wrap length limit in tokens - moves short words to next chunk if exceeding 75 tokens
enable_emphasisBOOLEANtrueEnable emphasis syntax (e.g. (text:1.1))
RNGCOMBOcpuRandom number generator source
ㅤㅤSTRINGCompute Settings—
disable_nan_checkBOOLEANtrueDisable NaN check in produced latents/images (CFGDenoiser only)
ㅤㅤㅤSTRINGSampler parameters—
etaFLOAT1.000–1Eta for k-diffusion ancestral and SDE samplers
s_churnFLOAT0.000–100Sigma churn: amount of stochasticity
s_tminFLOAT0.000–10Sigma tmin: start value for stochasticity
s_tmaxFLOAT0.000–999Sigma tmax: end value for stochasticity (0 = inf)
s_noiseFLOAT1.0000–1.1Sigma noise: additional noise to counteract loss of detail
ENSDINT00–18446744073709550000Eta noise seed delta for reproducing ancestral sampler outputs
skip_early_condFLOAT0.000–1Fraction of steps at the beginning to skip negative prompt guidance
sgm_noise_multiplierBOOLEANtrueMatch initial noise to official SDXL implementation
upcast_samplingBOOLEANtrue🚧 Upcast sampling precision to FP32
ㅤㅤㅤㅤSTRINGOptimizations—
NGMSFLOAT0.000–15Negative Guidance minimum sigma: skip negative prompt at low sigmas
NGMS_all_stepsBOOLEANfalse🚧 Skip negative prompt on all steps below NGMS
pad_cond_uncondBOOLEANfalse🚧 Pad prompt and negative prompt to equal length for CFGDenoiser
batch_cond_uncondBOOLEANtrue🚧 Batch conditional and unconditional denoising (CFGDenoiser)
ㅤㅤㅤㅤㅤSTRINGCompatibility—
use_old_schedulingBOOLEANtrue🚧 Compatibility with legacy prompt editing step scheduling
ㅤㅤㅤㅤㅤㅤSTRINGExperimental—
use_CFGDenoiserBOOLEANfalse🚧 Use stable-diffusion-webui's denoiser pipeline
debugBOOLEANfalsePrint debug messages in console

Outputs (1)

NameTypeDescription
*COMFY_MATCHTYPE_V3Model or CLIP with smZ options attached