ComfyUI Node

FEDataUnpacker

Un-bundle a list back into separate outputs

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

FEDataUnpacker is the mirror image of FEDataPacker: one list in, and each element comes out on its own output socket. It's the node you reach for when a workflow hands you a list but you actually need the items as separate wires - say, a packed batch of prompt strings that each needs to go to a different branch.

Like its packer sibling, it's dynamic on the frontend. The node technically declares 32 output sockets in code, but the pack's packer.js script trims away every unused one and adds new sockets on demand as you connect wires. So in practice you see exactly the number of outputs you're using, one per element of the input list, in order. Element zero goes to the first connected output, element one to the second, and so on.

The input

  • input - optional, *-typed, and treated as a list (INPUT_IS_LIST). Connect it to something that produces a list, like FEDataPacker, FEDeepClone, or FEDataInsertor.

That last point is the one that bites people: the node expects a list on the wire, not a single value. Feed it a lone string and the unpacking gets confusing, because ComfyUI won't warn you - the * type accepts anything visually. If you're getting fewer populated outputs than you expect, check that what's upstream is actually producing a list, not a scalar.

The output sockets are all named output, type *, and are not themselves lists - each one carries a single element. Wire them into whichever consumers need them. It chains cleanly with FEDataPacker: pack a bunch of values, run them through whatever list-processing the workflow does, unpack them on the other side. That pack/unpack round trip is the whole reason this pair exists.

Honest notes: there's no "unpack this one item" or "skip the first N" control - the mapping is strictly positional, and if your list has more items than connected outputs, the extras just go nowhere. For positional work that's fine; if you need to pull items by name rather than position, the dict-flavored nodes (FEDictPacker/FEDictUnpacker) are the better fit. As glue goes, this one is simple, predictable, and does exactly one thing.

Categoryfexli/utils

Inputs (1)

NameTypeDefaultDescription
inputopt*

Outputs (32)

NameTypeDescription
output*
output*
output*
output*
output*
output*
output*
output*
output*
output*
output*
output*
output*
output*
output*
output*
output*
output*
output*
output*
output*
output*
output*
output*
output*
output*
output*
output*
output*
output*
output*
output*