Input: Float (lab)
A typed decimal constant, with a sane step size
- float
Input: Float (lab) is a number widget that outputs a FLOAT. It holds a decimal value (default 0, step 0.01) and hands it out as a properly typed connection. Like its integer and boolean siblings, it exists for the moments when ComfyUI won't let you wire a value into a typed slot without a typed source.
The practical case is CFG scale, denoise, or any float that lives inside a bigger node as a widget. When you want that value driven by something - a queue sweeping denoise from 0.4 to 0.8, a format node building a prompt with it, another node computing it - you can't easily pull a widget value out. InputFloat is the place that float comes from, explicit and findable.
What it is
One widget, value (a float, step 0.01), one output, float. The step size matters more than it looks: 0.01 steps make dragging through denoise or CFG ranges feel right instead of jumpy. There's no min/max clamp, so it'll happily hold a 12.5 CFG or a 0.05 denoise.
Where it earns its keep:
- Queue-driven variation - a
LISTof floats (fromList: from Multilinewithconvert: float) sweeps a KSampler's CFG or denoise through a batch. - Computations - feed it into format strings (
{cfg:.1f}) or into the pack's resolution/calculation utilities. - Single source of truth - one float feeding several consumers, editable in one place instead of three widgets.
Install
ComfyLab Pack installs as one package (nodes display with "(lab)" suffixes). ComfyUI Manager: search ComfyLab Pack, install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/bugltd/ComfyLab-Pack.git
cd ComfyLab-Pack
pip install -r requirements.txt
Restart after. No model files, light requirements.
Gotchas
- Floats are floats. If the consumer expects an integer, a
7.0here can still cause type friction downstream - keep integer math on the integer node. - It's a constant, not a control. No sliders with live ranges, no clamping. If you want a bounded knob, the target node's own widget is usually better.
It's the sort of node you add once, feel slightly silly about, and then reuse in every workflow that varies a CFG or denoise. Boring on purpose.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| value | FLOAT | 0.00 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| float | FLOAT | — |