ComfyUI Node

FEDataPacker

Bundle a tangle of wires into one list

By fexli·Created 3 years ago·Updated about a year ago· 3
FEDataPacker
  • input
  • output

FEDataPacker is the "collect all the things" node. You connect any number of inputs - strings, numbers, whatever - and it bundles them into a single Python list on its one output. Everything you wire in becomes one element of that list, in the order the sockets were added.

The trick is that it's a dynamic node: it doesn't ship with a fixed set of sockets. The pack's frontend script (packer.js) grows an input socket every time you connect a new wire and prunes empty ones when you disconnect. So you start with basically nothing and build your input list by dragging wires in. It's a genuinely nice ergonomic - no "add N inputs" widget to fiddle with, the node just conforms to whatever you throw at it.

Where it shines is batch-oriented workflows. If you're generating several prompt strings or collecting several values and want to hand the whole set to a node that processes lists, FEDataPacker is the funnel. The output is declared OUTPUT_IS_LIST, so downstream nodes see it as a list, not a single value - feed it into FEDataUnpacker to split back out, FEDeepClone to duplicate the bundle, or any batch-aware consumer.

The inputs

  • input - optional, *-typed. This is the "seed" socket; connect more wires and the node creates more sockets for you.

One thing to keep in mind: the output list is built from kwargs.values(), which means the order is the order of the node's input sockets. The frontend numbers them v<timestamp>, so for ordering-sensitive downstream work, connect your wires in the order you want them in the list - and note that reconnecting a socket can reorder things. If order doesn't matter (a set of values for a bag of data), none of this bites you.

The usual *-type caveat applies: the node accepts anything, so ComfyUI won't yell at you for packing a list together with a string, but whatever consumes the result has to be ready for a heterogeneous list. In practice it works fine for same-type bundles and is a fast way to collect data without writing a text-join chain. Not a daily driver, but the kind of node that makes a complex workflow dramatically tidier when lists are your currency.

Categoryfexli/utils

Inputs (1)

NameTypeDefaultDescription
inputopt*

Outputs (1)

NameTypeDescription
output*