β¨οΈ CR Load GIF As List
Split an animated GIF into frames you can process
- IMAGE
- MASK
- show_help
Got an animated GIF and want to run each frame through a workflow - vid2vid, per-frame restyle, upscale every frame, extract a mask sequence? CR Load GIF As List cracks the GIF open and hands you its frames as an image list. From there each frame flows through your graph independently, exactly like any other image list.
It's the input side of frame-by-frame animation work in Comfyroll. Pull the frames in here, process them, then stack them back into a batch or an output video downstream.
How it works
It reads a GIF file and decodes its frames (Pillow handles the GIF under the hood), emitting them as a ComfyUI list of images plus a matching list of masks. A list means one execution per frame, which is what you want for processing each frame on its own. You point it at a file in ComfyUI's input area (or an explicit path), and choose which frames to grab with a start point and a max count.
The inputs and outputs that matter
input_folder- dropdown of subfolders inside ComfyUI'sinputdirectory.gif_filename(STRING) - the GIF's filename within that folder.input_path(optional STRING) - an explicit path if the GIF lives elsewhere; overrides the folder dropdown.start_frame(INT, default 0) - skip to a frame.max_frames(INT, default 1) - how many frames to load. Raise this - the default of 1 gives you a single frame, which is the most common surprise with this node.
Outputs: IMAGE (frame list), MASK (mask list), and show_help. Feed the images into your per-frame chain.
Installing it
Comfyroll Studio (Suzie1 / RockOfFire) is a large, established utility pack. Via ComfyUI Manager: search "Comfyroll Studio," install, restart. Or clone it:
cd ComfyUI/custom_nodes
git clone https://github.com/Suzie1/ComfyUI_Comfyroll_CustomNodes.git
then restart. No models needed.
Common issues
Two things account for most trouble. First, max_frames on its default of 1 - you loaded "the GIF" and got one frame; bump the count. Second, the file has to actually be where the node looks: the filename must exist in the chosen input folder, or you use input_path to point at it directly. On a hosted or serverless ComfyUI your local files aren't visible, so upload the GIF to the environment's input directory or supply a path the runner can read.
Long GIFs are a lot of frames, and a list runs the whole graph per frame - so a 200-frame GIF through a heavy workflow is 200 generations. Trim with start_frame/max_frames while you're testing. If the pack won't load at startup with a traceback, reinstall it cleanly through Manager.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| input_folder | COMBO | 1 options: 3d | |
| gif_filename | STRING | text | β |
| start_frame | INT | 00β99999 | β |
| max_frames | INT | 11β99999 | β |
| input_pathopt | STRING | β |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | β |
| MASK | MASK | β |
| show_help | STRING | β |