ComfyUI Extension: ComfyUI-FrameIO
Run ComfyUI workflows without the setup
No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.
High-performance frame IO nodes (WEBP)
Looking for a different extension?
Custom Nodes (0)
README
ComfyUI-FrameIO

High-performance frame input/output nodes for AI video pipelines in ComfyUI.
ComfyUI-FrameIO focuses on efficient frame storage, loading, and reuse for long video generation workflows, solving common problems like massive PNG sizes, duplicate frames, and fragile filename-based loading.
⨠Features
š§© Frame Saving
- Save batch
IMAGEtensors as WebP - Lossy or Lossless WebP
- Skip identical frames using hash-based deduplication
- Massive disk space reduction vs PNG
- Returns STRING_LIST (ComfyUI list-native)
š„ Frame Loading
- Pattern-based frame loading
- STRING_LIST ā IMAGE loader (no filename guessing)
- Frame range selector (
start,end,step) - Auto-detect frame count (set
frame_count=0) - Execution Trigger node for flow control
- List Video Files node to scan input directory
- Safe with duplicate paths (from deduplication)
ā” Optimized for AI Video
- Multi-threaded IO for high-speed saving & loading
- Direct PyTorch normalization (avoids slow CPU/NumPy conversions)
- Designed for long sequences
- Works with WebP / PNG / JPG
- Preserves exact frame ordering
- Security restricted (saves only to ComfyUI output directory)
š¦ Included Nodes
š¹ Batch Save Image Sequence (WebP)
Save an image batch efficiently to disk.
Inputs
images(IMAGE)path_pattern(STRING)start_index(INT)lossless(true / false)quality(INT)skip_identical(true / false)overwrite(true / false)
Outputs
paths(STRING_LIST)count(INT)
š¹ Batch Load Image Sequence
Load images from disk using a filename pattern.
Inputs
path_pattern(STRING) - e.g.,./frame{:06d}.webpstart_index(INT)frame_count(INT) - Set to 0 to auto-detect all available framesignore_missing_images(true / false)
Outputs
images(IMAGE)count(INT)
š¹ Batch Load Image Sequence (Trigger)
Same as the standard sequence loader, but includes an optional trigger input. Useful for forcing ComfyUI to wait for a previous node (like a video render) to finish before loading.
š¹ Batch Load Image List (Advanced)
Load images directly from a STRING_LIST.
Inputs
paths(STRING_LIST)start(INT, optional)end(INT, optional)step(INT, optional)
Outputs
images(IMAGE)count(INT)
This is the recommended loader when using frame deduplication.
š¹ List Video Files (Input Dir)
Scans your ComfyUI input folder for video files.
Inputs
subfolder(STRING) - Subfolder within the input directory.filter(STRING) - Wildcard filter (default*).load_cap(INT) - Maximum number of files to return (default100, 0 for no limit).deep_search(true / false) - Search subdirectories recursively (defaultfalse).
Outputs
paths(STRING_LIST) - List of absolute paths.count(INT) - Number of files found.
š§ Why ComfyUI-FrameIO?
| Problem | Solution | |------|------| | PNG sequences too large | WebP (5ā10Ć smaller) | | Duplicate frames | Hash-based skip | | Filename guessing | STRING_LIST loader | | Partial re-render | Frame range selector | | Long videos | Optimized IO |
š¬ Recommended Workflows
š„ Best Practice (Long Videos)
KSampler
ā
Batch Save Image Sequence (WebP)
ā STRING_LIST
Batch Load Image List (Advanced)
ā IMAGE
Video Combine / FFmpeg
šÆ Partial Reload
start = 300end = 900step = 2
Perfect for re-encoding or post-processing sections.
āļø Recommended Settings
| Use Case | Settings | |-------|---------| | Final video | Quality 95, Skip Identical = true | | Iteration | Quality 90 | | Dataset / archival | Lossless = true | | Static shots | Skip Identical = true |
š„ Installation
cd ComfyUI/custom_nodes
git clone https://github.com/room3dev/ComfyUI-FrameIO.git
Restart ComfyUI.
Nodes will appear under:
FrameIO
š License
MIT
Run ComfyUI workflows without the setup
No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.