Float
The Float node isn't a number box — it's how you stop retyping cfg and denoise
- FLOAT
Every workflow has a handful of numbers you fiddle with constantly - CFG scale, denoise strength, LoRA weight, that upscale amount you can never remember. Type them into widgets and they're trapped on the node. Wire them through a Float node and they become something you can see, share, and drive from anywhere on the canvas.
That's the whole job of the Float node (class PrimitiveFloat). It's a single decimal number on a widget that emits that value as a FLOAT output socket. Nothing more, nothing less - the backend literally runs return (value,). It's a pass-through, and the entire point is that the pass-through is a node.
How it works
The Float node belongs to ComfyUI's family of "primitive" value nodes - the utilities/primitive category that also holds Int, Boolean, and the text nodes. They're the standalone versions of the widgets that live inside other nodes. Backend versions of these primitives landed in core in March 2025, but the idea is much older: for years the frontend would invent a primitive node whenever you right-clicked a widget on any node and hit Convert to input. Float nodes you place from the node menu and Float nodes that materialize from a conversion are the same thing.
The single input is value: a FLOAT spanning roughly −9.2×10¹⁸ to +9.2×10¹⁸ with a step of 0.1. The output is also named FLOAT and plugs into any node expecting a float - CFG on a sampler, denoise on a VAE Encode/Decode for img2img, strength on an IPAdapter or ControlNet. One output can fan out to a dozen inputs; change the number once and every consumer updates.
Why you'd actually reach for it
Three scenarios, in order of how often I hit them:
- One number, many places. Set CFG in a Float node, feed it to every sampler in a multi-pass workflow. No more hunting for five identical widgets.
- Convert to input. Right-click any float widget (CFG on the sampler,
strengthon ControlNet) → Convert to input. ComfyUI replaces the widget with a socket and drops a Float node on the canvas. Now the value is a first-class citizen you can route, Reroute, and share. - Batch sweeps. This is the classic power move, straight out of the early r/comfyui playbook: convert the widget you want to vary, set the primitive's control after generate to increment (or randomize), set your batch count, and queue once. The author of ComfyUI himself described this exact flow for iterating a list of values, and people used it to replicate A1111's XYZ-grid model comparisons in vanilla ComfyUI before the plugin existed.
How you get it
Ships with ComfyUI core. No install, no Manager, no model files. Search the node menu for "float" or just let it appear via Convert to input.
Common issues
The two that actually bite:
- Int vs Float. The Float node rounds to the nearest 0.1 (its step). For things that must be whole numbers - steps, batch size, dimensions - use the Int node, because a lot of nodes will complain or silently truncate a 12.4.
- "Why can't I randomize my float?" The current schema wires the control-after-generate widget (fixed/increment/randomize) to Int nodes and seed nodes, not to Float. If you need a sweep of fractional values, either sweep an integer and divide it somewhere, or just accept that Float is your fixed-value knob. Don't fight it.
It's the most boring node on the canvas - until you convert your first widget and realize it quietly replaced a whole class of fiddly edits.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| value | FLOAT | -9223372036854776000–9223372036854776000 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| FLOAT | FLOAT | — |