Nodes/ComfyUI-TinyBee/Encode Any Properties (Dynamic)
ComfyUI Node

Encode Any Properties (Dynamic)

Build a Whole Metadata Bundle at Once

By TinyBeeman·Created about a year ago·Updated about a month ago· 1
Encode Any Properties (Dynamic)
  • value_1
  • value_2
  • value_3
  • value_4
  • value_5
  • value_6
  • value_7
  • value_8
  • value_9
  • value_10
  • value_11
  • value_12
  • value_13
  • value_14
  • value_15
  • value_16
  • properties
num_properties3
name_1property_1
name_2property_2
name_3property_3
name_4property_4
name_5property_5
name_6property_6
name_7property_7
name_8property_8
name_9property_9
name_10property_10
name_11property_11
name_12property_12
name_13property_13
name_14property_14
name_15property_15
name_16property_16

If you've used Encode Any Property a few times in a row, you know the pain: one node per metadata field, then a Combine Properties node to stitch them together - the graph starts to look like a plumbing diagram. Encode Any Properties (Dynamic) collapses all of that into a single node that can hold up to 16 named name/value pairs and emit the whole bundle in one go. It's the "do it all at once" version, and if you're assembling metadata for a queue or save workflow, it's the one you'll actually reach for.

How it works

One control input plus up to 16 dynamic pairs:

  • num_properties - how many pairs to expose (1–16, default 3). Changing this adds or removes name_N / value_N input slots on the node.
  • For each N from 1 to num_properties: name_N (the label, default property_N) and value_N (any type, *).

Output: properties, a single TINYPROPS bundle - a dictionary mapping each name to its encoded {"name", "type", "value"} object.

Each pair is encoded exactly like Encode Any Property with type UNKNOWN, so the same auto-detection applies: parseable strings become JSON, ints become INT, lists become LIST, and so on. Names are stripped of whitespace, and a pair with an empty name is silently skipped - so num_properties is a ceiling, not a contract.

The dynamic-input mechanism is the actual point. In ComfyUI a node can expose a variable number of inputs based on another input's value, and this node leans on that properly - set num_properties to 6 and six name/value slots appear. No orphaned inputs cluttering the node. The tradeoff is the usual one with dynamic nodes: the number of slots is decided at queue time, and the node re-runs whenever its inputs change.

Where you'd actually use it

  • One-stop metadata assembly: seed, prompt, CFG, steps, model, sampler - all in one node, wired straight into Combine Properties or a save-with-metadata node.
  • Queue bundles: this pack's Queue category runs on TINYPROPS, and this is the fastest way to produce one.
  • Replacing a cluster: swap five Encode Any Property nodes plus a combiner for one dynamic node.

Installing it

Part of ComfyUI-TinyBee under 🐝TinyBee/Util:

  1. ComfyUI Manager → Install Custom Nodes → search "ComfyUI-TinyBee" → Install, then restart ComfyUI.
cd ComfyUI/custom_nodes
git clone https://github.com/TinyBeeman/ComfyUI-TinyBee

Restart. No models; pure JSON assembly from the standard library.

Gotchas

Empty-name pairs are dropped without warning - if you think you set a property and it's not in the bundle, check whether the name field has whitespace or was left blank. And because num_properties controls how many slots exist, editing it mid-workflow changes the node's shape; values in pairs above the new count aren't lost but they're not sent either. One more: the dynamic slots can't be ordered arbitrarily, so if you later want to override a subset of these properties elsewhere in the graph, Combine Properties (with override_existing off) is how you merge rather than clobber.

Category🐝TinyBee/Util

Inputs (33)

NameTypeDefaultDescription
num_propertiesINT31–16
name_1optSTRINGproperty_1
value_1opt*
name_2optSTRINGproperty_2
value_2opt*
name_3optSTRINGproperty_3
value_3opt*
name_4optSTRINGproperty_4
value_4opt*
name_5optSTRINGproperty_5
value_5opt*
name_6optSTRINGproperty_6
value_6opt*
name_7optSTRINGproperty_7
value_7opt*
name_8optSTRINGproperty_8
value_8opt*
name_9optSTRINGproperty_9
value_9opt*
name_10optSTRINGproperty_10
value_10opt*
name_11optSTRINGproperty_11
value_11opt*
name_12optSTRINGproperty_12
value_12opt*
name_13optSTRINGproperty_13
value_13opt*
name_14optSTRINGproperty_14
value_14opt*
name_15optSTRINGproperty_15
value_15opt*
name_16optSTRINGproperty_16
value_16opt*

Outputs (1)

NameTypeDescription
propertiesTINYPROPS