Meta Batch Timer
A render timer that survives the VHS Meta Batch requeue
- meta_batch
- passthrough
- passthrough
- time_string
- seconds
- status
If you've ever batch-rendered a long video through VHS's Meta Batch Manager, you know the feeling: hit Queue, and instead of one run you watch ComfyUI fire the same workflow off again and again, once per batch, until a 20-minute clip has taken the better part of an evening. Nothing tells you how it's going. A normal workflow timer is useless there, because every requeue is a brand-new prompt with its own prompt_id - the clock resets to zero on batch one, batch two, batch three, like a stopwatch someone keeps slapping.
Meta Batch Timer exists to be the stopwatch nobody slaps. It's a small utility from the TrentNodes pack, built specifically around VHS's batch-manager behavior, and it reports the whole-run picture: total elapsed, batches done out of total, average per batch, frames per second, and - the thing you actually queued up to know - an ETA for the remaining batches.
How it survives the requeue
The trick is where it stores its start time. A per-prompt timer resets every batch because it measures from the current run's execution_start. Meta Batch Timer instead stamps its start onto the BatchManager instance itself - the object VHS keeps alive across all its re-queues - so the elapsed time keeps accumulating no matter how many times the graph reloads. On the first batch of a fresh run (requeue == 0) it grabs the true execution start of the run and stores it; every later batch just reads that stamp and subtracts.
It also works out how many batches are coming, from the manager's total_frames and frames_per_batch (integer ceil division), so the status output can say batch 4/17 - elapsed 12m 03.4s - ETA 39m - avg 4m 01s/batch - 8.3 frames/s instead of just a bare number. And because it's a timer, it declares IS_CHANGED with NaN - the always-rerun trick - so ComfyUI's cache can't skip it mid-render and hand you a frozen timestamp.
The one wiring decision that matters
This is where people get burned, and the author's own tooltip spells out the fix:
meta_batch(required) - wire this from the VHS_BatchManager output.passthrough(optional, any type) - route a late output through it.format-hms(default,1h 02m 03.4s),clock(1:02:03.4), orseconds.
Route something through passthrough. If you leave it unconnected, the timer runs near the start of each batch - it executes as soon as its inputs are ready - so it counts only the batches already finished, the ETA lags one batch behind, and the final total never includes the last batch. Feed it the VHS Video Combine Filenames output (or any output that only exists at the end of a batch) and the timer runs after that batch's work, so the current batch counts as done. Same trick the WorkflowTimer node uses, and the same failure mode if you skip it: it still runs, just with a systematically wrong ETA.
Outputs
passthrough- hands your wire back so you can break a connection without losing it.time_string- elapsed, in your chosenformat(a STRING you can show in a text node).seconds- elapsed as a FLOAT, if you want to drive logic or math off it.status- the full human-readable line: batch position, elapsed, ETA, average, frames/s. On the final batch it flips toCOMPLETE - total 1h 02m 03.4s.
Install
It ships in TrentNodes ("Trent Nodes" in ComfyUI Manager, or comfy node registry-install trentnodes). Manual, if you prefer:
cd ComfyUI/custom_nodes
git clone https://github.com/TrentHunter82/TrentNodes.git
cd TrentNodes && pip install -r requirements.txt
Restart ComfyUI after. Two things worth knowing: the pack's requirements.txt is heavy (vosk, transformers, fal-client, timm and friends) but this node itself needs none of it - just a recent ComfyUI and VHS installed, since meta_batch only accepts a real VHS_BatchManager. The node lives under Trent/Utils, and it's marked an output node, so it appears as a queue target like a preview.
When it bites you
Mostly it doesn't, once passthrough is wired. The edge cases: start-time is stamped on the first batch, so if you change batch settings (frame counts, or the number of clips) mid-run without restarting the queue, the totals and ETA go stale - treat a fresh meta-batch run as a fresh timer. And a fully cached batch can still finish fast enough that the requeue flickers by; that's ComfyUI, not the node. Otherwise it's the one node you leave in the graph and forget about - which, for a render that takes hours, is exactly the point.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| meta_batch | VHS_BatchManager | — | |
| format | COMBO | hms | 3 options: hms, clock, seconds |
| passthroughopt | * | Route the Video Combine Filenames output through here so the timer runs after each batch finishes. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| passthrough | * | — |
| time_string | STRING | — |
| seconds | FLOAT | — |
| status | STRING | — |