Nodes/Sage Utils/FreeU v2
ComfyUI Node

FreeU v2

A free quality boost — if your model still likes FreeU

By arcum42·Created 2 years ago·Updated 29 days ago· 33
FreeU v2
    • model_shifts
    freeu_v2false
    b11.30
    b21.40
    s10.90
    s20.20

    FreeU is one of those rare things in the diffusion world: a genuine free lunch. No extra model, no extra pass, no bigger latent - just a patch to the UNet that makes many images sharper and more detailed at no real cost. Sage's FreeU v2 node doesn't reinvent that, and it doesn't even apply it directly. It packages the settings into a model_shifts bundle that the pack's loader applies for you.

    The catch, and it's a real one: FreeU was tuned for the SD 1.5/SDXL generation of models. The community's enthusiasm never died - FreeU still gets discussed by the thousands of posts a month - but the newer flow-matching architectures (Flux, Z-Image, and friends) largely ignore it or actively dislike it. So think of this as a tool for the older checkpoint you still love, not a universal "make everything better" button.

    How it works

    Under the hood this is the ComfyUI FreeU_V2 parameters you already know, just relocated. The node takes five settings - freeu_v2 (master on/off), b1, b2, s1, s2 - and returns them as a model_shifts bundle. When you feed that bundle into Sage's Load Models (Sage_LoadModelFromInfo), the loader sees the FreeU settings and patches the UNet with them before sampling begins. The mechanism is the standard FreeU trick: it amplifies the backbone features while damping the skip-connection features in the early and middle UNet stages, which recovers detail the model would otherwise smear.

    The inputs that matter

    There are five, and only two are worth touching at first:

    • freeu_v2 - the enable switch. This is what you actually flip on and off when you're A/B testing whether FreeU helps a given checkpoint.
    • b1 / b2 - backbone scales (defaults 1.3 / 1.4). These amplify the main UNet path.
    • s1 / s2 - skip scales (defaults 0.9 / 0.2). These damp the skip connections.

    The defaults are the stock FreeU v2 values, and for SD 1.5/SDXL they're a fine starting point. If you find the image overcooked - too much contrast or weird halos - lower b1/b2 toward 1.0 before you touch anything else. The single output, model_shifts, wires into the model_shifts input on the Load Models node.

    Wiring it up

    The full chain looks like:

    Sage_FreeU2 ──model_shifts──▶ Sage_LoadModelFromInfo ──model/clip/vae──▶ sampler
    

    If you also want a timestep shift on the same model, the pack's Model Shifts node combines both in one dropdown - this node is the FreeU-only slice of that.

    Installing

    Same as every Sage Utils node:

    cd ComfyUI/custom_nodes
    git clone https://github.com/arcum42/ComfyUI_SageUtils.git
    cd ComfyUI_SageUtils && pip install -r requirements.txt
    

    Then restart ComfyUI, or grab "Sage Utils" from ComfyUI Manager. No models to download - FreeU is pure code.

    Where people get burned

    Two traps. First, forgetting the master switch: freeu_v2 defaults to false, and the bundle still flows through the loader. If you set all the b/s values and see nothing change, check the enable toggle - that's the most common "it's broken" report for this node. Second, the model-shift architecture mismatch: if you're running a distilled flow-matching model, FreeU can hurt more than help, so test it per-checkpoint rather than assuming. When it works, it's free quality; when it doesn't, one toggle and it's out of the way.

    CategorySage Utils/model

    Inputs (5)

    NameTypeDefaultDescription
    freeu_v2BOOLEANfalseEnable FreeU v2 adjustments.
    b1FLOAT1.300–10FreeU v2 b1 parameter.
    b2FLOAT1.400–10FreeU v2 b2 parameter.
    s1FLOAT0.900–10FreeU v2 s1 parameter.
    s2FLOAT0.200–10FreeU v2 s2 parameter.

    Outputs (1)

    NameTypeDescription
    model_shiftsMODEL_SHIFTSFreeU v2 model settings output for the loader.