Nodes/ComfyUI-TinyBee/Combine Properties
ComfyUI Node

Combine Properties

Merge Your Metadata Into One Bundle

By TinyBeeman·Created about a year ago·Updated about a month ago· 1
Combine Properties
  • prop_a
  • prop_b
  • prop_c
  • prop_d
  • existing_properties
  • combined_properties
  • combined_properties_json
override_existingtrue

The property pipeline in TinyBee - encode values as named properties, carry them through the graph, save them with your image - lives and dies on one merge step: turning several individual properties into a single bundle. That's Combine Properties. You give it up to four TINYPROPs and optionally an existing TINYPROPS bundle, and it merges them into one dictionary, plus a ready-to-serialize JSON string. If Encode Any Property creates the metadata, Combine Properties is where it gets collected into something a save node can actually use.

How it works

  • prop_a through prop_d - up to four individual TINYPROPs (the output of Encode Any Property). All optional; wire as many as you have.
  • existing_properties - a TINYPROPS bundle to merge on top of, or use as the base. This is how you combine bundles with bundles, or start from a bundle produced elsewhere (say, from a queue or from the Dynamic encoder).
  • override_existing (default on) - the merge policy. On: a later property with the same name replaces the existing one. Off: existing names are preserved and new properties only fill in the gaps.

Two outputs:

  • combined_properties - the merged TINYPROPS dictionary (name → property object).
  • combined_properties_json - the same thing as a JSON string, ready for a save node or a text output.

The merge order matters and is easy to get backwards: existing_properties is loaded first, then each prop is added in order - so with override_existing on, prop_a..prop_d win over the existing bundle. With it off, the existing bundle wins and props only add keys that aren't there yet. The "which side wins" question is entirely determined by that toggle, and it's the one knob that surprises people.

A property only gets added if it's a valid dict with a name and value, and the final bundle is keyed by property name - so two props with the same name can't coexist; the toggle decides who survives.

Where you'd actually use it

  • Final metadata assembly: combine your encoded seed, prompt, and model properties, then hand combined_properties_json to a save-with-metadata node or an output text box.
  • Layered metadata: merge a defaults bundle (existing_properties) with per-run props, using override_existing off so defaults fill gaps without clobbering run values.
  • Queue payloads: produce the bundle this pack's Queue category consumes.

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; it's dict merging plus a json.dumps - pure standard library.

Gotchas

The override_existing toggle is the merge policy - flipping it inverts which side wins, so write your workflow knowing you're committing to one. If a prop comes through as something other than a name/value dict (say, an UNKNOWN type that mis-inferred), it's silently skipped; no error, just an absent key. And remember the output keys are property names, so duplicate names collapse - if you genuinely need two same-named values, rename one upstream. The JSON-string output is the same data, so pick whichever your downstream node wants; they'll never disagree.

Category🐝TinyBee/Util

Inputs (6)

NameTypeDefaultDescription
prop_aoptTINYPROP
prop_boptTINYPROP
prop_coptTINYPROP
prop_doptTINYPROP
existing_propertiesoptTINYPROPS[object Object]
override_existingoptBOOLEANtrue

Outputs (2)

NameTypeDescription
combined_propertiesTINYPROPS
combined_properties_jsonSTRING