Nodes/Img Label Tools/Local Timer End
ComfyUI Node

Local Timer End

Finally, time one section of your workflow

By rjgoif·Created 9 months ago·Updated 2 months ago· 5
Local Timer End
  • passthrough
  • timer
  • passthrough
  • time_string
  • time_float
formath m s

Local Timer End is the second half of a two-node stopwatch that answers a genuinely annoying question: "how long did that part of my workflow take?" ComfyUI shows you total execution time, but if your graph has three samplers and an upscale pass, total time tells you nothing about where the minutes went. Wire a Local Timer Start before the section you care about, wire this node after it, and it tells you the elapsed time in the format you actually want.

It's a passthrough node with a timer grafted on. You connect whatever data the section would have carried anyway through the passthrough input, so it costs you nothing in graph flow, and you connect the timer input from a Local Timer Start node's timer output. It computes now - start_time when it runs and hands you the result.

The inputs that matter

There are only three, and two are passthrough plumbing:

  • passthrough - any value or list, passed through unchanged. It's a wildcard, so you can thread an image, a latent, a string, anything. That's the point: the node can sit in your data path without changing it.
  • timer - connect the timer output of the paired Local Timer Start node. Nothing else works here; it's a dedicated TIMER type.
  • format - how the elapsed time is reported:
    • h m s (default) → "3h 5m 2s" style, with zero parts omitted (34 seconds just shows "34s").
    • hh:mm:ss"03:05:02".
    • h / m / s → a float in that unit, rounded to 2 decimal places, for math or for logging.

The outputs

Three outputs, matched to the format. passthrough is your data, unchanged - that's what continues your workflow. time_string is the human-readable elapsed time (empty when you pick a float format). time_float is the numeric elapsed time in the unit your format implied (0.0 for string-only formats). So pick the format that matches how you want to consume the result; it also prints the measured time to the ComfyUI console, which is handy for a quick look without wiring anything.

Install

It's part of Img Label Tools: ComfyUI Manager → search "Img Label Tools" → install, or clone:

cd ComfyUI/custom_nodes
git clone https://github.com/rjgoif/ComfyUI-Img-Label-Tools

Restart ComfyUI after either. No dependencies beyond what ComfyUI already ships.

Gotchas

The Start node intentionally re-executes on every run so timings are real, but that means anything hanging off its passthrough output also re-runs even if its inputs didn't change - don't use the Start's passthrough as a "cache protector" for an expensive section. And remember ComfyUI executes in dependency order: Start needs to be placed before the nodes you're timing in that order, not just visually above them. Multiple pairs work independently, so you can time several sections of one workflow at once - that's the "Local" in the name.

CategoryImage Label Tools

Inputs (3)

NameTypeDefaultDescription
passthrough*Any value or list — passed through unchanged.
timerTIMERConnect from a TimerStart node's 'timer' output.
formatCOMBOh m sOutput format. h m s → '3h 5m 2s' / '34s' (zero parts omitted) hh:mm:ss → '03:05:02' h → float hours (2 dp) m → float minutes (2 dp) s → float seconds (2 dp)

Outputs (3)

NameTypeDescription
passthrough*The passthrough input, unchanged.
time_stringSTRINGElapsed time as a formatted string (empty for float-only formats).
time_floatFLOATElapsed time as a float in the unit chosen by 'format' (0.0 for string-only formats).