Merge PSD Files
Stitch up to five PSDs onto one canvas, each in its own named group
- psd_1
- psd_2
- psd_3
- psd_4
- psd_5
- psd
If you've ever had to combine several Photoshop files into one document and then gone hunting for a plugin, this is the node that replaces the hunt. Merge PSD Files takes one to five PSD references and combines them onto a single canvas, keeping each source's complete nested group structure intact and dropping each one inside its own named root group. The result is a composite document you can still edit layer-by-layer - not a flattened mash.
The way it works is actually tidy. Every source PSD gets centered on the shared canvas, and all of its pixel layers are collected with their positions offset by the centering amount. Each source becomes a root group (named PSD_1, PSD_2, … by default - override with the name_N fields), and the source's own internal group nesting is preserved inside that root, including original layer names, blend modes, and visibility. Stacking order: psd_1 is on top, higher numbers below. The one place it's honest about its limits: this works on the layers, so a source that relies on something psd-tools can't rasterize will arrive imperfectly - same caveat as everywhere in this pack.
The inputs that matter
- psd_1 - required; plug in whatever produces a
PSDreference: Load PSD File, or even Layers to PSD's output, so you can merge freshly-generated documents with existing ones.psd_2throughpsd_5are optional. - name_1 … name_5 - the root group names, defaulting to
PSD_1etc. Worth setting when the merge is going back to an art director who expects meaningful names. - canvas_width / canvas_height -
0(default) takes the largest dimension across all inputs; set a value to force the canvas. Layers are centered regardless. - include_hidden - defaults to
True, so hidden layers come along. Flip it if you're merging "show" versions of a doc.
Outputs
Just one pin: psd, an in-memory PSD reference. From there it goes to Save PSD File to hit disk, or into another Merge PSD Files if you're feeling brave (the pack doesn't stop you from chaining merges).
Gotchas
The 0 canvas logic is per-dimension - it takes the max width and the max height independently, so if your sources have wildly different aspect ratios you'll get a canvas that fits the widest and the tallest, not one that hugs any single document. That's usually what you want for a contact sheet, but if you want a specific layout, pin the canvas values.
And a practical note: since each source is centered, two sources of very different sizes won't line up edge-to-edge - they stack centered like overlapping cards. If your goal is "these files tile exactly," you'll want to handle positioning upstream, because this node's positioning model is center-and-stack.
Install
One time for the whole pack: Manager → search ComfyUI-PSD2Layer, or clone + pip install -r requirements.txt + restart. Dependencies are psd-tools, Pillow, numpy - pure Python, no model downloads, no GPU needed.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| psd_1 | PSD | — | |
| name_1 | STRING | PSD_1 | — |
| canvas_width | INT | 00–65536 | — |
| canvas_height | INT | 00–65536 | — |
| include_hidden | BOOLEAN | true | — |
| psd_2opt | PSD | — | |
| name_2opt | STRING | PSD_2 | — |
| psd_3opt | PSD | — | |
| name_3opt | STRING | PSD_3 | — |
| psd_4opt | PSD | — | |
| name_4opt | STRING | PSD_4 | — |
| psd_5opt | PSD | — | |
| name_5opt | STRING | PSD_5 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| psd | PSD | — |