Nodes/ComfyUI/Timesteps Range
ComfyUI Node Runs on cloud

Timesteps Range

The when dial for hook-based conditioning

By Comfy-Org·Created 4 years ago·Updated about an hour ago· 129,964
Timesteps Range
    • TIMESTEPS_RANGE
    • BEFORE_RANGE
    • AFTER_RANGE
    start_percent0.000
    end_percent1.000

    Regional conditioning tells the sampler where a prompt acts. ConditioningTimestepsRange ("Timesteps Range") tells it when. It's a tiny node with three outputs that turns the denoise timeline into windows - "this conditioning only applies between 20% and 60% of sampling" - and it's the thing that turns static regional prompts into the composition-then-detail choreography that actually looks good.

    The mechanism

    Sampling runs from 0% to 100% of the denoise schedule. This node takes a start_percent and an end_percent and hands back three TIMESTEPS_RANGE outputs:

    • TIMESTEPS_RANGE - the window between start and end. The one you'll usually wire up.
    • BEFORE_RANGE - everything before start (0% to start).
    • AFTER_RANGE - everything after end (end to 100%).

    Plug any of these into the timesteps input of a Set Props node (or the Set Props-and-combine variants) and that conditioning only contributes during its window. Before and after it, the sampler simply ignores it. Because the range is expressed as a fraction of the whole run, it doesn't care how many steps you're using - a 0.2–0.6 window is the same slice of a 20-step and a 40-step run.

    What you'd actually use it for

    The killer pattern, straight from the December 2024 hook-system announcement era: attach a timestep-limited global prompt to the default conditioning of a regional workflow. The global prompt (the one describing the whole scene) sets the composition early, then gets switched off at 60–70% so the region LoRAs can own the detail phase without it fighting them. People found this alone could replace a ControlNet for holding the image together in two-character setups.

    The before/after outputs earn their keep the other way round: sometimes you want a hook only outside a window - a quality LoRA that kicks in after composition has formed (AFTER_RANGE), or a style hook that's active before the subject settles (BEFORE_RANGE) and then steps aside.

    The inputs

    • start_percent - where the window begins (0.0 to 1.0).
    • end_percent - where it ends. Keep end > start; an inverted range is a recipe for a conditioning that never fires.

    That's it. No optional inputs, no hooks, no model. It's a pure timing primitive.

    Honest notes

    The percent framing is the main thing that trips beginners: it's not steps, it's fraction of the schedule, so "0.5" is the exact middle of the run regardless of step count. Also worth knowing - this node is part of the experimental hooks family, but unlike the others it's only a timer; you'll most often use it as an accessory to ConditioningSetProperties and friends. And one more genuine gotcha from the community: the trick of "global prompt only in the early phase" works great, but if you also have the global prompt hooked (with weights), you're paying for that extra model pass for the whole window. Timestep windows trim the influence, not the cost.

    Ships with ComfyUI core, no install. You'll find it under advanced → hooks (it's the one without a subcategory).

    Categoryadvanced/hooks

    Inputs (2)

    NameTypeDefaultDescription
    start_percentFLOAT0.0000–1
    end_percentFLOAT1.0000–1

    Outputs (3)

    NameTypeDescription
    TIMESTEPS_RANGETIMESTEPS_RANGE
    BEFORE_RANGETIMESTEPS_RANGE
    AFTER_RANGETIMESTEPS_RANGE