KSamplerNoiseless
The KSampler That Never Adds Noise (and the toggle that lies about it)
- model
- positive
- negative
- latent_image
- LATENT
What this is
The disable_noise toggle on this node lies. Flip it to False and nothing changes - this KSampler never adds fresh noise to the latent you hand it, ever. And that's not a bug, it's the whole job.
KSamplerNoiseless is a clone of ComfyUI's stock KSampler with one guarantee: no random noise gets injected at the start of sampling. It's the boring half of a two-node pack. The interesting half is the pack's other node, NoiseWarperNode, which implements GoWithTheFlow - the research trick from Netflix's Eyeline-Research lab that bakes motion from a reference video into a latent noise tensor by warping the noise along an optical flow field. Feed that persistent, flow-warped noise to KSamplerNoiseless and you denoise it directly, so the temporal structure survives instead of being scrambled by fresh noise on every frame. That's the "loopback" in the pack title: warp noise, denoise without adding more, repeat.
Why not just use stock KSampler with disable_noise set to true? Because you'd have to remember to set it. This node makes the noiseless behavior impossible to forget - and pairs cleanly with the warper in the same repo.
How it works
Inputs are a mirror of stock KSampler: model, positive / negative conditioning, steps, cfg, sampler_name, scheduler, seed, latent_image, denoise, and that decorative disable_noise. One output, LATENT, "the denoised latent" - wire it to a VAE Decode like you would any sampler.
The difference lives in the pack's shared sampling helper. Peek at its call to comfy.sample.sample() and you'll see disable_noise=True hardcoded - the input you're shown is never actually consulted. The latent_image you feed in becomes the starting point as-is (it even passes fix_empty_latent_channels first, so a bare one-channel empty latent gets expanded to the model's real channel count instead of crashing, and a noise_mask on your latent is honored).
Two practical consequences fall out:
seeddoes nothing meaningful. With no noise being generated, there's nothing to seed. Variation comes from the latent you feed in, not the sampler.denoiseis the control that matters. Keep it at1.0when your input is full-strength warped noise. Drop toward0.5and you preserve the coarse structure of the starting latent while letting the prompt reshape details - handy when the warped noise comes out too aggressive.
The workflow it's built for
The intended graph is short:
NoiseWarperNode (LATENT) → KSamplerNoiseless.latent_image
KSamplerNoiseless (LATENT) → VAE Decode → image
The warper keeps a persistent noise state per node instance and re-warps it against the current flow image every time the workflow runs, so successive generations share one coherent noise skeleton instead of rolling fresh dice each pass. Stock KSampler would quietly add its own noise on top and break that illusion - which is exactly why a noiseless sampler has to exist.
Installing it
ComfyUI Manager, search "gowiththeflow" (the pack shows up as ComfyUI-gowiththeflow-loopback), hit Install, restart. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/oxysoft/ComfyUI-gowiththeflow
then restart ComfyUI. Manager handles dependencies; manual installs need torch, numpy, einops, tqdm, opencv-python, and rp.
That last one is the gotcha. rp is Ryan Burgert's CommonSource research toolkit - a heavy, opinionated dependency that drags in a lot. If the pack fails to import, this is almost always why; it can lag behind new Python versions. No model downloads are required for the nodes themselves - the RAFT optical-flow model in the source is only used by the offline video-processing pipeline, not by anything the ComfyUI nodes call.
Where people get burned
- Feeding it an
EmptyLatentImage. No initial noise and nothing to denoise means mush. This node expects a real noise latent - NoiseWarperNode's output, or any prepared noise tensor. - Expecting normal KSampler behavior. It's not a general-purpose sampler; for plain text-to-image, use the stock node.
- Trusting the toggle.
disable_noisereads and does nothing. Learn to love it.
One honest note: the GoWithTheFlow scene's real workhorse in ComfyUI is kijai's ComfyUI-VideoNoiseWarp, which is what most people mean when they talk about noise warping. This oxysoft pack is a leaner take that pairs its own warper with a dedicated noiseless sampler - a tidy one-install loopback setup, just not the famous one.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | The model used for denoising the input latent. | |
| disable_noise | BOOLEAN | true | If True, the noise will not be added to the latent image. |
| seed | INT | 00–18446744073709550000 | The random seed used for creating the noise. |
| steps | INT | 201–10000 | The number of steps used in the denoising process. |
| cfg | FLOAT | 8.00–100 | The Classifier-Free Guidance scale balances creativity and adherence to the prompt. Higher values result in images more closely matching the prompt however too high values will negatively impact quality. |
| sampler_name | COMBO | The algorithm used when sampling, this can affect the quality, speed, and style of the generated output. | |
| scheduler | COMBO | The scheduler controls how noise is gradually removed to form the image. | |
| positive | CONDITIONING | The conditioning describing the attributes you want to include in the image. | |
| negative | CONDITIONING | The conditioning describing the attributes you want to exclude from the image. | |
| latent_image | LATENT | The latent image to denoise. | |
| denoise | FLOAT | 1.000–1 | The amount of denoising applied, lower values will maintain the structure of the initial image allowing for image to image sampling. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | The denoised latent. |