Hush: Toward the world's best free video noise reducer
Hush.
Free, open-source noise reduction that works in the free version of Resolve — and gives you insight and control into every move it makes. Shoot in RAW or log without noise anxiety or being forced to pay. New in v3: it sets itself up.
Go pro, and the safety net disappears.
Every phone quietly denoises before you ever see the frame. Step up to RAW or log — the formats that make real grading possible — and that baked-in cleanup is gone. Resolve's own NR is Studio-only; the third-party plugins are paid. And noise isn't cosmetic: every contrast move amplifies it, every key edges against it, every composite inherits it. So we built the safety net — free, transparent, and yours to control.
Hush
Measures your clip, removes the noise — then puts the optical character back.
Auto Setup dials in every slider (you keep them all). Temporal + spatial denoise, then — new in v3.6 — lens-like acutance and film-matched grain rebuild what real optics and film would have left. It hands your grade a matte of where it succeeded, and renders its own measurements into the viewer, so nothing is a black box.
Speak
The film look for the end of the tree — Hush's companion.
Film-stock density and subtractive color, halation, bloom and grain — built from original color science, working in DaVinci Wide Gamut. It reads Hush's clean-confidence matte downstream to lay grain exactly where the image was cleaned most. Clean early; reconstruct late.
One node for speed. A few for the best image.
Drop one node, click Auto Setup, done. Hush measures the clip and writes every setting into the sliders — clean, textured footage in seconds, still fully yours to tweak. The fastest way to a gradeable starting point.
Denoise early, reconstruct late. Hush cleans first on its own cached node — before the grade amplifies the noise — and exports the confidence matte. Grade in the middle. Speak lays the film look last and reads that matte. Two coupled nodes, the best possible image.
Toward the world's best free video noise reducer
A nine-lens panel of AI experts and an audit on real 4K night footage reached the same conclusion: Hush's denoising is already strong — the frontier isn't removing more noise, it's reconstructing the image's optical character once the noise is gone. Strip the noise, then put back lens-like sharpness and film-like grain, and couple the whole thing to your grade. v3.6 shipped the first wave.
Add edge slope on the cleaned signal, gated by the noise field and clamped so it can't ring — the acutance of a lens, not the halo of a video sharpen filter. Shipped in v3.6 — the first denoiser that does.
Amplitude, spectrum and placement modelled on the noise actually taken out — real emulsion texture refilling the waxed shadows, weighted to where the image was cleaned most, not a flat white-noise dither.
A clean-confidence matte out, a qualifier matte in, halation finishing — so noise reduction and grading run as one coupled pipeline instead of two nodes fighting each other.
Drag the line.

Five steps. Click each to learn more.
Three estimators measure the noise of every frame: median frame-to-frame difference (immune to the correlated, blotchy noise compression creates), plus fine and coarse Laplacian statistics — with a separate estimate for every brightness band, because shadows are noisier than highlights. Robust medians keep edges, texture and motion out of the measurement, and exactly-flat pixels (letterbox bars, crushed blacks) are excluded so they can't drag the estimate toward zero. The measurement runs live every frame — Lock Profile freezes exactly what you see at the playhead (confirmed by a tracked sweep of its neighbours), and Auto Region finds the flattest patch and places the sampling box for you.
The numbers.
Every build must pass a synthetic-truth test suite before release: scenes with precisely known injected noise, so improvement is measured, not eyeballed.
PSNR before → after (dB, higher is better)
Plus: 146 synthetic-truth checks per build (auto must beat defaults on every footage class, ghosting regressions are build failures), GPU output verified against the CPU reference across 56 configurations to ~10⁻⁶ · 98 fps HD / 26 fps UHD max quality on an M1 Max (118 fps HD locked).
See what it sees.
Resolve's built-in NR is a black box: sliders in, pixels out. Hush renders its measurements into the viewer — because a tool this consequential to your image shouldn't require faith. Every step has its own Scope checkbox, the panels combine over any view, and they're drawn by the same kernels that filter — the display can't disagree with what's happening. Here is each one on the color page:

The Measurements panel — input noise (blue) vs what's left after temporal stacking (amber), frames averaged, SNR gain, the noise-vs-brightness curve, and the histogram with its median. Tick it in Step 1; LOCKED appears when the profile is frozen.
One click. Every slider, set. Or many clicks. All control, yours.
Auto Setup analyzes your clip and dials in the whole plugin — then hands you the sliders.
Click Auto Setup (Analyze Footage) and Hush measures frames from across the clip: how noisy it is, how much of the noise is color, whether it's blocky compressed grunge or clean sensor grain, how much the camera moves. Then it decides — strengths, frame counts, search radius, motion threshold, the Noise EQ bands — and writes the answers into the visible controls, so you see exactly what it chose and can dial anything in or back from there. It is not a mode, and there is nothing to trust blindly: afterwards it's all ordinary manual state, plus a read-only report of what it found:
Analyzed 5 frames · noise 3.2%Y / 4.1%C (noisy) · steady camera · profile locked
One Cmd+Z undoes the entire setup (it applies as a single edit block), and a Revert Auto Setup button does the same job later. It never touches your Step 4 look choices — grain, texture, shadow desaturation and debanding stay yours. Under the hood it also locks the measured noise profile, so every frame of the clip filters against the same numbers and renders stay repeatable.
v3.1 — power & transparency
Detail Rescue: smoothing without blur. The classic failure mode of cranked noise reduction is that "smoother" and "blurrier" arrive together. Detail Rescue breaks that link: after the spatial stage, anything the filter changed by more than a noise-sized amount is put back. Push the strengths as hard as you like — flat areas and faces go buttery while edges physically cannot blur, because the worst case is bounded by construction. Auto Setup raises it automatically with the noise class.
Every range goes further, and the dead zones are gone. Strength to 3, spatial strengths to 150, EQ Fine to 300 — and its top half now genuinely widens the filter (it used to saturate silently). The band sliders reach 150, where the extra drive widens tolerance and reach instead of overshooting. Auto Setup uses the new headroom: on the test suite it now beats stock defaults by up to +5 dB.
Scopes where you need them. Each step has a checkbox that draws a panel right in the viewer: Measurements (Step 1), a live Motion Map mini-view (Step 2), and the Noise EQ scope (Step 3) — which appears by itself the first time you touch an EQ slider, showing one lane per band: the bar is how much you're cutting, the amber line is how much noise was measured at that size. The bands themselves now carry plain names — Fine Grain (~1 px), Clumps (3–8 px), Stains (16 px+), Color Blotches.
v3.2 & v3.3 — field-review fixes, reach & depth
Ghost Guard (v3.2) added a second, independent motion test to the temporal gate — on the signed patch mean, where pure noise cancels toward zero but slow coherent motion doesn't — catching the subtle slow-motion smear the magnitude gate can't see, for ~0.01 dB on static footage. v3.2 also taught the residual re-measurement to see compression blotch at two scales. v3.3 quadrupled Motion Tracking's reach (a hierarchical search out to ~±8 px, so real pans keep their temporal averaging), added a 7-frame stack for locked-off noisy shots, Deep Clean — a gentle bounded pre-pass for severe or compressed noise — and per-channel chroma profiles, because blue-channel night noise reads very differently on Cb than Cr.
v3.4 — lock what you see
Lock Profile now freezes exactly the measurement you are looking at. Until v3.4, locking silently swapped your live playhead measurement for a median of five frames spread across the whole clip — on anything that moves, the box covers different content at those times, and locking could visibly bring the noise back. Now the lock is the playhead measurement, confirmed by a tracked sweep of the ±4 neighbouring frames: the patch is followed frame-to-frame, measured at its tracked position, and a frame only votes if its measurement agrees with the playhead's — a subject crossing your patch is simply rejected. Worst case, the lock is exactly what you saw.
Auto Region finds the flattest patch on the current frame (scored against the expected noise at its brightness, so dark noisy flats aren't penalized), moves the yellow sampling box there and shows it. And the box finally tells you its mode: yellow with handles = live, re-measured every frame; ice-blue with a padlock = frozen, dragging disabled. The temporal gate went brightness-aware too — details in the math section below.
Since v1, in one breath:
v1.1 video-native noise estimators, step-by-step UI, analysis views
v1.2 hard-knee temporal gate — ghosting became structurally impossible
v2.0 residual re-measurement, brightness-aware profiling, chroma blotch pass, film grain & finishing stage
v2.1 "Hush" name, draggable sampling region, Windows builds
v3.0 Auto Setup, motion tracking, firefly zapper, Noise EQ, profile lock, deband, noisiness matte
v3.1 Detail Rescue, per-step viewer scopes, extended ranges, bolder Auto Setup
v3.2 Ghost Guard, two-scale residual, lock/region field fixes
v3.3 ±8 px hierarchical motion search, 7-frame stack, Deep Clean, per-channel chroma, lock fast path
v3.4 playhead lock + tracked sweep, Auto Region, live/frozen box states, brightness-aware temporal gate
v3.5 Render Boost (sequential renders compound the stack), self-tuning Auto Setup (Monte-Carlo SURE), exposure match
The math, briefly.
Measuring noise without a chart
Everything is calibrated in units of the noise standard deviation σ. The primary estimator for video is the frame you just watched — on static pixels, frame difference is pure noise with spread √2σ, regardless of spatial correlation:
Motion robustness: the unbiased median and 20th-percentile estimates agree on static footage; motion inflates the median first, so disagreement means "trust only the static quantile." Spatially, Immerkær's operator (response std = 6σ, rejects gradients) runs at two scales — and per brightness band, using a 35th percentile so a band full of real texture can't fake a high reading:
The anti-ghosting stack: a gate that cannot ghost
Full weight while a difference is explainable by noise; exactly zero past the knee. An earlier version used a Gaussian falloff — its fat tail blended pixels several σ apart at 30–40% weight and turned slow pans into soup. The hard knee ended that structurally, and a slow-drift regression test now makes ghosting a build failure. Since v3.4 the knee is calibrated per brightness band (the g above): shadows on a real camera run 1.5–2.2× noisier than mids, so a flat knee starved them of averaging — they read as motion — while highlights got a knee that was too wide. Measured: +1.35 dB in the shadows on a brightness-profiled scene, highlights unchanged.
Three more layers back the knee up. Motion Tracking re-aims each neighbour patch before gating — a step-4 coarse search on 2×2 block means (so a big step sees structure, not aliasing), then a converging ±1 walk, out to ~±8 px — and any shifted winner faces a 1.7× steeper roll-off plus an acceptance margin, so misaligned periodic texture cannot blend. Ghost Guard gates the signed patch mean:
Pure-noise differences cancel when averaged with their signs — coherent motion doesn't — so the slow, subtle smear the magnitude gate physically can't see gets its weight cut, for ~0.01 dB on static footage. And the firefly zapper clips single-frame impulses (hot pixels, sensor sparkles) to the 3-frame temporal median — only when three independent tests agree, so thin fast-moving detail survives. It stays deliberately un-scaled by brightness: at 6σ, the gain curve cannot flip a genuine impulse.
Lock what you see (v3.4)
Unlocked, the profile is measured live on every frame — park somewhere and the numbers follow the content under the box. Lock Profile freezes the playhead measurement, hardened by a tracked sweep: the patch is followed across the ±4 neighbouring frames by SAD over sampled luma with a zero-motion prior (featureless patches score every candidate alike, so the prior keeps the box still instead of letting it random-walk along the noise), measured at its tracked position, and a frame votes only if its σ lands within 1.6× of the playhead's and its patch brightness within 0.13. A subject crossing the patch is rejected; the worst case is exactly the measurement you approved. Auto Region places the box for you: every candidate patch is scored by local variance minus the expected noise variance at its brightness, so a dark noisy flat — the best measurement spot on most night footage — is not mistaken for texture.
Spatial filtering that measures its own inheritance
Compression correlates noise across frames, so temporal averaging removes less than √N theory promises. Hush re-measures the residual on the merged image itself — at two scales since v3.2, so blotch that survives the merge cannot hide from a fine-scale estimator — and tunes non-local means to that measurement: filter strength h = 1.15σ_residual for luma, 2.2σ for chroma, patch distances bias-corrected by the 2σ² noise alone contributes. Since v3.3 every chroma estimate is per-channel (blue-channel night noise puts several times more energy on Cb than Cr, and a combined median splits the difference badly for both), and Deep Clean can run a gentle 0.6·h pre-pass whose corrections are hard-clamped to noise size — structure-safe by construction. The Noise EQ's larger bands work on block means with corrections clipped to noise scale, so each band removes only its own size; a sparse luma-guided pass reaches 23 px for chroma blotches and 47 px for luma stains.
Detail Rescue: why cranking it can't blur (v3.1)
Ordinary NR applies the filter's correction in full — push it hard and the correction at an edge is huge, which is exactly what blur is. Detail Rescue clamps the correction to a noise-sized bound: in flat areas the correction is noise-sized, so smoothing passes through untouched, but at an edge or in texture the over-large correction is cut back to k. The worst case any pixel can move is bounded by construction — so the strength sliders (now up to 150, EQ Fine to 300 with real h-widening) become safe to crank. At full crank on the test scene it recovers +3.5 dB of structure.
Measurement hygiene (v3.1)
Exactly-flat samples — letterbox bars, crushed blacks, generated graphics, pixels bit-identical to all eight neighbours — carry no noise evidence, and enough of them collapses every median. All estimators now skip them: on a letterboxed test the measured σ went from collapsed to within 0.3% of truth. The Noise Removed view auto-gains to the measured noise level with a soft knee (0.5 + 0.5·d/(0.5+|d|)), so clean footage still reads and highlights compress instead of clipping into blobs.
Engineering
One reference implementation in C++; Metal, CUDA and OpenCL kernels are line-by-line ports, and a parity harness drives the actual plugin GPU entry point — the one Resolve calls — asserting agreement with the reference to ~10⁻⁶ across 56 configurations, with 146 synthetic-truth checks gating every build (including "Auto Setup must beat stock defaults on every footage class", a slow-drift no-ghosting regression, and v3.4's tracked-sweep suite: the tracker must recover planted shifts, stay put on featureless patches, and reject an occlusion crossing the sampling region). Even the film grain is bit-deterministic (integer-hash value noise). Honest limitations: no motion-vector compensation and no neural net — that's what keeps it fast, predictable, and free.
| Resolution | Best quality (NLM r3 · 5 frames · blotch) | Locked profile | Render Boost (sequential) | Faster mode |
|---|---|---|---|---|
| HD 1920×1080 | 10.2 ms/frame — 98 fps | 8.5 ms — 118 fps | 11.0 ms — 91 fps | 6.2 ms — 162 fps |
| UHD 3840×2160 | 39 ms/frame — 26 fps | 33 ms — 30 fps | 41 ms — 24 fps | 22 ms — 45 fps |
Meet Speak.
Hush quiets the noise. Speak gives the image its voice. A free film-emulation tool for the end of your node tree — film-stock character, split toning, subtractive saturation, halation and grain. It works in DaVinci Wide Gamut (some steps in linear light), so Resolve Color Management delivers Rec.709, P3 or HDR from a single look.
Characteristic (H&D) density curves and a subtractive dye model — generic stock families and a shoot-a-chart calibration path. Original science, not cloned profiles, with the curves shown on screen.
Subtractive CMY mixing compresses highlight saturation and bends hue toward the dyes — the reason film reads like film — plus split toning by tonal range, done in the right domain.
The optical layer in linear light: red-weighted halation, veiling bloom, print shoulder, gate weave — finished with the design study's measured film grain.
A free rival to paid film tools like Dehancer and Film Look Creator — built from original color science, working in the free version of Resolve, and it shows its work. Read the approach →
Install in a minute.
- macOS: download the .pkg from the latest release and double-click (signed with an Apple developer ID — if Gatekeeper objects, right-click → Open). Windows: download the zip, then double-click Install OpenNR (Windows).bat — or just drag OpenNR.ofx.bundle into
C:\Program Files\Common Files\OFX\Plugins. - Restart DaVinci Resolve.
- Find it under Effects → OpenFX → Filters → Hush → Hush Open NR. Drag onto an early node on the Color page (or a clip on the Edit page).
- Click Auto Setup, then tick a Scope checkbox (Step 1 Measurements, Step 2 Motion Map, Step 3 Noise EQ) to watch it work. For tricky footage, click Auto Region to have the sampling box placed on the flattest patch (or drag the yellow rectangle yourself), then Lock Profile to freeze exactly what you see — the box turns blue with a padlock. Untick scopes before rendering.
Works in the free version of Resolve (third-party OpenFX has been supported there since v15). The Windows build renders via OpenCL (NVIDIA, AMD and Intel GPUs); Linux builds from source.
Colorist tips
Put Hush at the very start of your node tree and leave it enabled while you grade — every contrast and saturation move amplifies whatever noise it sits on, so grade on the clean signal. Want smooth playback? Toggle the node off (Cmd/Ctrl-D) while you work, or right-click the node and turn on its node cache so it renders once and plays free.
Hush composes beautifully with what's already in the free version. Classic move: a Lum vs Sat curve on a later node, pulling saturation out of the darkest stops — chroma noise lives in the shadows, and what filtering can't remove, desaturation hides. (Hush's own Shadow Desaturate does this in-plugin; the curve gives you a finer hand.)
After the smoothing, Step 4 puts authentic energy back: Luma Texture re-injects the original brightness grain, and Film Grain (with Size and Color) lays down clean, midtone-weighted synthetic stock. Even so, a subtle sharpening node right after Hush is sometimes the last five percent.
