Deflicker - Experimental (SuperBeasts.AI)
Smooths brightness flicker across frames — and knows it's a work in progress
- images
- IMAGE
If you've generated a video frame-by-frame - AnimateDiff, any img2vid pipeline, a batch of stills - you've met the enemy this node targets: frames that are individually fine but visibly flicker in brightness when played in sequence. That's global flicker, whole-scene exposure wobble, and Deflicker is SuperBeasts.AI's attempt to fix it with old-fashioned image processing rather than a trained model.
Full honesty: the node is labeled Experimental in its own name, and the pack's docs say it wasn't meeting the author's deflicker expectations and may be removed in a future release. So set expectations before you wire it into a critical pipeline. It's a decent tool for knocking the worst of the exposure wobble out of a clip, but it's not a magic fix, and the author has basically told you that.
How it works
The mechanism is straightforward and worth understanding because it's why the node behaves the way it does:
- For each frame, it computes the average brightness over a window of neighboring frames (
context_length, default 5, so two frames each side). - If the current frame's brightness differs from that local average by more than
brightness_threshold(default 0.05), it computes the ratio and applies a brightness correction to pull the frame back toward the average. - Every frame - corrected or not - then gets a Gaussian blur as noise reduction (
noise_reduction_strength), a gradient-smoothing pass, a dithering pass, and finally an adaptive blend back with the original frame so you keep detail.
That last blend is the safety valve: blending_strength (default 0.1) controls how much of the processed frame survives. Frames that were way off get blended more aggressively (the blend alpha scales with the brightness error), frames that were fine barely change. It's a classic "correct the global error, then soften the side effects" chain, done entirely in PIL.
The inputs that matter
Of the six (plus batch_size, which is just a memory knob that processes frames in chunks):
- brightness_threshold - how far a frame has to drift before it gets touched. Lower = more aggressive, but also more risk of pumping. 0.05 is a reasonable middle ground.
- blending_strength - how much of the corrected version makes it into the output. Raise it if flicker persists, lower it if frames start looking soft or processed.
- noise_reduction_strength - the blur. Keep it low; this is where you trade flicker for detail loss.
Output is a single IMAGE batch, same length as the input, ready to feed the next stage (usually an upscaler or the video assembler).
Where it fits
Run it right after your batch of frames is generated, before any frame-by-frame upscaling that could reintroduce or amplify inconsistencies. The whole SuperBeasts pack is built around a video workflow - batch managers, mask batch tools, this deflicker - and this node slots in as the "tidy up the exposure" step.
Install
Same pack as the rest:
cd ComfyUI/custom_nodes
git clone https://github.com/SuperBeastsAI/ComfyUI-SuperBeasts
Restart ComfyUI. Or find it via ComfyUI Manager by searching "SuperBeasts" - the pack is on the Comfy Registry. No extra dependencies.
Common issues
The big one is expectation management: it's marked experimental because global-brightness correction is a blunt instrument. If your flicker is local (a patch of pixels pulsing rather than the whole frame), this node won't fix it - that's what its sibling Pixel Deflicker is for. And because it runs brightness math in PIL on every frame, long clips at high resolution are slow; use batch_size to keep memory bounded and don't be surprised when a 500-frame 1080p pass takes a while. Given the pack's own docs flag it as possibly-removed, don't build a workflow you can't afford to rewire when it disappears.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| context_length | INT | 51–20 | — |
| brightness_threshold | FLOAT | 0.050.01–0.5 | — |
| blending_strength | FLOAT | 0.100–1 | — |
| noise_reduction_strength | FLOAT | 1.00–5 | — |
| gradient_smoothing_strength | INT | 10–3 | — |
| batch_size | INT | 101–100 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |