HT Base Shift
Let the image size pick the shift for you
- image
- max_shift
- base_shift
If you've ever tuned a Flux or SD3 workflow, you've met the shift parameter - the one that controls how strongly the sampler pushes toward the high-noise end of the schedule. It's a tiny slider that quietly ruins images if it's wrong, and it's supposed to scale with resolution. HT Base Shift, from HommageTools, computes that scaling for you so you stop eyeballing it.
What it does
Give it an image size and it returns two floats: max_shift and base_shift. Feed those into whatever sampler node you use that exposes a shift input, and the sampler gets values sized to the actual resolution instead of the same magic number at every resolution.
The inputs are:
- image_width / image_height - defaults 1024×1024. These define the working resolution.
- max_shift (default 1.15) and base_shift (default 0.5) - your preferred endpoints.
- image (optional) - pass an IMAGE in and it reads the dimensions straight off the tensor, overriding the width/height widgets. Handy when the source size changes run to run.
The calculation is a simple interpolation: the larger the image area, the further max_shift gets pulled from base_shift, following the general rule that bigger canvases want more shift. The exact formula is pack-specific - don't expect it to match a particular model's official guidance - but it's a sensible default generator, and that's the honest framing: this is a convenience calculator, not a scientifically derived law.
When you'd reach for it
The main use case is img2img and multi-resolution workflows where you're resizing before sampling. You wire your image through HT Dimension Analyzer or straight into this node's image input, get shift values, and hand them to a sampler. When you swap between a 512 preview and a 2048 final, the shift follows along instead of staying wrong.
The less obvious use: as a teaching tool. Run it on a few resolutions and watch what it outputs. You'll start to see why one shift value can't serve every size.
Installing it
It ships with the HommageTools pack. ComfyUI Manager → search HommageTools, or:
cd ComfyUI/custom_nodes
git clone https://github.com/ArtHommage/HommageTools.git
cd HommageTools && pip install -r requirements.txt
Restart ComfyUI and it's under the HommageTools menu.
Honest caveats
- Only some samplers actually expose a shift input. If yours doesn't, this node has nowhere to plug its output - check your sampler's inputs first.
- The defaults (1.15 max, 0.5 base) are tuned for models where shift lives in roughly that range. If you're on a model family with very different shift conventions, keep the endpoints close to what that model's docs suggest and let the node handle the resolution scaling.
- Its outputs are bare floats. If your sampler wants the shift as a fraction of steps or something weirder, you'll need an extra conversion.
It's a small node with a small job, and it does that job cleanly. If you never touch shift settings, you don't need it - but if you resize mid-workflow, you'll wonder why you were typing numbers by hand.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| image_width | INT | 102464–8192 | — |
| image_height | INT | 102464–8192 | — |
| max_shift | FLOAT | 1.150–100 | — |
| base_shift | FLOAT | 0.500–100 | — |
| imageopt | IMAGE | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| max_shift | FLOAT | — |
| base_shift | FLOAT | — |