Nodes/ComfyUI-ReNoise/ReNoise Sampler
ComfyUI Node

ReNoise Sampler

Edit Images (or Video) at Full Strength Without the Reconstruction Falling Apart

By logtd·Created 2 years ago·Updated 2 years ago· 6
ReNoise Sampler
  • latent
  • model
  • inv_sampler
  • sampler
  • sigmas
scheduler
sampler
noise_seed0
inversion_strength0.30
inversion_steps4
renoise_steps9
avg_latent_estimationstrue
avg_first_step_start0
avg_first_step_end5
avg_step_start8
avg_step_end10
noise_reg_lambda_ac20.0
noise_reg_lambda_kl0.07
noise_reg_steps4
noise_reg_ac_rolls5
perform_noise_correctiontrue

If you've ever pushed img2img denoise past ~0.6 and watched your input image come back as a wobbly distant relative of itself, you've hit the problem this node is built for. ReNoise Sampler is the ComfyUI port of ReNoise, the 2024 paper ("real image inversion through iterative noising") that got a real following because it makes high-strength edits actually hold together. It's from the same author who ported Frame Interpolation and InstanceDiffusion into ComfyUI - someone who ships research papers as usable nodes. The README shows it off on vid2vid, with Veevee + ReNoise clips.

What it actually does

To edit an image you first need to find the exact latent noise that would generate it - that's inversion. Naive inversion drifts: your input gets reconstructed wrong, and the error only grows the more you change it. ReNoise's fix is to run several "renoise" passes at each inversion step - repeatedly noising and denoising the estimate and averaging the predicted noise - then regularize that noise (autocorrelation and KL terms borrowed from pix2pix-zero) and finish with a noise-correction pass that solves for the exact per-step noise. The result is a latent that reconstructs your image properly even at denoising strengths near 1.0. That matters twice over for video: if every frame inverts differently, you get flicker, so a stable inversion is the difference between a smooth restyle and a strobe light.

The node doesn't generate anything by itself. It builds two custom samplers and a sigma schedule and hands them to you:

  • inv_sampler (SAMPLER) - run the inversion pass with this.
  • sampler (SAMPLER) - run the actual denoise/generation pass with this.
  • sigmas (SIGMAS) - feed into a SamplerCustom.

You wire all three into SamplerCustom nodes, which is why the pack's example workflow lives entirely on SamplerCustom rather than the normal KSampler.

The inputs you'll actually touch

There are a lot of knobs here, but the pack ships sane defaults and you mostly need these:

  • model and latent - your checkpoint and the VAE-encoded input image. Use the patched model from ReNoiseModelSamplingPred for the inversion side (see that node's article - it's required, not optional).
  • inversion_strength (default 0.3) - effectively your edit strength. The whole selling point is that you can push this toward 1.0 where ordinary img2img falls apart.
  • inversion_steps (default 4) - the paper's trick is that you don't need hundreds of DDIM inversion steps; a handful of careful ones do the job. 4 is a good place to start.
  • renoise_steps (default 9) - how many noising passes per step, the "iterative" in the name. More = better reconstruction, slower.
  • noise_seed - seeds the noise list used through inversion; same seed, same reconstruction.
  • scheduler - one of the nine standard ComfyUI schedules (normal, karras, exponential, …). sampler is locked to euler_ancestral, and that's intentional: ReNoise is built around the ancestral Euler step.

The rest - avg_latent_estimations and the four avg_*_start/end windows, plus the noise_reg_* autocorrelation/KL regularization knobs and perform_noise_correction (leave that on) - are the paper's tuning internals exposed raw. Defaults are sensible; touch them only if you're chasing a specific artifact.

Installing it

The README's only hard requirement beyond ComfyUI itself is diffusers, which ComfyUI core doesn't bundle:

python -m pip install diffusers

Then install the pack via ComfyUI Manager (search "ReNoise") or:

cd ComfyUI/custom_nodes
git clone https://github.com/logtd/ComfyUI-ReNoise

Restart ComfyUI, and load the example workflow from the repo's example_workflows folder to see the full graph.

Gotchas

  • Nodes fail to load → diffusers isn't installed in ComfyUI's Python environment. That import error is the #1 report for this pack. pip install diffusers fixes it.
  • It's WIP and old. Marked WIP in the README, last touched in 2024, and the source hardcodes a single CUDA GPU at fp16 (cuda:0, float16 latents). Built for the SD 1.5/SDXL era. If you're on newer architectures or Apple Silicon, expect rough edges.
  • "Why is my edit so subtle?" - you left inversion_strength at its 0.3 default. That's the dial that determines how much actually changes; the node just makes the high end survivable.

Reach for this when you want big, clean img2img restyles or per-frame video edits that don't shimmer. It's fiddly and unpolished - but it's one of the few ComfyUI paths to full-strength edits that don't destroy your input.

Categorysampling

Inputs (18)

NameTypeDefaultDescription
schedulerCOMBO9 options: normal, karras, exponential, sgm_uniform, simple, ddim_uniform, +3
samplerCOMBO1 options: euler_ancestral
noise_seedINT00–18446744073709550000
inversion_strengthFLOAT0.300–1
inversion_stepsINT41–10000
renoise_stepsINT90–10000
avg_latent_estimationsBOOLEANtrue
avg_first_step_startINT00–10000
avg_first_step_endINT50–10000
avg_step_startINT80–10000
avg_step_endINT100–10000
noise_reg_lambda_acFLOAT20.00–1000
noise_reg_lambda_klFLOAT0.070–1000
noise_reg_stepsINT40–10000
noise_reg_ac_rollsINT50–10000
perform_noise_correctionBOOLEANtrue
latentLATENT
modelMODEL

Outputs (3)

NameTypeDescription
inv_samplerSAMPLER
samplerSAMPLER
sigmasSIGMAS