Bundle Unpack
Explode a bundle back into individual outputs
- bundle
- bundle
- value1
- value2
- value3
- value4
- value5
- value6
- value7
- value8
- value9
- value10
- value11
- value12
- value13
- value14
- value15
- value16
- value17
- value18
- value19
- value20
- value21
- value22
- value23
- value24
- value25
- value26
- value27
- value28
- value29
- value30
- value31
- value32
Bundle Pack collapses values into one wire so your graph stays clean in the middle. Bundle Unpack is the other bookend: at the destination, it takes that BUNDLE and explodes it back into up to 32 individual outputs, one per key. You pack once, travel clean, unpack where you actually use the values.
How it works
A required bundle input, then up to 32 value outputs - value1 through value32 - plus the bundle itself passed through unchanged as the first output (handy if you want to keep the bundle flowing after unpacking). The count control sets how many output slots are visible (1–32), and hide_links does the usual wire-hiding for tidiness.
The key detail: output labels are set by renaming the slots, and they must match the keys used when packing. Unpack isn't magic - it reads by label, exactly the same contract as Bundle Pack on the other end. You renamed the Pack slot seed, so you rename this output slot seed and the value lands there. If the labels don't match, the output is None.
Outputs beyond count are None, and any slot whose key isn't in the bundle comes out None rather than erroring. So an Unpack with more slots than the bundle has keys is safe - just full of Nones.
When to use it vs. Bundle Get
If you need most of the bundle's values at the destination, Unpack is the clean move: one node, all the sockets, wire them where they go. If you need exactly one value, Bundle Get is lighter - it reads a single key (with dot notation for nested paths) and outputs just that, without plopping a 32-output node in your graph. Rule of thumb: several values → Unpack, one value → Get.
Install
Part of Nifty Nodes for ComfyUI. Manager: search "Nifty Nodes for ComfyUI" → Install → restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/Stibo/comfyui-nifty-nodes
Restart ComfyUI. Pure Python, no models, no special dependencies. The pack is MIT-licensed, v3-API native, and new (v2.1.0, mid-2026) - update it if a workflow references these nodes and ComfyUI doesn't recognize them.
Gotchas
Label matching is the entire failure mode. Pack renames a slot to seed, Unpack must have an output slot renamed seed - case-sensitive, exact. A mismatch gives you a silent None, and since there's no error, you'll debug it by double-clicking labels. Also: Unpack reads the bundle as it arrived at that node. If something downstream of the Pack also modifies the bundle via Bundle Set on a parallel branch, that later copy doesn't retroactively change what this Unpack already unpacked. The bundle is a value that flows forward, like everything else in ComfyUI.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| bundle | BUNDLE | The bundle to unpack. | |
| count | INT | 11–32 | Number of value outputs to show (1–32). The slot labels must match the keys used when packing. |
| hide_links | BOOLEAN | false | Hide the connection wires going out of this node to reduce visual clutter. |
| _slot_names | STRING | [] | — |
Outputs (33)
| Name | Type | Description |
|---|---|---|
| bundle | BUNDLE | — |
| value1 | * | — |
| value2 | * | — |
| value3 | * | — |
| value4 | * | — |
| value5 | * | — |
| value6 | * | — |
| value7 | * | — |
| value8 | * | — |
| value9 | * | — |
| value10 | * | — |
| value11 | * | — |
| value12 | * | — |
| value13 | * | — |
| value14 | * | — |
| value15 | * | — |
| value16 | * | — |
| value17 | * | — |
| value18 | * | — |
| value19 | * | — |
| value20 | * | — |
| value21 | * | — |
| value22 | * | — |
| value23 | * | — |
| value24 | * | — |
| value25 | * | — |
| value26 | * | — |
| value27 | * | — |
| value28 | * | — |
| value29 | * | — |
| value30 | * | — |
| value31 | * | — |
| value32 | * | — |