Practical TL;DR of Samplers
Iteration Speed (How Long 1 Step Takes)
| How much slower | Sampler |
|---|---|
| 1x | euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, dpm_fast, dpmpp_2m, dpmpp_2m_cfg_pp, dpmpp_2m_sde, dpmpp_2m_sde_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, sa_solver, ddim, uni_pc, uni_pc_bh2 |
| 2x | heun, dpm_2, dpm_2_ancestral, dpmpp_2s_ancestral, dpmpp_2s_ancestral_cfg_pp, dpmpp_sde, dpmpp_sde_gpu, seeds_2, sa_solver_pece, exp_heun_2_x0, exp_heun_2_x0_sde |
| 3x | heunpp, seeds_3 |
For example, it takes the same amount of time to run euler for 20 steps and to run dpmpp_sde for 10 steps.
Notes on more special samplers:
dpm_fastswitches between theDPM-3,DPM-2, andDPM-1algorithm in a way that the total time spent is the same aseulerif you set the same amount of steps, while each step may take differing amounts of time.dpm_adaptiveignores the scheduler and decides how many steps to run on its own.
Noisy Samplers That Keep Change Composition
ddpmrestartseedssa_solver(_pece)- Any sampler with
ancestral (A)in the name - Any sampler with
sdein the name
Generally, these samplers beat their non-composition-changing brethren if you use higher step counts.
Opinionated Sampler Choices
How many steps to use concretely obviously depends on the model. However in general:
- Only consider the
eulerfamily if you want a blurry aesthetic, or using a distilled model, or in other nicher situations. - Consider non-noisy samplers (ODE) when using low-medium step count.
res_multistepis usually a sane default for most situations.gradient_estimationoruni_pccan be a bit sharper / more saturated.
- Consider noisy samplers (SDE) when using medium-high step count.
er_sdeis usually a sane default for most situations.sa_solver(_pece)can be a bit sharper / more saturated.- As of 16/Mar/2026, in ComfyUI, all
ancestralsamplers are broken on flow matching models excepteuler_ancestralanddpmpp_2s_ancestral. This is due to missing scaling by a renoising coefficient.
- Consider
_cfg_ppvariants when available. Start withcfg=1and nudge it slightly higher to e.g.1.5if coherency issues appear. - As of 16/Mar/2026, in ComfyUI, all
cfg_ppsamplers are broken on flow matching models excepteuler_cfg_pp. This is due to missing a scaling factor of \(\alpha_t=1-\sigma_t.\) - Consider
lcmor a noisy sampler when using distilledsdxl, such asdmd2, hyper, turbo. (These used techniques distinct from newer distills such asZIT, Flux.2-[klein]-base, Flux.2-[klein], etc. which is whysdxldistills wants lots of noise.)