FEDeepClone
Clone any value N times, for real
- input
- output
FEDeepClone takes one value and hands you back count independent copies of it as a list. Input a string, an image, a dict, anything; set count (default 4, 1–256); get a list of that many copies on the single output.
The word that actually matters is in the name: deep. The implementation uses Python's deepcopy, which means it doesn't just copy a reference - it recursively duplicates the object. For most values you pass through ComfyUI that's the same thing, but for containers it's a real difference. If you clone a dict or a list, mutating one copy doesn't corrupt the others. That's the whole reason this node exists rather than a "repeat wire" primitive: when you're about to hand the same data structure to several downstream branches and some of them modify it, you don't want them stomping on each other.
The outputs are output, type *, declared as a list. So the node's job is producing batches: clone a prompt to drive a batch sampler, duplicate a color or config dict into a list for FEDataUnpacker to split, or clone a condition object across branches. It pairs naturally with the pack's pack/unpack pair - clone a value N times, unpack the list, and you've got N separate wires each carrying its own copy.
Where people get confused:
- It's a list out, not N sockets out. The output is one list socket carrying N items, not N separate outputs. Unpack it with
FEDataUnpackerif you want individual wires. - Memory.
deepcopyof a big image tensor or a large list means N copies of the data in RAM. Cloning a 4K batch a hundred times is a fine way to run your machine out of memory. Keepcountproportional to what you actually need. - The
*-type trap. As with everything in this pack's any-typed family, ComfyUI won't warn you if you clone a value whose downstream consumers can't handle it. The node accepts anything and the failure, when it comes, happens later.
It's a quiet utility - nobody builds a workflow around FEDeepClone - but it's the correct answer to a specific, recurring problem, and it costs nothing to keep in the graph. The "deep" semantics are the difference between a node you'd trust with real data and a footgun, and this one picks the trustworthy side.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| input | * | — | |
| count | INT | 41–256 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| output | * | — |