Set Tab Title Variable
Variables for Your ComfyUI Tab Title
- value
If you've ever run a queue of a dozen workflows and found yourself alt-tabbing between ComfyUI tabs going "which one is the shirt job again?" - this is the pack for you. ComfyUI-Liebs-Title is a tiny utility that lets you rename the browser tab so it actually tells you something useful about what's running. This node, LiebsTitleVar (displayed as Set Tab Title Variable), is the half that feeds live values into that title.
The whole pack is two moving parts. Right-click anywhere on the canvas and you get a new Set Browser Tab Title menu option - it pops a prompt where you type a format string like %color% - %garment% - %title%. Then this node, sitting in your graph, supplies the %color% and %garment% at run time. The format string is saved into the workflow JSON itself, so it survives a save, a reload, and even travels with the graph when you share the PNG. Neat trick, that: your tab title is part of the workflow, not a browser preference.
How it works
The node is a chameleon. Drop one in, wire anything into its value input - a prompt text, a seed number, a filename from a save node - and give it a name. When the prompt executes, the node sends the value up to the frontend over ComfyUI's prompt server, and the JS extension swaps %yourName% out of the title format. Anything you didn't supply renders as (no value), so typos are instantly visible instead of mysteriously silent. It's an output node with no outputs, which is fine - its entire job is a side effect at execution time.
The inputs that matter
Only three, and you'll touch two of them:
name(STRING, defaultvar1) - the variable name. Keep it lowercase and simple:%color%,%model%,%seed%.value(any type) - wire in whatever you want to display. Because the input accepts anything, you can feed it numbers, strings, even tensors if you're feeling chaotic (it'll stringify).regex(STRING, optional) - the interesting one. Give it a pattern with capturing groups, comma-separate the names inname, and each group becomes its own variable. RunShirt:(Red|Blue)withnameset tocolor,shirtand you get both%color%and%shirt%from one node.
One built-in for free: %title% is always the original title ComfyUI would have shown (including the live [67%][67%] KSampler progress while a prompt runs). Format strings usually want it at the end so you keep your progress readout.
Installing it
Easiest via ComfyUI Manager: search for ComfyUI-Liebs-Title and install. Or do it by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/marklieberman/ComfyUI-Liebs-Title
Then restart ComfyUI - actually, reload the browser tab too, because this one ships a frontend extension. No model downloads, no Python dependencies beyond what ComfyUI already has. It's about as dependency-free as a custom node gets.
Where people get burned
- The title only updates when you run a prompt. Set the format, and nothing changes until execution fires. That's by design - the node is execution-driven.
- Regex is a trap if you're rusty. A malformed pattern throws
Invalid regular expression!and fails the run, and a pattern that matches nothing silently produces no variables. Test with the%title%-only format first, then add groups. - Multi-tab weirdness. Early versions updated the wrong tab when you had several ComfyUI instances open. That's fixed in 1.0.4–1.0.6 via a per-tab ID with duplicate detection, so just make sure you're past 1.0.4 if you live in multiple tabs.
Is it life-changing? No. But for anyone who queues jobs and walks away, being able to glance at the tab strip and see Red - TShirt - [43%] KSampler instead of three identical "ComfyUI" tabs is a small, persistent win. It won't generate anything - it just makes the thing you're already running legible.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| name | STRING | var1 | — |
| value | * | — | |
| regexopt | STRING | — |
Outputs (0)
No outputs