Create Grid Image
Turn a folder of outputs into one contact sheet
- IMAGE
WAS's README describes this one precisely: "Create a image grid from images at a destination with customizable glob pattern. Optional border size and color." The key detail that makes this node different from most image nodes in ComfyUI is right there - it doesn't read images out of your live graph, it points at a folder on disk and pulls in whatever matches a glob pattern (*.png, **/* for everything recursively, and so on), then tiles all of it into a single grid image with an optional border between tiles.
The reason you'd want that is one of the most common ComfyUI workflows there is: the batch comparison. Run an X/Y sweep across seeds, CFG values, or sampler steps, save every result to a folder, and now you've got dozens of separate PNGs you'd otherwise have to open one at a time to compare. Create Grid Image turns that folder into one contact sheet you can actually scan at a glance - which seed had the composition you liked, which CFG value started blowing out detail, all visible in a single image instead of a file browser full of near-identical thumbnails.
One thing worth flagging so you grab the right tool the first time: WAS also ships Create Grid Image from Batch, a related but genuinely different node that builds its grid from an in-graph batch tensor of images rather than from files on disk. If your images already exist as a batch inside the current workflow run, that's the one you want - Create Grid Image (this node) is specifically for images that have already been saved to a destination and you're assembling after the fact.
Inputs line up with the README's own description: a folder path, a glob pattern to select which files in it get included, and border size/color settings (documented as optional). Output is a single IMAGE - the assembled grid - ready to preview or save like any other image output.
Installing it: ComfyUI Manager, search "WAS Node Suite," install, restart - the straightforward path. Manual: cd ComfyUI/custom_nodes && git clone https://github.com/WASasquatch/was-node-suite-comfyui, then pip install -r requirements.txt (portable: python_embeded\python.exe -s -m pip install -r requirements.txt; manual/venv: activate the venv first), restart ComfyUI. No model or unusual dependency here - it's file I/O and image compositing.
Where it bites: the glob pattern is the part most likely to trip you up - get the pattern wrong (forgetting the **/ prefix if your images are in subfolders, or being too broad and pulling in files you didn't mean to include) and you'll either get an empty grid or one with more tiles than you expected. Double-check the path is one your ComfyUI process actually has read access to, especially if you're running in a container or a hosted environment where the folder structure might not match what you'd expect locally. Beyond that, the standing caveat for the whole pack: WAS Node Suite has been unmaintained since December 2023 (its README says "Retired"), and the community's recurring complaint is the entire suite failing to import after a ComfyUI update rather than individual nodes breaking on their own - check your console for that before assuming this node specifically is at fault.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| folder | COMBO | Which folder to read. A bare 'input', 'output' or 'temp' is that folder itself; 'plates/shot_01 [input]' is that folder below it. Any folder added under paths.allow_read in config.yaml is listed under its own name, and so are the folders inside it. | |
| pattern_glob | STRING | * | Which files in the folder to include. '*' takes them all, 'cat_*.png' only those named that way, and '**/*' also descends into subfolders when include_subfolders is on. Files in a format this pack cannot read are skipped whatever the pattern says. |
| include_subfolders | BOOLEAN | false | Whether '**' in the pattern is allowed to descend into subfolders. With off a '**' matches only inside the folder itself. |
| border_width | INT | 30–100 | Thickness in pixels of the gap between cells, of the outline around each cell and of the frame around the sheet. 0 removes all three. |
| number_of_columns | INT | 61–24 | How many images per row. The number of rows follows from how many files matched: 12 images in 6 columns give 2 rows. |
| max_cell_size | INT | 25632–1280 | Size of one cell in pixels, on both sides. Each image is scaled to fit inside it and the leftover space is filled with black, so cells stay square whatever shape the pictures are. |
| border_red | INT | 00–255 | Red level of the gaps, outlines and frame, 0 to 255. |
| border_green | INT | 00–255 | Green level of the gaps, outlines and frame, 0 to 255. |
| border_blue | INT | 00–255 | Blue level of the gaps, outlines and frame, 0 to 255. All three at 0 gives black, all three at 255 gives white. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | One image holding the whole grid, as a batch of one. A black 512x512 image when the folder does not exist. |