FreeU V2 (Advanced Plus)
The Gentler, Smarter Detail Boost
- model
- MODEL
FreeU V2 is the answer to V1's biggest sin: that flat b1/b2 multiplier doesn't care where detail actually is. V1 boosts the same slice of channels everywhere, which is why pushing the gain too far makes things crunchy or blotchy. V2 scales the boost by a normalized mean activation map - the channels that are already doing something get boosted harder, the quiet ones stay quiet. Same idea, spatially aware, far less likely to blow out.
WAS_FreeU_V2 is WASasquatch's advanced version of that idea, from the same FreeU_Advanced pack as WAS_FreeU. It's the node I'd actually reach for on SDXL if I want FreeU-style detail without babysitting artifacts.
How it works
Mechanically it's the same skeleton as V1: it clones your model and registers block patches on the 1280-channel and 640-channel feature stages. The difference is in the gain. Instead of h[:, :slice] * b, V2 computes the per-pixel mean across channels, normalizes it to [0, 1], and applies:
h * ((b - 1) * hidden_mean + 1)
So at b = 1.1, active features get a ~1.1x push and inactive ones get barely anything. That's why you can run b values that would make V1 look like a sharpening filter went rogue.
A second difference you'll notice in the UI: instead of one target_block dropdown, V2 gives you three boolean toggles - input_block, middle_block, output_block - all defaulting to false.
The inputs that matter
- model - from Load Checkpoint. Cloned, not modified.
- input_block / middle_block / output_block - at least one must be true or the node does nothing. Output block is where the visible effect lives; enable it first.
- b1 / b2 - gain for the 1280-ch and 640-ch slices. Defaults 1.1 / 1.2. Because the boost is activation-weighted, you've got more headroom to push these before artifacts than with V1.
- s1 / s2 - Fourier scale at the threshold radius (0.9 / 0.2 defaults).
- slice_b1 / slice_b2 - how many channels of each stage get the treatment (640 / 320 defaults).
- multiscale_mode / multiscale_strength - the frequency-shaping preset and its intensity;
Defaultis the safe pick.
Optional: threshold (Fourier mask radius) and use_override_scales / override_scales for hand-typed radius, scale pairs (#, //, ! start comments). Output is a single patched MODEL that replaces the checkpoint output into your KSampler.
Installing it
Same pack as WAS_FreeU and Post-CFG SHIFT. Via ComfyUI Manager, search FreeU_Advanced, install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/WASasquatch/FreeU_Advanced
Then restart ComfyUI. No requirements.txt, no model downloads - it's torch FFT under the hood, which ComfyUI already ships. It lives in the _for_testing category, so check the test section of the node menu.
Troubleshooting
- No effect? You almost certainly left all three block toggles off. It's the one genuinely easy-to-miss trap in this node.
- Still no effect on a modern model? The 1280/640 channel hooks only exist in SD-class UNets. On Flux and other transformer architectures it does nothing - that's what the pack's Post-CFG SHIFT node is for.
- Gray or washed output with an exotic multiscale preset? Switch to
SharpenorPass-Through, or lowerthreshold/s1/s2.
FreeU V2 doesn't call any API and needs no key, no LoRA, no training - it's a "free lunch" that's just smarter about where it serves the food.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| input_block | BOOLEAN | false | Enable patching on the input block. |
| middle_block | BOOLEAN | false | Enable patching on the middle block. |
| output_block | BOOLEAN | false | Enable patching on the output block. |
| multiscale_mode | COMBO | Frequency shaping preset used by Fourier_filter. | |
| multiscale_strength | FLOAT | 1.0000–1 | Intensity of multi-scale shaping [0-1]. |
| slice_b1 | INT | 64064–1280 | Slice width (channels) affected in 1280-channel features. |
| slice_b2 | INT | 32064–640 | Slice width (channels) affected in 640-channel features. |
| b1 | FLOAT | 1.1000–10 | Gain multiplier for 1280-channel slice. |
| b2 | FLOAT | 1.2000–10 | Gain multiplier for 640-channel slice. |
| s1 | FLOAT | 0.9000–10 | Fourier scale at threshold for 1280-ch features. |
| s2 | FLOAT | 0.2000–10 | Fourier scale at threshold for 640-ch features. |
| thresholdopt | INT | 11–10 | Base radius for the Fourier mask. |
| use_override_scalesopt | COMBO | Enable manual override of scale presets. | |
| override_scalesopt | STRING | # OVERRIDE SCALES # Sharpen # 10, 1.5 | Custom scale lines: '<radius>, <scale>'. Comments with #,//,! |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |