main
ComfyUI-1hewNodes
This is a custom node collection for ComfyUI that provides a series of practical image processing, mask operations, and utility nodes.
📦 Installation
Clone the repository into ComfyUI's custom_nodes directory:
git clone https://github.com/1hew/ComfyUI-1hewNodes
📜 Changelog
v4.0.0
- Major I/O upgrade: unify text reading/writing with metadata-aware
Load Text/Save Text, addSave Audio, makeSave Videocontainer-safe, and switchLoad PSto on-demand cached layer previews. - Logic and shared foundation:
Multi Switch SelectsharesImage Batch Index's range grammar and supports multi-selection; duplicated image/video/text/file helpers are centralized inutils/_*.py, covered by the expanded consistency checker and regression suite. - Compatibility: all node IDs stay
1hew_*;Save Textuses the optional STRINGtextport (formerlyany) andLoad Textdropsencode, with the front end migrating old widget values automatically;Save Audiorequires PyAV. - Docs: bilingual node docs and README are synchronized; release notes before v4.0.0 are archived below.
3.x releases
v3.31.0
- fix(io):
Save Videonow names WebM/VP8 and other sources after their own container (.webm/.mp4/.mkv, Matroska when the codecs do not fit) instead of forcing MP4, which failed with'mp4' format does not support 'vp8' codec; metadata remux and silent-audio remux also work on current PyAV builds - feat(io): Add
Save Audio— save AUDIO to FLAC / WAV / MP3 / Opus with output/temp routing, auto-increment or fixed filenames, optional metadata, batch splitting, and empty-input pass-through (nothing is written when no audio is connected); the node embeds an audio player that previews the saved file, matching the nativeSave Audio (Advanced)preview - feat(io):
Save Textnow supportstxt/csv/md/json, always writes UTF-8, can append workflow/prompt metadata, and clears its in-node preview when the input is empty; the input port is now the optional STRINGtext(formerlyany) - feat(io):
Load Textadds file upload, live in-node preview, automatic encoding detection, and strips the metadata block written bySave Text; theencodeinput is removed and the front end migrates old workflows - feat(io):
Load PSpreviews are now loaded on demand — new/1hew/view_ps_infoand/1hew/view_ps_layerendpoints list layers and render individual PNG previews with an LRU cache, merged previews reuse the embedded composite, andall_layersuses the native batch preview on classic or a single-layer viewer on Nodes 2.0; the node frame follows the image aspect ratio - feat(logic):
Multi Switch Selectaccepts the same 1-based range/list syntax asImage Batch Index(1,3,1-3,[1,3],:step, negatives) and routes multiple inputs; both nodes share the newutils/_index_range.pyparser - refactor(utils): Move duplicated image/video/text/file helpers into
utils/_*.py, and enforce one-node-per-file plus no cross-category node imports inscripts/check_node_consistency.py
v3.30.1
- refactor(logic): Move
Image Minimum Area'sdivisible_byinput afterfit/pad_colorso the widget order matchesImage Resize Universal; existing workflows should recheck that node's parameters - fix(detect): Align
Detect Remove SolidBG UnMult's gamut-safe unpremultiply with theUnMult (Auto Background)2026-10-15 fix — negative channels are clipped and positive overflow is jointly scaled, so one bad channel no longer reverts the whole pixel to the observed RGB - fix(color):
Image Color Restore's hole filling now bails out when every border pixel is foreground (e.g. a 1–2px transparent fringe) instead of turning the whole image into foreground
v3.30.0
- feat(multi): Add
Multi Video Stitch— stitch dynamicvideo_Xinputs end-to-end withcrop/pad/stretchsize unification, an optionalget_video_sizereference video, and configurablepad_color/fps(video_1reuses the first segment; a number orautoalso works); the dynamic-port table now pinsget_video_sizebelow everyvideo_Xport - feat(text): Add
String Resolution Seedance 2.5 Multimodal Video— infer the nearest Seedance 2.5 video resolution tier (480p/720p/1080p/2k/4k) from the input video by pixel area, or pass through the selected label when no video is connected - feat(detect): Add
Detect Remove SolidBG UnMult— estimate a flat background from the image border, unmultiply to alpha, then optionally clean low alpha withthresholdand composite ontobackground_color(orsmsmart background); outputs a foreground image plus alpha mask - refactor(image_resize): Make
Image Resize Area'sdivisible_by/fitbehave likeImage Resize Universal— align both output sides to the multiple in every branch (no more failure when the range contains no multiple) and rename theintoutput toresolution - fix(io):
Save Video by Imagenow raises a clear error when audio preparation or encoding fails instead of silently dropping the audio track, and removes placeholder or partial output files when a save fails
v3.29.2
- fix(image): Refine
Image Alpha Splitsmsmart-background selection to fully replicate the stroke-aware refiner scoring and selection strategy (using the required#808080gray candidate), including OKLab/luminance contrast, alpha boundaries, grouped sampling, low-tail scoring, and the gray margin rule; grayscale+alpha inputs are supported as well
v3.29.1
- feat(image): Add
smsmart-background mode toImage Alpha Splitbackground_color; for each alpha image it selects black, white, or#808080to improve subject and translucent-edge visibility
v3.29.0
- feat(image_resize): Add
Image Resize Area, an aspect-preserving area normalizer: clamp and alignsqrt(width × height)to configurable bounds, synchronize optional masks, provide Image Resize Universal-compatiblefit/pad_colorhandling, and lazily use an optionalupscale_modelonly for undersized inputs - fix(image): Make
Image Alpha Joinreturn an empty output whenever theimageinput is empty (unconnected or a zero-length batch) instead of a transparent canvas, and treat a zero-lengthmaskbatch as no mask - fix(image): Make
Image Alpha Splitreturn emptyimage/maskoutputs when theimageinput is empty (unconnected or a zero-length batch) - docs: Add bilingual
Image Resize Areadocumentation and synchronize the README node list
v3.28.2
- chore(tooling): Extend
scripts/check_node_consistency.pyto fail on any quoted1hew_*literal inweb/**/*.jsthat is not a current node_id, so a renamed or removed node cannot leave a stale front-end reference
v3.28.1
- chore(tooling): Extend
scripts/check_node_consistency.pyto validate theweb/js/dynamic_port.jsport table against the node schemas — stale node_ids, duplicate keys,base/addType/select/outputBase/outputTypemismatches, and invalidinitial/maxnow fail
v3.28.0
- feat(text): Add model-specific
String Resolutionselectors —String Resolution GPT Image 2.0(1k/2k/4k),String Resolution Gemini 3.1 Flash Image(0.5k/1k/2k/4k),String Resolution Jimeng(1k/2k/4k),String Resolution Doubao Seedream 5.0 Pro(1k/1.5k/2k) andString Resolution Qwen Image 3.0 Pro(1k/2k) — replacing the genericString Resolutionnode; switch existing workflows to the matching model node - feat(text): Add
String Ratio Doubao Seedream 5.0 Pro(8 ratios) andString Ratio Qwen Image 3.0 Pro(15 ratios) to infer the nearest supported aspect ratio from input images - refactor(image_resize): Reorder
Image Resize Doubao Seedream 5.0 Propresets widest → square → tallest to match the API node'saspect_ratiooption order - docs: Add bilingual docs for the 7 new text nodes, remove the generic
String Resolutiondocs, and document the per-node/per-model Jimeng resolution tiers forString Resolution Jimeng/Image Resize Jimengin the node docs - refactor(naming): Unify model node display names to the spaced form (
Image Resize Gemini 3.1 Flash Image,String Ratio GPT Image 2.0,Text Encode Qwen Image Edit, …);node_ids are unchanged, so existing workflows keep working - feat(image): Give
Image Align Change Maskan optionalmaskinput — alignment, color compensation, and noise fitting then use only the redrawn region's background, and only change islands overlapping that region are kept, whole (the mask is used exactly as drawn) - chore(tooling): Add
scripts/check_node_consistency.pyand document the naming rule innodes/__init__.py;nodes/**/*.pyis the single source of truth, and the checker fails on duplicate node_id/display_name, missing or orphanweb/docsentries, README node-list drift, and apyproject.toml/ changelog version mismatch
v3.27.0
- feat(logic): Add
Image Area Compareto compare the pixel area (width × height) of two IMAGE inputs with a selected operator and output a boolean - fix(image_resize): Remove the duplicate
Image Resize Qwen Image 3.0node, which was identical toImage Resize Qwen Image 3.0 Pro; switch existing workflows to the Pro node - refactor(image): Rework
Image Alpha Edgeso edge/feather modify the alpha channel only and never blur or recolour the subject's RGB; only newly visible pixels receive an alpha-aware colour extension instead of the old solid-region RGB bleed - docs: Add bilingual docs for
Image Area Compare, update theImage Alpha Edgedocs, and sync the node list
v3.26.0
- feat(image): Add
Image Alpha Edgeto shrink/expand an alpha image's edge and feather it, with built-in RGB bleed for cleaning matte fringe (hole filling stays in the mask nodes) - feat(image_resize): Add
Image Resize Doubao Seedream 5.0 Prowith exact official 1k/1.5k/2k presets, plusImage Resize Qwen Image 3.0andImage Resize Qwen Image 3.0 Prowith 1k/2k presets and dynamic sizing - refactor(image_resize): Rebuild
Image Resize GPT Image 2.01k/2kpresets as exact multiples of 16 and make the4ktier exactly proportional within the official limits and the3840longest-edge cap - refactor(color): Rename
Image Color Restoreoutputs toimage/unchanged_maskand defaultunchanged_thresholdto 0 (auto) - docs: Add bilingual docs for the new image and resize nodes, and sync the node list
v3.25.0
- feat(color): Add
Image Color Restoreto restore an aligned AI edit's colors to the reference while smoothing removal/occlusion seams - feat(mask): Add
Mask Levelsfor grayscale levels (black/white point) adjustment with inversion and binary fallback - refactor(image): Adjust
Image Align Change Maskexpand/featherdefaults to 16/8 - docs: Add bilingual docs for the two new nodes and sync the node list
v3.24.0
- feat(image_resize): Unify
auto(tier by input area → closest aspect within tier) across GPT Image 2.0 / Gemini30Pro / Gemini31Flash / Jimeng resize nodes - feat(image_resize): Jimeng
autoexcludes[2.0_pro]presets - docs: Sync bilingual docs and node list for the four resize nodes
v3.23.1
- fix(io): Make
Load VideoandLoad Video to Imageresolve absolute paths and paths relative to the ComfyUI input directory, including directory scans and cache invalidation - fix(io): Preserve alpha-capable MOV/video streams when loading and saving, including ProRes 4444 output for processed transparent MOV files
- fix(io): Keep source video streams when
Save Videoreceives asource_path, avoiding unnecessary re-encoding that can drop transparency
v3.23.0
- feat(int): Add
Int Video Countto count connected videos from dynamicvideo_Xinputs - docs: Add bilingual documentation for
Int Video Countand synchronize the node list - feat(conversion): Add
Video to URLto upload ComfyUI VIDEO objects to a public URL with content-based caching - feat(conversion): Make
Image to URL's image input optional, returning an empty string when unconnected
v3.22.0
- feat(conversion): Add
Video to Imagefor extracting image, audio, FPS, and frame-count outputs from ComfyUI VIDEO objects
v3.21.2
- feat(image_resize): Update
Image Resize GPT Image 2.0with 1:3–3:1 aspect-ratio presets and revised 1k/2k/4k resolutions aligned with GPT Image 2 size limits
v3.21.1
- feat(image_crop):
Image Edge Crop/Padnow supports RGBA (transparent) input — pad defaults to transparency, crop preserves alpha; supportstransparentkeyword and 4-component color strings (e.g.255,0,0,128)
v3.21.0
- feat(logic): Add
Text Comparefor string equality, containment, prefix/suffix, and regex boolean matching - feat(text): Expand
String Ratio Gpt20ImageandString Ratio Gemini31FlashImagesupported ratio sets to match the latest selector presets - refactor(image_resize): Align
Image Resize Gemini30ProImageandImage Resize Gemini31FlashImagepreset families with the updated ratio ordering
v3.20.0
- feat(image): Add a simplified
Image BW Mattethat fixes the pipeline toauto + softand keeps onlygamma, inward edge shrink, and blur controls - feat(mask): Add
Mask Strokefor outer stroke mask with percentage width and union output
v3.19.1
- feat(conversion): Add
Image to Maskfor optional image luminance-to-mask conversion with a 64x64 black fallback - refactor(conversion): Move
Mask to Imagefrom mask operations into the conversion group
v3.18.1
- fix(image_resize): Correct
Image Resize Gemini31FlashImage[1k] 4:1preset to2064x512
v3.18.0
- feat(logic): Add
Int Number CompareandFloat Number Comparefor boolean results from two numeric inputs and a selected comparison operator
v3.17.1
- feat(image_blend): Add
edge/eedge-average color andextend/exedge-extension filling toImage Mask Blend.background_color
v3.17.0
- feat(image_crop): Add
Image Pad By BBox Maskfor restoring a local image into a full mask canvas by bbox and filling uncovered areas with a configurable color strategy
v3.16.0
- feat(image_resize): Add
Image Resize GPT Image 2.0, a GPT Image 2.0 size adapter with Gemini-style auto preset matching, dynamic aspect-preserving tiers, and 1k/2k/4k fixed presets
v3.15.1
- refactor(io): Add
psdscanning, list-formfilename/file_pathoutputs, andfilename_suffixcontrol toGet File Count; alignLoad Image.filenameandLoad PS.layer_nameto string-list outputs - refactor(logic): Add automatic typed output for simple numeric and boolean values in
text_match_value
v3.15.0
- feat(io): Add
Load PSfor loading a single PSD/PSB as one indexed layer, all layer batches, or the merged document image, with drag-and-drop upload and node preview - refactor(batch): Reshape batch sampling nodes by adding
stepandnum_frame=0support toImage Batch Range/Mask Batch Range, and replacingImage Batch ExtractwithImage Batch IndexandImage Batch Uniform - refactor(text): Enhance
List Custom IntandList Custom Floatwith more flexible multiline value/range/stride parsing
v3.14.0
- feat: Add utility nodes for batch image lists, image counting, list interleaving, and mask bounding boxes
- fix: Improve
Image Mask Cropchannel output and alpha handling
v3.13.0
- feat(text): Add
String Ratio Gpt20Imagewith the GPT 2.0 image ratio set (3:2,1:1,2:3,5:4,4:5,16:9,9:16,21:9,3:4,4:3)
v3.12.0
- feat(text): Rename
String Image Ratio Gemini31FlashImagetoString Ratio Gemini31FlashImage, renameString Image ResolutiontoString Resolution, and align related file/node/doc names
v3.11.0
- feat(image): Add
Image Batch Interleavefor contiguous segment splitting followed by column-first interleaved batch reordering
v3.10.0
- feat(image): Add
Image Alpha Join
v3.9.0
- feat(image): Add
Image Alpha Splitfor extracting alpha masks while flattening transparent images onto configurable solid backgrounds
v3.8.0
- feat(conversion): Add
Image to URLwithauto,kefan, anddataURL output modes
v3.7.2
- build(repo): rewrite legacy
fonts/*.otfhistory into Git LFS to reduce clone size; no node behavior change
v3.7.1
- feat(image_resize): Add
Image Resize Squarewith square presets for 256/512/1024/2048/4096, plusautoandauto (0.5k | 1k)matching
v3.6.0
- feat(mask): Add
Mask to Imagewith configurable black/white area colors,fill_hole, and optional RGBA output
v3.5.2
- refactor(io): Adjust
Save Textnaming settings and filename generation logic
v3.5.1
- refactor(io): Optimize video load/save compatibility and keep
Save Imagepreview available whensave_outputis disabled
v3.5.0
- feat(io): Add
Load TextandSave Textnodes
v3.4.0
- feat(nodes): Add
Image Resize Gemini30ProImage,Image Resize Gemini31FlashImage,Detect Remove BG,Detect Remove BG Refine, andtext_match_rownum; reorganize resize-related capabilities into the dedicatedimage_resizegroup, and sync related docs plus README node list updates.
v3.3.0
- feat(conversion): Add
Mask to SAM3 BoxandText to Anynodes
v3.2.6
- refactor(condition): Optimize
Text Encode QwenImageEditnode
v3.2.3
- refactor(io): Optimize IO group
v3.2.1
- feat(io): Add video loading progress bar
v3.2.0
- refactor(io): Refactor IO group
v3.1.0
- feat(io): Add
Save Video by Imagenode for turning IMAGE batches into video files - refactor(color): Enhance
Match Brightness Contrastsequence consistency options
v3.0.8
- refactor(image_crop): Optimize
Image Crop With BBox Masknode - refactor(color): Optimize
Match Brightness Contrastnode
v3.0.7
- feat(color): Add
Match Brightness Contrastnode
v3.0.6
- feat(mask): Add
Mask Repeatnode, supporting batch mask repetition and inversion - feat(io): Add
Get File Count,Load Image From Folder, andLoad Video From Foldernodes to optimize file loading logic and stability
v3.0.5
- feat(image_tile): Merged
Image Tile SplitandImage Tile Split Presetnodes into a unifiedImage Tile Splitnode
v3.0.2
- feat(text): Add
String Filternode - feat(text): Add
String Join Multinode - feat(conversion): Add
Text List to Stringnode
v3.0.1
- feat(image): Add
Image PingPongnode for bidirectional batch frame generation with pre-reverse, link-frame removal, and frame truncation - feat(audio): Add
Audio Durationnode to get audio length (seconds)
v3.0.0
- build: bump version to 3.0.0
2.x releases
v2.0.5
- feat(multi): Added
Multi String Join,Multi Image Batch,Multi Mask Batch,Multi Image Stitch - feat(image): Added
Image Three Stitchnode - feat(condition): Added
Text Encode QwenImageEdit Keep Sizenode
v2.0.3
- feat(image_blend): Added
output_mask_invertparameter toImage Mask Blendfor output-only mask inversion
v2.0.0
- breaking: Major update. Existing workflows built with previous nodes require reconfiguration after upgrading to function correctly. Please review nodes and parameters carefully.
1.x releases
v1.2.46
- feat(detection): Added
DetectGuideLinenode
v1.2.45
- feat(detection): Added
DetectYolonode for YOLO model object detection
v1.2.44
- feat(util): Added
Workflow Namenode
v1.2.43
- feat(logic): Added
Video Cut Groupnode
v1.2.42
- feat(logic): Added
Image Batch Extractnode for extracting specific images from batches with multiple modes including custom indices, step intervals, and uniform distribution
v1.2.40
- feat(text): Added
IntWannode for generating 4n+1 arithmetic progression sequences with configurable step control and range validation - refactor(logic): Enhanced
Image Batch SplitandMask Batch Splitnodes with improved boundary condition handling and comprehensive error recovery
v1.2.39
- feat(logic): Added
Image Batch Groupnode for intelligent image batch splitting with overlap support and flexible padding strategies
v1.2.38
- refactor(image): Enhanced
ImageResizeUniversalnode with comprehensive mask processing logic
v1.2.37
- feat(image): Enhanced
Image Solidnode with advanced color parameter - feat(image): Added the
ImageGridSplitnode for splitting images into grid layouts with flexible output options
v1.2.36
- feat(conversion): Enhanced
URL to Videonode
v1.2.35
- feat(image): Added
Image Resize Qwen Imagenode for Qwen vision model optimized image resizing with 7 preset resolutions and automatic aspect ratio selection
v1.2.32
- feat(image): Added
Image Solid Flux Kontextnode for generating solid color images with Flux Kontext dimension presets - feat(image): Added
Image Solid Qwen Imagenode for generating solid color images with QwenImage dimension presets
v1.2.31
- fix: Fixed various bugs and improved stability
v1.2.28
- feat(mask): Added
Mask Paste by BBox Masknode for simplified mask pasting with automatic base mask creation and bounding box detection - feat(image_tile): Added
Image Tile Split Presetnode with predefined resolution presets and intelligent tile size selection - feat(image): Added
Image Rotate with Masknode for advanced image rotation with mask support and multiple fill modes - feat(text): Enhanced
Text Load Localnode withuser_promptparameter for combining JSON content with additional user prompts
v1.2.26
- feat(image_crop): Enhanced
Image Crop with BBox Masknode with precise dimension control, addedcrop_to_sideandcrop_to_lengthparameters
v1.2.25
- feat(image_crop): Added
apply_paste_maskparameter toImage Paste by BBox Masknode for controlling smart scaling behavior
v1.2.24
- feat(image_crop): Added
opacityparameter toImage Paste by BBox Masknode for controlling paste image transparency - feat(image): Enhanced
Image Stroke by Masknode with batch processing support for handling multiple images and masks
v1.2.23
- fix(image): Enhanced
Image Stroke by Masknode color parsing logic, supporting RGB string formats and improved default fallback to white color - fix(image): Enhanced
Image Paste by BBox Masknode rotation parameter
v1.2.21
- feat(text): Added
Text Filter Commentnode for filtering single-line comments (starting with #) and multi-line comments (wrapped in triple quotes), preserving non-comment blank lines - feat(text): Added
Text Join by Text Listnode for merging any type of list into a string with support for prefix, suffix, and custom separators - refactor(text): Refactored
Text Formatnode toText Prefix Suffix, optimizing wildcard input processing and formatting functionality
v1.2.18
- feat(sample): Added
Step Splitnode for high-low frequency sampling step separation with support for percentage and integer input modes
v1.2.17
- feat(image_crop): Optimized
Image Crop with BBox Masknode
v1.2.15
- feat(text): Added
Text Join Multinode for concatenating multiple text inputs with dynamic variable referencing - feat(image_crop): Added
Image Edge Crop Padnode with smart edge cropping and padding capabilities, featuring mask output functionality - feat(image_blend): Enhanced
Image Luma Mattenode with feathering and alpha output features, supporting multiple color formats and edge processing
v1.2.13
- feat(text): Added
Text Load Localnode for loading JSON format prompt files from prompt directory with bilingual Chinese and English output
v1.2.12
- feat(text): Added
Text Formatnode for flexible text formatting with wildcard input support
v1.2.9
- feat(image_crop): Refactored
Image Crop with BBox Masknode
v1.2.8
- feat(image): Added
Image Resize Flux Kontextnode with support for automatic and manual size selection for images and masks - feat(image): Enhanced
Image Edit Stitchnode with improved stitching algorithms and parameter handling
v1.2.7
- feat(text): Added
List Custom Seednode for creating unique random seed lists with control after generate functionality
v1.2.6
- feat(image_hlfreq): Added high-low frequency separation node group, including
Image HLFreq Separate,Image HLFreq Combine, andImage HLFreq Transformnodes with support for RGB, HSV, and IGBI frequency separation methods
v1.2.5
- feat(mask): Added the
Mask Fill Holenode, which fills holes in enclosed areas of masks with support for batch processing.
v1.2.3
- fix(image_blend): Fixed the issue of inconsistency between devices for the
Image Blend Modes by Alphanode.
v1.2.2
- feat(image): Added the
Image BBox Overlay by Masknode, which overlays the image bounding box based on a mask.
v1.2.1
- refactor(image/crop): Renamed node classes and updated related documentation
- feat(image_crop): Enhanced the functionality and output options of the
ImageCropByMaskAlphanode
v1.2.0
- feat: Added
conversion, and restructured image mixing and masking processing
v1.1.6
- feat(ImageEditStitch): Add a “spacing” parameter to control the distance between stitched images
v1.1.5
- feat: Added text processing and logic nodes, optimized existing node functions
- refactor(util): Refactored utility nodes, renamed nodes
RangeMappingandPathBuild - feat(logic): Added
ImageListAppendnode for image list merging - feat(text): Added
TextCustomListandTextCustomExtracttext processing nodes - style: Cleaned up node parameter labels to maintain simplicity and consistency
v1.1.2
- feat(image_tile): Improved the
Image Tile Mergealgorithm, using weight masks and cosine gradients to achieve perfect seamless stitching
v1.1.1
- feat (image_crop): Added intelligent batch processing for
Image BBox Paste
v1.1.0
- build: Add new tile nodes
- feat: Update node functionality
- docs: Add bilingual documentation, improve node descriptions
v1.0.5
- Add Path Select
v1.0.4
- Fix Image Cropped Paste error, add batch processing feature.
📋 Node List
🖼️ Image Processing Nodes
| Node Name | Description |
|---|---|
| Image Solid | Generate solid color images with enhanced color parameter supporting multiple input formats and dimension presets |
| Image Alpha Join | Combine optional image and mask into a 4-channel image; an empty image yields an empty output, and a missing mask falls back to full alpha |
| Image Alpha Split | Extract alpha as mask while flattening RGBA or alpha images onto a configurable solid background; an empty image yields empty outputs |
| Image Rotate with Mask | Advanced image rotation with mask integration, multiple fill modes, and mask center rotation options |
| Image Edit Stitch | Image stitching and merging with multiple stitching modes |
| Image Main Stitch | Main-image stitcher supporting dynamic image_2..image_N, direction, size matching, spacing, and padding |
| Image Add Label | Add text labels to images with automatic alpha preservation for RGBA inputs |
| Image Plot | Image plotting and visualization tools with automatic RGBA preservation for alpha inputs |
| Image Stroke by Mask | Apply stroke effects to mask regions with customizable width and color |
| Image BBox Overlay by Mask | Mask-based image bounding box overlay with independent and merge modes |
| Image Alpha Clean | Clean image alpha edge noise with simple strength presets and optional detection-only output |
| Image Alpha Edge | Shrink or expand an alpha image's edge and feather it, with built-in RGB bleed to remove matte fringe; hole filling is left to the mask nodes |
| Image BW Matte | Generate a cutout-friendly mask with a fixed auto + soft pipeline, plus gamma, inward shrink, and blur controls |
| Image Align Change Mask | Align an AI-edited image to its original and extract clean/raw change masks, a change score, and an overlay while rejecting small global color drift |
| Image Blur | Whole-image Gaussian blur with fractional radius, per-frame batch processing, and pass-through when blur is 0 |
📐 Image Resize Nodes
| Node Name | Description |
|---|---|
| Image Resize Flux Kontext | Resize images/masks to Flux Kontext preset sizes with auto/manual target selection |
| Image Resize Qwen Image | Qwen-oriented image resizing with preset resolutions and auto matching |
| Image Resize Universal | Universal image resizing with ratio inference, fit strategies, and synchronized mask output |
| Image Resize Jimeng | Resize for Jimeng-oriented presets with area-tiered auto matching and 1k/2k/4k fixed presets |
| Image Resize Gemini 3.0 Pro Image | Gemini 3.0 Pro preset size adapter with area-tiered auto matching and synchronized image/mask transforms |
| Image Resize Gemini 3.1 Flash Image | Gemini 3.1 Flash preset size adapter with area-tiered auto matching across 0.5k/1k/2k/4k tiers and extreme aspect ratios |
| Image Resize GPT Image 2.0 | GPT Image 2.0 size adapter with area-tiered auto preset matching, dynamic aspect-preserving tiers, and 1k/2k/4k fixed presets |
| Image Resize Doubao Seedream 5.0 Pro | Doubao Seedream 5.0 Pro size adapter with official 1k/1.5k/2k presets, tiered auto matching, dynamic sizing, and synchronized image/mask transforms |
| Image Resize Qwen Image 3.0 Pro | Qwen Image 3.0 Pro size adapter with 1k/2k presets, tiered auto matching, dynamic sizing, and synchronized image/mask transforms |
| Image Resize Square | General square size adapter with 256/512/1024/2048/4096 plus auto and auto (0.5k | 1k) |
| Image Resize Area | Area-based automatic resize that keeps the source aspect ratio: N = sqrt(area) is clamped to min/max and aligned to a multiple, and the output is scaled to area N^2 with both sides rounded to that multiple; reuses Image Resize Universal's fit / pad_color / mask behaviour and supports an optional lazy upscale_model |
🌈 Color Nodes
| Node Name | Description |
|---|---|
| Match Brightness Contrast | Adjusts the brightness and contrast of the source image to match the reference image |
| Image Color Match | Transfer the color of a reference image onto a source image with wavelet/adain (native) or mkl/hm/reinhard/mvgd plus hybrids (color-matcher), supporting batch cycling |
| Image Color Restore | Restore an aligned AI edit's colors to its original reference with local occlusion-seam smoothing; outputs the corrected image and a trusted unchanged mask |
🎨 Image Blending Nodes
| Node Name | Description |
|---|---|
| Image Mask Blend | Luminance-based image mask compositing with feathering, alpha output, and edge-extension background strategies |
| Image Blend Mode by Alpha | Alpha-based image blending with multiple Photoshop-style blend modes |
| Image Blend Mode by CSS | CSS standard blend modes implemented natively in PyTorch |
✂️ Image Cropping Nodes
| Node Name | Description |
|---|---|
| Image Mask Crop | Batch mask-based cropping with RGB/RGBA channel preservation and optional mask alpha output |
| Image Crop Square | Square cropping with mask guidance and scaling support |
| Image Crop With BBox Mask | Smart bounding box cropping with precise aspect ratio control and scale strength adjustment |
| Image Paste By BBox Mask | Paste cropped images back with multiple blend modes |
| Image Pad By BBox Mask | Restore a local image into the full bbox mask canvas and fill uncovered areas with a configurable color or strategy |
| Image Edge Crop/Pad | Smart edge cropping and padding with multiple padding modes and mask output |
| Image Grid Split | Split images into grid layouts with flexible row/column configuration and selective output options |
🧩 Image Tiling Nodes
| Node Name | Description |
|---|---|
| Image Tile Split | Image tile splitting with auto/grid/preset modes, overlap support, and reference image sizing |
| Image Tile Merge | Image tile merging with intelligent stitching |
🌊 High-Low Frequency Separation Nodes
| Node Name | Description |
|---|---|
| Image HL Freq Separate | Advanced frequency separation node supporting RGB, HSV, and IGBI separation methods with precise high-low frequency image separation and automatic recombination |
| Image HL Freq Combine | Advanced frequency recombination node supporting RGB, HSV, and IGBI recombination modes with intensity adjustment and intelligent batch matching |
| Image HL Freq Transform | Advanced detail transfer node supporting IGBI, RGB, and HSV transfer methods for precise texture detail migration from detail images to generated images |
🎭 Mask Operation Nodes
| Node Name | Description |
|---|---|
| Mask Separate | Separate mask into individual connected regions with sorting and area filtering |
| Mask To BBox Mask | Convert mask foregrounds into minimum bounding rectangle masks, with merged/separate output and outward divisible_by alignment |
| Mask Fill Hole | Fill holes in enclosed areas of masks with batch processing support |
| Mask Stroke | Create an optional hole-filled outer stroke mask with percentage width support and union output |
| Mask Crop by BBox Mask | Mask bounding box cropping based on mask regions |
| Mask Paste by BBox Mask | Simplified mask pasting with automatic base mask creation and bounding box detection |
| Mask Repeat | Batch repeat masks with optional inversion support |
| Mask Alpha Clean | Clean mask alpha noise and tiny islands with strength presets and optional detection-only output |
| Mask Levels | Apply a levels adjustment to a grayscale mask, remapping the range via black/white points with inversion and binary fallback |
🔍 Detection Nodes
| Node Name | Description |
|---|---|
| Detect Remove BG | Multi-backend background removal (RMBG/BiRefNet/InSPyReNet) with image + alpha mask outputs |
| Detect Remove BG Refine | RMBG mask post-refinement using original image + mask, outputs refined RGBA and alpha |
| Detect Remove SolidBG UnMult | Solid-background UnMult keying: estimate the flat background from image borders, unmultiply to alpha, with optional low-alpha threshold cleanup and background composition |
| Detect Yolo | YOLO model object detection with subfolder model support, customizable confidence thresholds, and optional label display control |
| Detect Guide Line | Guide line detection combining Canny, HoughLinesP, and DBSCAN vanishing-point clustering |
🔧 Utility Nodes
| Node Name | Description |
|---|---|
| Workflow Name | Automatically retrieves current workflow filename with path control, custom prefixes/suffixes, and date formatting |
| Range Mapping | Value range mapping tool supporting linear transformation and precision control for slider values |
| Memory Cleanup | Requests ComfyUI to release execution cache and optionally unload models after the current task completes |
🔄 Conversion Nodes
| Node Name | Description |
|---|---|
| URL to Video | Convert video URLs to ComfyUI VIDEO objects with improved error handling, timeout control, and support for both synchronous and asynchronous download methods |
| Video to Image | Extract image frames, audio, FPS, and frame count from ComfyUI VIDEO objects |
| Image to URL | Convert image tensors into URL strings with auto, kefan, and data modes |
| Video to URL | Upload ComfyUI VIDEO objects to a public URL with content-based caching |
| Image to Mask | Convert an optional image into a luminance mask, falling back to a 64x64 black mask when empty |
| Image Batch to List | Convert batch images to image lists for individual processing |
| Image List to Batch | Convert image lists to batch images with automatic size normalization |
| Mask to Image | Convert a mask into RGB/RGBA image output with hole filling, configurable black/white color mapping, and optional transparent background |
| Mask Batch to List | Convert batch masks to mask lists for individual processing |
| Mask List to Batch | Convert mask lists to batch masks with automatic size normalization |
| Mask to SAM3 Box | Convert masks to SAM3 box prompts (normalized cx, cy, bw, bh), supporting positive/negative and merge/separate modes |
| String Coordinate to BBoxes | Convert string format coordinates to BBOXES format with enhanced format support and improved SAM2 compatibility |
| String Coordinate to BBox Mask | Convert string format coordinates to BBoxMask format with image dimension support and flexible output modes |
| Text List to String | Merge a text list by applying per-item prefix/suffix and joining with a separator; supports escape sequences and composite separators |
| Text to Any | Output text as a wildcard payload for flexible connections (e.g., COMBO inputs) |
🧠 Logic Nodes
| Node Name | Description |
|---|---|
| Any Empty Bool | Universal empty value checker (boolean output version) that checks if any type of input is empty and returns a boolean value |
| Any Empty Int | Universal empty value checker (integer output version) that checks if any type of input is empty and returns custom integer values |
| Any Switch Bool | Universal boolean switch node supporting any type input with lazy evaluation, selecting output based on boolean condition |
| Any Switch Select | Multi-way selector node supporting multiple input options, lazily routing the chosen input_k to output and returning the effective select value |
| Float Number Compare | Float comparison node that evaluates two FLOAT values with a selected operator and outputs a boolean |
| Int Number Compare | Integer comparison node that evaluates two INT values with a selected operator and outputs a boolean |
| Multi Switch Select | Multi-output selector for input_1..input_N; a 1-based select using the same range syntax as Image Batch Index (e.g. 1-3, [1,3]) lazily routes each chosen input to its matching output_k, leaving the rest None |
| Text Compare | Compares two strings with equality, containment, prefix/suffix, or regex operators and outputs a boolean |
| Text Match Rownum | Match a single text against multi-line text and return first matched row number (1-based), or 0 when not found |
| Text Match Value | Match single-line text against multi-line key-value pairs and return corresponding value with simple numeric/boolean auto-typing |
| Image Area Compare | Compare the pixel area (width × height) of two IMAGE inputs with a selected operator and output a boolean |
| Image Minimum Area | Upscale an image until its area reaches a minimum square reference area (N²), with crop/pad/stretch fit, divisible_by rounding, mask output, and a resize_bool flag |
| String Random | Randomly pick one item from multiline custom text (split by dash lines, newlines, or punctuation) using a fixed seed |
🔢 Integer Nodes
| Node Name | Description |
|---|---|
| Int Image Count | Count valid images from dynamic image_X inputs, ignoring empty inputs, empty tensors, and all-zero images |
| Int Image Side Length | Output selected side length (longest/shortest/width/height) from image dimensions |
| Int Image Size | Output width and height integers from image dimensions |
| Int Mask Side Length | Output selected side length (longest/shortest/width/height) from mask dimensions |
| Int Video Count | Count connected videos from dynamic video_X inputs |
| Int Split | Split a total value into two parts, supporting percentage and integer split point |
| Int Wan | Generate 4n+1 arithmetic sequences with step and range validation |
📦 Batch Processing Nodes
| Node Name | Description |
|---|---|
| Image Batch Index | Extract images from a batch using multiline index text with flexible list/range/stride syntax and reverse-order support |
| Image Batch Split | Intelligent image batch splitter with forward/backward splitting modes and enhanced boundary condition handling |
| Image Batch Group | Intelligent image batch grouper with configurable batch sizes, overlap handling, and flexible padding strategies |
| Image Batch Range | Sample an image batch by start_index, step, and final num_frame; num_frame=0 takes all remaining images |
| Image Batch Uniform | Uniformly sample an image batch by final num_frame; num_frame=0 returns all images |
| Image Batch Interleave | Reorder an image batch by splitting it into contiguous segments and reading them back in column-first interleaved order |
| Image List Interleave | Reorder an image list by contiguous segment interleaving while preserving each image's original size |
| Image PingPong | Bidirectional frame repeat over batch, supports pre-reverse, link-frame removal, and frame truncation |
| Image List Append | Image list appender for intelligently merging images into lists |
| Mask Batch Math Ops | Batch mask mathematical operations |
| Mask Batch Range | Sample a mask batch by start_index, step, and final num_frame; num_frame=0 takes all remaining masks |
| Mask Batch Split | Intelligent mask batch splitter with forward/backward splitting modes and enhanced boundary condition handling |
| Video Cut Group | Video scene cut detector that identifies scene transitions by analyzing frame similarity, supporting both fast and precise modes |
📝 Text Processing Nodes
| Node Name | Description |
|---|---|
| Text Prefix Suffix | Text prefix suffix formatter with wildcard input support for flexible data formatting with custom prefix and suffix |
| Text Custom Extract | Text custom extractor for extracting specified key values from JSON |
| String Ratio GPT Image 2.0 | Infer the nearest GPT 2.0 image supported aspect ratio from input images, or pass through the selected ratio when no image is connected |
| String Ratio Gemini 3.1 Flash Image | Infer the nearest Gemini 3.1 Flash supported aspect ratio from input images, or pass through the selected ratio when no image is connected |
| String Ratio Jimeng | Infer the nearest Jimeng supported aspect ratio from input images, or pass through the selected ratio when no image is connected |
| String Ratio Doubao Seedream 5.0 Pro | Infer the nearest Doubao Seedream 5.0 Pro supported aspect ratio from input images, or pass through the selected ratio when no image is connected |
| String Ratio Qwen Image 3.0 Pro | Infer the nearest Qwen Image 3.0 Pro supported aspect ratio from input images, or pass through the selected ratio when no image is connected |
| String Resolution GPT Image 2.0 | Infer the nearest GPT Image 2.0 resolution tier (1k / 2k / 4k) from input images, or pass through the selected label when no image is connected |
| String Resolution Gemini 3.1 Flash Image | Infer the nearest Gemini 3.1 Flash Image resolution tier (0.5k / 1k / 2k / 4k) from input images, or pass through the selected label when no image is connected |
| String Resolution Jimeng | Infer the nearest Jimeng resolution tier (1k / 2k / 4k) from input images, or pass through the selected label when no image is connected |
| String Resolution Doubao Seedream 5.0 Pro | Infer the nearest Doubao Seedream 5.0 Pro resolution tier (1k / 1.5k / 2k) from input images, or pass through the selected label when no image is connected |
| String Resolution Qwen Image 3.0 Pro | Infer the nearest Qwen Image 3.0 Pro resolution tier (1k / 2k) from input images, or pass through the selected label when no image is connected |
| String Resolution Seedance 2.5 Multimodal Video | Infer the nearest Seedance 2.5 video resolution tier (480p / 720p / 1080p / 2k / 4k) from the input video, or pass through the selected label when no video is connected |
| String Filter | Text cleaner supporting {input} / {n} substitution from the input value, comment filtering (# and triple quotes), and optional empty-line removal |
| String Join Multi | Join up to 5 text blocks with {input} substitution, comment/empty-line filtering, and composite separators |
| List Custom Int | Build integer lists from flexible multiline value/range/stride text with reverse-order and mixed punctuation support |
| List Custom Float | Build float lists from flexible multiline value/range/stride text with reverse-order and mixed punctuation support |
| List Custom String | Custom string list generator with dash separator and multiple delimiter support |
| List Custom Seed | Custom seed list generator for creating unique random seed lists with control after generate functionality |
🔗 Multi Nodes
| Node Name | Description |
|---|---|
| Multi String Join | Concatenate dynamic string_X inputs with {input} variable support and comment/triple-quote filtering; customizable separator |
| Multi Image Batch | Build image batches from dynamic image_X with crop/pad/stretch size unification and automatic RGBA preservation when any input has alpha |
| Multi Image List | Build image_list from dynamic image_X batch or list inputs, splitting them into single-image list items |
| Multi Image Overlay | Overlay multiple image layers sequentially with alpha compositing, fit modes, and automatic RGBA preservation when any input has alpha |
| Multi Image Stitch | Dynamic multi-image stitcher with direction, size matching, spacing, padding color control, and automatic RGBA preservation when any input has alpha |
| Multi Mask Batch | Build mask batch from dynamic mask_X with crop/pad/stretch size unification and configurable gray padding |
| Multi Mask Math Ops | Dynamic multi-mask operations (union/intersection/difference/XOR) with batch broadcasting and size alignment |
| Multi Video Stitch | Stitch dynamic video_X inputs end-to-end into one video with crop/pad/stretch size unification, optional get_video_size reference size, and configurable pad color / fps |
📁 IO Nodes
| Node Name | Description |
|---|---|
| Get File Count | Count image/video/psd/text files in a folder with optional recursive scanning, list-form filename / file_path outputs, and configurable filename extension retention |
| Load Image | Load images from a file or folder with batch mode, size unification, derived masks, and list-form filename output |
| Load PS | Load a PSD/PSB file as one indexed layer, all layer batches, or the merged document image, with drag-and-drop upload, lazy cached layer previews, hidden-layer, group-mode controls, and list-form layer_name output |
| Load Text | Load .txt content from a file or folder with upload, live preview, auto encoding detection, and indexed folder picking |
| Load Video | Select a video from a file or folder and apply trimming/FPS settings during decoding |
| Load Video to Image | Decode a video into an image batch, audio, fps, and frame count |
| Save Audio | Save an AUDIO object as FLAC/WAV/MP3/Opus with output/temp routing, optional metadata, batch splitting, empty-input pass-through, and an in-node audio player preview |
| Save Image | Save image batches to output/temp and return absolute saved file paths |
| Save Text | Save text input as txt / csv / md / json (UTF-8) with auto-increment naming, metadata, and preview-only mode |
| Save Video by Image | Encode an image batch into a video with optional audio muxing and alpha support |
| Save Video | Save a VIDEO object to disk with container extension preservation and alpha preview |
🎛️ Conditioning Nodes
| Node Name | Description |
|---|---|
| Text Encode Qwen Image Edit | Qwen image-edit conditioning encoder combining vision inputs and text, supports size preservation modes and reference latents |
🔊 Audio Nodes
| Node Name | Description |
|---|---|
| Audio Duration | Get audio length (seconds) |
🙆 Acknowledgments
comfyUI_FrequencySeparation_RGB-HSV
🌟 Star
My gratitude extends to the generous souls who bestow a star.
Languages
Python
83.7%
JavaScript
16.3%
