Get Widgets Values
Read another node's widget settings without opening it
- ANY
- PYLIST
Every node in a ComfyUI workflow JSON stores its widget state - steps, CFG, seed, whatever knobs it has - in a widgets_values array as part of the saved graph. Normally you never touch that directly; you just look at the widget on the node. Get Widgets Values exposes it anyway, which is a niche but genuinely useful move when you're debugging a workflow, building something that inspects other nodes programmatically, or trying to understand what settings a node you don't control is actually running with.
How it works
You connect it to any output from the node you want to inspect. Read that carefully, because it's the part people trip on: the connected value isn't actually used for anything - the tooltip is explicit that "the value is used only to locate the upstream node." What the node actually reads is that upstream node's stored widgets_values list, the raw serialized array of every widget setting on it, in the order the node defines them. That comes back as a PYLIST.
This is squarely a debugging and workflow-introspection tool rather than something you'd wire into a production pipeline. The obvious use: you've got a complex graph with a node buried somewhere, and instead of scrolling to find it and read its widgets visually, you drop this node on any of its outputs and get the raw values back where you're already working. A less obvious but real use: some pack authors build meta-nodes that need to know another node's current settings at runtime - this gives you a way to do that without the target node explicitly exposing an API for it.
The inputs and outputs that matter
ANY- connect to any output of the node whose widget values you want. The type doesn't matter and the value itself isn't used, only its role in locating the upstream node.
One output: PYLIST, the upstream node's widgets_values array. This node is also marked as an output node, meaning the result displays directly on the node in the graph - you don't need to route it to a separate preview node just to read it.
The one real gotcha
The list comes back unnamed and order-dependent. widgets_values is just a raw array - it doesn't tell you which value corresponds to which widget label. To make sense of [20, 8.0, "euler", "normal"] you need to already know that a KSampler-style node stores steps, then CFG, then sampler name, then scheduler, in that order. If the upstream node's widget order changes in a future pack update - which does happen - this array's meaning shifts without warning, silently.
How to install it
ComfyUI Manager: search "ComfyUI-List-Utils," install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/godmt/ComfyUI-List-Utils.git
Restart afterward. No models, no dependencies - it's reading data ComfyUI already keeps track of internally.
Common issues & troubleshooting
Values come back but you can't tell what they mean. That's the ordering issue above - cross-reference against the actual node's widget layout (open it and count top to bottom) to map index to meaning, since there's no built-in labeling.
Node returns an empty list. Some nodes store their state differently, particularly ones with fully dynamic or programmatically-generated widgets rather than the standard static widget list - if the upstream node doesn't populate a conventional widgets_values array, there may be nothing here to read.
Connected input seems to "do nothing" visually. That's expected - the connection exists purely to identify which node to inspect. If you were expecting the connected value itself to flow through somewhere, this isn't a pass-through node; it discards the value and reads the upstream node's stored settings instead.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| ANY | * | Connect any output from the node whose widget values you want to inspect. The value is used only to locate the upstream node. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| PYLIST | PYLIST | The upstream node's widgets_values list. |