Sleep
The node that slows your workflow down on purpose
- passthrough
- passthrough
- slept
A node whose only job is to sit there and do nothing sounds like the most pointless thing in the pack - until you've hit a rate limit, or watched a workflow read a file the instant another program was still writing it. Sleep is the ComfyUI equivalent of time.sleep(), except it plugs into the middle of a graph and only delays the parts below it.
What it actually does
Set seconds (a FLOAT, 0 to 3600) and Sleep waits, then hands whatever was wired into its passthrough input straight back out. That passthrough socket is the clever bit: it takes anything - an image, a model, text, a number - and returns it unchanged on a socket carrying the same type. Wire your thing through the middle of a chain and the delay lands between the two halves instead of off to one side. Leave passthrough unwired and it just waits on its own.
You'll most often reach for it to pace things:
- In front of an HTTP or API node with a rate limit, where hammering the endpoint gets you banned or throttled. The
secondstooltip even does the math for you -1.2for a service allowing 50 calls a minute. - Waiting on a folder or file that another program is still writing. Sleep doesn't poll or check anything; it's a plain timed wait, so pair it with something that actually re-reads afterward.
- Inside a loop that would otherwise grind a device or endpoint flat.
Two behaviors are worth knowing before you wire it in. First, the wait isn't cached: run the queue twice and it waits twice, and everything downstream re-executes too. Second, it respects cancellation - it checks for a cancelled run every 0.05 seconds, so hitting cancel stops the wait within about a twentieth of a second rather than making you stare at a progress bar for the full minute.
The output that tells you the truth
Besides passthrough, Sleep outputs slept - a FLOAT of the seconds actually spent waiting, measured rather than repeated back. Ask for 1.0 and you'll get something like 1.001. Wire that into Text Concatenate or a Number Operation and you can log how long a paced run took, or feed it back into later timing logic.
One honest gotcha: ComfyUI runs one queued prompt at a time per queue by default, so a long sleep holds the line for everything behind it. That's usually exactly what you want with a rate limit, but don't scatter big sleeps around a workflow you run interactively and then wonder why the whole thing feels laggy.
Installing it
Sleep is part of WAS Node Suite v3 (the was-node-suite-comfyui pack by WASasquatch, MIT licensed). Install the pack once and all 457 nodes come with it:
# ComfyUI Manager: search "WAS Node Suite v3", install, restart.
# Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/WASasquatch/was-node-suite-comfyui.git
Restart ComfyUI after cloning. You need ComfyUI 0.14.0+ and Python 3.10+. Nothing else is pip-installed for Sleep - the v3 rewrite of this pack deliberately runs on zero extra default dependencies, unlike the older v2 that dragged in piles of packages. The first start takes a second or two longer while the pack compiles and writes its config.yaml under your ComfyUI user dir; every start after that is fast.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| seconds | FLOAT | 1.00–3600 | How long to wait. 0 = no wait; 0.5 = half a second; 60 = a minute; 3600 = an hour, the most on offer. Match it to the limit being respected, such as 1.2 for a service allowing 50 calls a minute. |
| passthroughopt | COMFY_MATCHTYPE_V3 | Anything at all: an image, a model, text, a number. It comes back out unchanged once the wait is over, which is what puts the delay in the middle of a chain rather than off to one side. Leave it unwired to wait on its own. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| passthrough | COMFY_MATCHTYPE_V3 | The value that came in, unchanged, on a socket carrying its type. Nothing wired to it starts until the wait is over. Empty when nothing was wired into passthrough. |
| slept | FLOAT | Seconds actually spent waiting, measured rather than repeated back, so 1.0 comes out as 1.001 or so. Wire it to Text Concatenate or Number Operation to record how long a run was paced for. |