Files
ComfyUI_frontend/ComfyUI_vibe/Node_info/COMFYUI_NODES.md
orkhanart 136c9edfbe feat(canvas): Implement top navigation bar with tabs
- Logo with dropdown menu (New, Open, Save, Settings)
- Home button for navigation
- Tab-based workflow management with close/dirty indicators
- New tab button
- Right section with Share and Run buttons
- Move Node_info docs into ComfyUI_vibe project

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 18:14:26 -08:00

2488 lines
56 KiB
Markdown

# ComfyUI Nodes Structure
> Auto-generated documentation of all ComfyUI built-in nodes
## Summary
| Source | Node Count |
|--------|------------|
| Core (`nodes.py`) | 64 |
| Extras (`comfy_extras/`) | 351 |
| API (`comfy_api_nodes/`) | 118 |
| **Total** | **533** |
---
## Table of Contents
1. [Core Nodes](#1-core-nodes)
2. [Extra Nodes](#2-extra-nodes)
3. [API Nodes](#3-api-nodes)
4. [Nodes by Category](#4-nodes-by-category)
---
## 1. Core Nodes
**Source:** `nodes.py`
**Count:** 64 nodes
These are the fundamental nodes that ship with ComfyUI.
| Node Name | Category |
|-----------|----------|
| `CLIPLoader` | - |
| `CLIPSetLastLayer` | - |
| `CLIPTextEncode` | - |
| `CLIPVisionEncode` | - |
| `CLIPVisionLoader` | - |
| `CheckpointLoader` | - |
| `CheckpointLoaderSimple` | - |
| `ConditioningAverage` | - |
| `ConditioningCombine` | - |
| `ConditioningConcat` | - |
| `ConditioningSetArea` | - |
| `ConditioningSetAreaPercentage` | - |
| `ConditioningSetAreaStrength` | - |
| `ConditioningSetMask` | - |
| `ConditioningSetTimestepRange` | - |
| `ConditioningZeroOut` | - |
| `ControlNetApply` | - |
| `ControlNetApplyAdvanced` | - |
| `ControlNetLoader` | - |
| `DiffControlNetLoader` | - |
| `DiffusersLoader` | - |
| `DualCLIPLoader` | - |
| `EmptyImage` | - |
| `EmptyLatentImage` | - |
| `GLIGENLoader` | - |
| `GLIGENTextBoxApply` | - |
| `ImageBatch` | - |
| `ImageInvert` | - |
| `ImagePadForOutpaint` | - |
| `ImageScale` | - |
| `ImageScaleBy` | - |
| `InpaintModelConditioning` | - |
| `KSampler` | - |
| `KSamplerAdvanced` | - |
| `LatentBlend` | - |
| `LatentComposite` | - |
| `LatentCrop` | - |
| `LatentFlip` | - |
| `LatentFromBatch` | - |
| `LatentRotate` | - |
| `LatentUpscale` | - |
| `LatentUpscaleBy` | - |
| `LoadImage` | - |
| `LoadImageMask` | - |
| `LoadImageOutput` | - |
| `LoadLatent` | - |
| `LoraLoader` | - |
| `LoraLoaderModelOnly` | - |
| `PreviewImage` | - |
| `RepeatLatentBatch` | - |
| `SaveImage` | - |
| `SaveLatent` | - |
| `SetLatentNoiseMask` | - |
| `StyleModelApply` | - |
| `StyleModelLoader` | - |
| `UNETLoader` | - |
| `VAEDecode` | - |
| `VAEDecodeTiled` | - |
| `VAEEncode` | - |
| `VAEEncodeForInpaint` | - |
| `VAEEncodeTiled` | - |
| `VAELoader` | - |
| `unCLIPCheckpointLoader` | - |
| `unCLIPConditioning` | - |
---
## 2. Extra Nodes
**Source:** `comfy_extras/`
**Count:** 351 nodes
Extended functionality organized by feature modules.
### Ace
**File:** `comfy_extras/nodes_ace.py`
**Count:** 2 nodes
| Node Name | Category |
|-----------|----------|
| `EmptyAceStepLatentAudio` | latent/audio |
| `TextEncodeAceStepAudio` | conditioning |
### Advanced Samplers
**File:** `comfy_extras/nodes_advanced_samplers.py`
**Count:** 2 nodes
| Node Name | Category |
|-----------|----------|
| `SamplerEulerCFGpp` | _for_testing |
| `SamplerLCMUpscale` | sampling/custom_sampling/samplers |
### Align Your Steps
**File:** `comfy_extras/nodes_align_your_steps.py`
**Count:** 1 nodes
| Node Name | Category |
|-----------|----------|
| `AlignYourStepsScheduler` | sampling/custom_sampling/schedulers |
### Apg
**File:** `comfy_extras/nodes_apg.py`
**Count:** 1 nodes
| Node Name | Category |
|-----------|----------|
| `APG` | sampling/custom_sampling |
### Attention Multiply
**File:** `comfy_extras/nodes_attention_multiply.py`
**Count:** 4 nodes
| Node Name | Category |
|-----------|----------|
| `CLIPAttentionMultiply` | _for_testing/attention_experiments |
| `UNetCrossAttentionMultiply` | _for_testing/attention_experiments |
| `UNetSelfAttentionMultiply` | _for_testing/attention_experiments |
| `UNetTemporalAttentionMultiply` | _for_testing/attention_experiments |
### Audio
**File:** `comfy_extras/nodes_audio.py`
**Count:** 16 nodes
| Node Name | Category |
|-----------|----------|
| `AudioAdjustVolume` | - |
| `AudioConcat` | - |
| `AudioMerge` | - |
| `ConditioningStableAudio` | - |
| `EmptyAudio` | - |
| `EmptyLatentAudio` | - |
| `LoadAudio` | - |
| `PreviewAudio` | - |
| `RecordAudio` | - |
| `SaveAudio` | - |
| `SaveAudioMP3` | - |
| `SaveAudioOpus` | - |
| `SplitAudioChannels` | - |
| `TrimAudioDuration` | - |
| `VAEDecodeAudio` | - |
| `VAEEncodeAudio` | - |
### Audio Encoder
**File:** `comfy_extras/nodes_audio_encoder.py`
**Count:** 2 nodes
| Node Name | Category |
|-----------|----------|
| `AudioEncoderEncode` | conditioning |
| `AudioEncoderLoader` | loaders |
### Camera Trajectory
**File:** `comfy_extras/nodes_camera_trajectory.py`
**Count:** 1 nodes
| Node Name | Category |
|-----------|----------|
| `WanCameraEmbedding` | camera |
### Canny
**File:** `comfy_extras/nodes_canny.py`
**Count:** 1 nodes
| Node Name | Category |
|-----------|----------|
| `Canny` | image/preprocessors |
### Cfg
**File:** `comfy_extras/nodes_cfg.py`
**Count:** 2 nodes
| Node Name | Category |
|-----------|----------|
| `CFGNorm` | advanced/guidance |
| `CFGZeroStar` | advanced/guidance |
### Chroma Radiance
**File:** `comfy_extras/nodes_chroma_radiance.py`
**Count:** 2 nodes
| Node Name | Category |
|-----------|----------|
| `ChromaRadianceOptions` | model_patches/chroma_radiance |
| `EmptyChromaRadianceLatentImage` | latent/chroma_radiance |
### Clip Sdxl
**File:** `comfy_extras/nodes_clip_sdxl.py`
**Count:** 2 nodes
| Node Name | Category |
|-----------|----------|
| `CLIPTextEncodeSDXL` | advanced/conditioning |
| `CLIPTextEncodeSDXLRefiner` | advanced/conditioning |
### Compositing
**File:** `comfy_extras/nodes_compositing.py`
**Count:** 3 nodes
| Node Name | Category |
|-----------|----------|
| `JoinImageWithAlpha` | mask/compositing |
| `PorterDuffImageComposite` | mask/compositing |
| `SplitImageWithAlpha` | mask/compositing |
### Cond
**File:** `comfy_extras/nodes_cond.py`
**Count:** 2 nodes
| Node Name | Category |
|-----------|----------|
| `CLIPTextEncodeControlnet` | _for_testing/conditioning |
| `T5TokenizerOptions` | _for_testing/conditioning |
### Context Windows
**File:** `comfy_extras/nodes_context_windows.py`
**Count:** 2 nodes
| Node Name | Category |
|-----------|----------|
| `ContextWindowsManual` | context |
| `WanContextWindowsManual` | - |
### Controlnet
**File:** `comfy_extras/nodes_controlnet.py`
**Count:** 2 nodes
| Node Name | Category |
|-----------|----------|
| `ControlNetInpaintingAliMamaApply` | conditioning/controlnet |
| `SetUnionControlNetType` | conditioning/controlnet |
### Cosmos
**File:** `comfy_extras/nodes_cosmos.py`
**Count:** 3 nodes
| Node Name | Category |
|-----------|----------|
| `CosmosImageToVideoLatent` | conditioning/inpaint |
| `CosmosPredict2ImageToVideoLatent` | conditioning/inpaint |
| `EmptyCosmosLatentVideo` | latent/video |
### Custom Sampler
**File:** `comfy_extras/nodes_custom_sampler.py`
**Count:** 33 nodes
| Node Name | Category |
|-----------|----------|
| `AddNoise` | _for_testing/custom_sampling/noise |
| `BasicGuider` | sampling/custom_sampling/guiders |
| `BasicScheduler` | sampling/custom_sampling/schedulers |
| `BetaSamplingScheduler` | sampling/custom_sampling/schedulers |
| `CFGGuider` | sampling/custom_sampling/guiders |
| `DisableNoise` | sampling/custom_sampling/noise |
| `DualCFGGuider` | sampling/custom_sampling/guiders |
| `ExponentialScheduler` | sampling/custom_sampling/schedulers |
| `ExtendIntermediateSigmas` | sampling/custom_sampling/sigmas |
| `FlipSigmas` | sampling/custom_sampling/sigmas |
| `KSamplerSelect` | sampling/custom_sampling/samplers |
| `KarrasScheduler` | sampling/custom_sampling/schedulers |
| `LaplaceScheduler` | sampling/custom_sampling/schedulers |
| `PolyexponentialScheduler` | sampling/custom_sampling/schedulers |
| `RandomNoise` | sampling/custom_sampling |
| `SDTurboScheduler` | sampling/custom_sampling/schedulers |
| `SamplerCustom` | sampling/custom_sampling |
| `SamplerCustomAdvanced` | sampling/custom_sampling |
| `SamplerDPMAdaptative` | sampling/custom_sampling/samplers |
| `SamplerDPMPP_2M_SDE` | sampling/custom_sampling/samplers |
| `SamplerDPMPP_2S_Ancestral` | sampling/custom_sampling/samplers |
| `SamplerDPMPP_3M_SDE` | sampling/custom_sampling/samplers |
| `SamplerDPMPP_SDE` | sampling/custom_sampling/samplers |
| `SamplerER_SDE` | sampling/custom_sampling/samplers |
| `SamplerEulerAncestral` | sampling/custom_sampling/samplers |
| `SamplerEulerAncestralCFGPP` | sampling/custom_sampling/samplers |
| `SamplerLMS` | sampling/custom_sampling/samplers |
| `SamplerSASolver` | sampling/custom_sampling/samplers |
| `SamplingPercentToSigma` | sampling/custom_sampling/sigmas |
| `SetFirstSigma` | sampling/custom_sampling/sigmas |
| `SplitSigmas` | sampling/custom_sampling/sigmas |
| `SplitSigmasDenoise` | sampling/custom_sampling/sigmas |
| `VPScheduler` | sampling/custom_sampling/schedulers |
### Dataset
**File:** `comfy_extras/nodes_dataset.py`
**Count:** 27 nodes
| Node Name | Category |
|-----------|----------|
| `AddTextPrefix` | - |
| `AddTextSuffix` | - |
| `AdjustBrightness` | dataset/image |
| `AdjustContrast` | dataset/image |
| `CenterCropImages` | dataset/image |
| `ImageDeduplication` | - |
| `ImageGrid` | - |
| `LoadImageDataSetFromFolder` | dataset |
| `LoadImageTextDataSetFromFolder` | dataset |
| `LoadTrainingDataset` | dataset |
| `MakeTrainingDataset` | dataset |
| `MergeImageLists` | - |
| `MergeTextLists` | - |
| `NormalizeImages` | dataset/image |
| `RandomCropImages` | dataset/image |
| `ReplaceText` | - |
| `ResizeImagesByLongerEdge` | dataset/image |
| `ResizeImagesByShorterEdge` | dataset/image |
| `SaveImageDataSetToFolder` | dataset |
| `SaveImageTextDataSetToFolder` | dataset |
| `SaveTrainingDataset` | dataset |
| `ShuffleDataset` | dataset/image |
| `ShuffleImageTextDataset` | dataset/image |
| `StripWhitespace` | - |
| `TextToLowercase` | - |
| `TextToUppercase` | - |
| `TruncateText` | - |
### Differential Diffusion
**File:** `comfy_extras/nodes_differential_diffusion.py`
**Count:** 1 nodes
| Node Name | Category |
|-----------|----------|
| `DifferentialDiffusion` | _for_testing |
### Easycache
**File:** `comfy_extras/nodes_easycache.py`
**Count:** 2 nodes
| Node Name | Category |
|-----------|----------|
| `EasyCache` | advanced/debug/model |
| `LazyCache` | advanced/debug/model |
### Edit Model
**File:** `comfy_extras/nodes_edit_model.py`
**Count:** 1 nodes
| Node Name | Category |
|-----------|----------|
| `ReferenceLatent` | advanced/conditioning/edit_models |
### Eps
**File:** `comfy_extras/nodes_eps.py`
**Count:** 2 nodes
| Node Name | Category |
|-----------|----------|
| `Epsilon Scaling` | model_patches/unet |
| `TemporalScoreRescaling` | model_patches/unet |
### Flux
**File:** `comfy_extras/nodes_flux.py`
**Count:** 7 nodes
| Node Name | Category |
|-----------|----------|
| `CLIPTextEncodeFlux` | advanced/conditioning/flux |
| `EmptyFlux2LatentImage` | latent |
| `Flux2Scheduler` | sampling/custom_sampling/schedulers |
| `FluxDisableGuidance` | advanced/conditioning/flux |
| `FluxGuidance` | advanced/conditioning/flux |
| `FluxKontextImageScale` | advanced/conditioning/flux |
| `FluxKontextMultiReferenceLatentMethod` | advanced/conditioning/flux |
### Freelunch
**File:** `comfy_extras/nodes_freelunch.py`
**Count:** 2 nodes
| Node Name | Category |
|-----------|----------|
| `FreeU` | - |
| `FreeU_V2` | - |
### Fresca
**File:** `comfy_extras/nodes_fresca.py`
**Count:** 1 nodes
| Node Name | Category |
|-----------|----------|
| `FreSca` | _for_testing |
### Gits
**File:** `comfy_extras/nodes_gits.py`
**Count:** 1 nodes
| Node Name | Category |
|-----------|----------|
| `GITSScheduler` | sampling/custom_sampling/schedulers |
### Hidream
**File:** `comfy_extras/nodes_hidream.py`
**Count:** 2 nodes
| Node Name | Category |
|-----------|----------|
| `CLIPTextEncodeHiDream` | advanced/conditioning |
| `QuadrupleCLIPLoader` | advanced/loaders |
### Hooks
**File:** `comfy_extras/nodes_hooks.py`
**Count:** 20 nodes
| Node Name | Category |
|-----------|----------|
| `CombineHooks2` | - |
| `CombineHooks4` | - |
| `CombineHooks8` | - |
| `ConditioningSetDefaultCombine` | - |
| `ConditioningSetProperties` | - |
| `ConditioningSetPropertiesAndCombine` | - |
| `ConditioningTimestepsRange` | - |
| `CreateHookKeyframe` | - |
| `CreateHookKeyframesFromFloats` | - |
| `CreateHookKeyframesInterpolated` | - |
| `CreateHookLora` | - |
| `CreateHookLoraModelOnly` | - |
| `CreateHookModelAsLora` | - |
| `CreateHookModelAsLoraModelOnly` | - |
| `PairConditioningCombine` | - |
| `PairConditioningSetDefaultCombine` | - |
| `PairConditioningSetProperties` | - |
| `PairConditioningSetPropertiesAndCombine` | - |
| `SetClipHooks` | - |
| `SetHookKeyframes` | - |
### Hunyuan
**File:** `comfy_extras/nodes_hunyuan.py`
**Count:** 11 nodes
| Node Name | Category |
|-----------|----------|
| `CLIPTextEncodeHunyuanDiT` | advanced/conditioning |
| `EmptyHunyuanImageLatent` | latent |
| `EmptyHunyuanLatentVideo` | latent/video |
| `EmptyHunyuanVideo15Latent` | - |
| `HunyuanImageToVideo` | conditioning/video_models |
| `HunyuanRefinerLatent` | - |
| `HunyuanVideo15ImageToVideo` | conditioning/video_models |
| `HunyuanVideo15LatentUpscaleWithModel` | latent |
| `HunyuanVideo15SuperResolution` | - |
| `LatentUpscaleModelLoader` | loaders |
| `TextEncodeHunyuanVideo_ImageToVideo` | advanced/conditioning |
### Hunyuan3D
**File:** `comfy_extras/nodes_hunyuan3d.py`
**Count:** 7 nodes
| Node Name | Category |
|-----------|----------|
| `EmptyLatentHunyuan3Dv2` | latent/3d |
| `Hunyuan3Dv2Conditioning` | conditioning/video_models |
| `Hunyuan3Dv2ConditioningMultiView` | conditioning/video_models |
| `SaveGLB` | 3d |
| `VAEDecodeHunyuan3D` | latent/3d |
| `VoxelToMesh` | 3d |
| `VoxelToMeshBasic` | 3d |
### Hypernetwork
**File:** `comfy_extras/nodes_hypernetwork.py`
**Count:** 1 nodes
| Node Name | Category |
|-----------|----------|
| `HypernetworkLoader` | loaders |
### Hypertile
**File:** `comfy_extras/nodes_hypertile.py`
**Count:** 1 nodes
| Node Name | Category |
|-----------|----------|
| `HyperTile` | model_patches/unet |
### Images
**File:** `comfy_extras/nodes_images.py`
**Count:** 13 nodes
| Node Name | Category |
|-----------|----------|
| `GetImageSize` | - |
| `ImageAddNoise` | - |
| `ImageCrop` | - |
| `ImageFlip` | - |
| `ImageFromBatch` | - |
| `ImageRotate` | - |
| `ImageScaleToMaxDimension` | - |
| `ImageStitch` | - |
| `RepeatImageBatch` | - |
| `ResizeAndPadImage` | - |
| `SaveAnimatedPNG` | - |
| `SaveAnimatedWEBP` | - |
| `SaveSVGNode` | - |
### Ip2P
**File:** `comfy_extras/nodes_ip2p.py`
**Count:** 1 nodes
| Node Name | Category |
|-----------|----------|
| `InstructPixToPixConditioning` | conditioning/instructpix2pix |
### Latent
**File:** `comfy_extras/nodes_latent.py`
**Count:** 12 nodes
| Node Name | Category |
|-----------|----------|
| `LatentAdd` | latent/advanced |
| `LatentApplyOperation` | latent/advanced/operations |
| `LatentApplyOperationCFG` | latent/advanced/operations |
| `LatentBatch` | latent/batch |
| `LatentBatchSeedBehavior` | latent/advanced |
| `LatentConcat` | latent/advanced |
| `LatentCut` | latent/advanced |
| `LatentInterpolate` | latent/advanced |
| `LatentMultiply` | latent/advanced |
| `LatentOperationSharpen` | latent/advanced/operations |
| `LatentOperationTonemapReinhard` | latent/advanced/operations |
| `LatentSubtract` | latent/advanced |
### Load 3D
**File:** `comfy_extras/nodes_load_3d.py`
**Count:** 2 nodes
| Node Name | Category |
|-----------|----------|
| `Load3D` | - |
| `Preview3D` | - |
### Lora Extract
**File:** `comfy_extras/nodes_lora_extract.py`
**Count:** 1 nodes
| Node Name | Category |
|-----------|----------|
| `LoraSave` | _for_testing |
### Lotus
**File:** `comfy_extras/nodes_lotus.py`
**Count:** 1 nodes
| Node Name | Category |
|-----------|----------|
| `LotusConditioning` | conditioning/lotus |
### Lt
**File:** `comfy_extras/nodes_lt.py`
**Count:** 8 nodes
| Node Name | Category |
|-----------|----------|
| `EmptyLTXVLatentVideo` | latent/video/ltxv |
| `LTXVAddGuide` | conditioning/video_models |
| `LTXVConditioning` | conditioning/video_models |
| `LTXVCropGuides` | conditioning/video_models |
| `LTXVImgToVideo` | conditioning/video_models |
| `LTXVPreprocess` | image |
| `LTXVScheduler` | sampling/custom_sampling/schedulers |
| `ModelSamplingLTXV` | advanced/model |
### Lumina2
**File:** `comfy_extras/nodes_lumina2.py`
**Count:** 2 nodes
| Node Name | Category |
|-----------|----------|
| `CLIPTextEncodeLumina2` | conditioning |
| `RenormCFG` | advanced/model |
### Mahiro
**File:** `comfy_extras/nodes_mahiro.py`
**Count:** 1 nodes
| Node Name | Category |
|-----------|----------|
| `Mahiro` | _for_testing |
### Mask
**File:** `comfy_extras/nodes_mask.py`
**Count:** 13 nodes
| Node Name | Category |
|-----------|----------|
| `CropMask` | - |
| `FeatherMask` | - |
| `GrowMask` | - |
| `ImageColorToMask` | - |
| `ImageCompositeMasked` | - |
| `ImageToMask` | - |
| `InvertMask` | - |
| `LatentCompositeMasked` | - |
| `MaskComposite` | - |
| `MaskPreview` | - |
| `MaskToImage` | - |
| `SolidMask` | - |
| `ThresholdMask` | - |
### Mochi
**File:** `comfy_extras/nodes_mochi.py`
**Count:** 1 nodes
| Node Name | Category |
|-----------|----------|
| `EmptyMochiLatentVideo` | latent/video |
### Model Advanced
**File:** `comfy_extras/nodes_model_advanced.py`
**Count:** 9 nodes
| Node Name | Category |
|-----------|----------|
| `ModelComputeDtype` | - |
| `ModelSamplingAuraFlow` | - |
| `ModelSamplingContinuousEDM` | - |
| `ModelSamplingContinuousV` | - |
| `ModelSamplingDiscrete` | - |
| `ModelSamplingFlux` | - |
| `ModelSamplingSD3` | - |
| `ModelSamplingStableCascade` | - |
| `RescaleCFG` | - |
### Model Downscale
**File:** `comfy_extras/nodes_model_downscale.py`
**Count:** 1 nodes
| Node Name | Category |
|-----------|----------|
| `PatchModelAddDownscale` | model_patches/unet |
### Model Merging
**File:** `comfy_extras/nodes_model_merging.py`
**Count:** 11 nodes
| Node Name | Category |
|-----------|----------|
| `CLIPMergeAdd` | - |
| `CLIPMergeSimple` | - |
| `CLIPMergeSubtract` | - |
| `CLIPSave` | - |
| `CheckpointSave` | - |
| `ModelMergeAdd` | - |
| `ModelMergeBlocks` | - |
| `ModelMergeSimple` | - |
| `ModelMergeSubtract` | - |
| `ModelSave` | - |
| `VAESave` | - |
### Model Merging Model Specific
**File:** `comfy_extras/nodes_model_merging_model_specific.py`
**Count:** 15 nodes
| Node Name | Category |
|-----------|----------|
| `ModelMergeAuraflow` | - |
| `ModelMergeCosmos14B` | - |
| `ModelMergeCosmos7B` | - |
| `ModelMergeCosmosPredict2_14B` | - |
| `ModelMergeCosmosPredict2_2B` | - |
| `ModelMergeFlux1` | - |
| `ModelMergeLTXV` | - |
| `ModelMergeMochiPreview` | - |
| `ModelMergeQwenImage` | - |
| `ModelMergeSD1` | - |
| `ModelMergeSD2` | - |
| `ModelMergeSD35_Large` | - |
| `ModelMergeSD3_2B` | - |
| `ModelMergeSDXL` | - |
| `ModelMergeWAN2_1` | - |
### Model Patch
**File:** `comfy_extras/nodes_model_patch.py`
**Count:** 3 nodes
| Node Name | Category |
|-----------|----------|
| `ModelPatchLoader` | - |
| `QwenImageDiffsynthControlnet` | - |
| `USOStyleReference` | - |
### Morphology
**File:** `comfy_extras/nodes_morphology.py`
**Count:** 3 nodes
| Node Name | Category |
|-----------|----------|
| `ImageRGBToYUV` | image/batch |
| `ImageYUVToRGB` | image/batch |
| `Morphology` | image/postprocessing |
### Nop
**File:** `comfy_extras/nodes_nop.py`
**Count:** 1 nodes
| Node Name | Category |
|-----------|----------|
| `wanBlockSwap` | - |
### Optimalsteps
**File:** `comfy_extras/nodes_optimalsteps.py`
**Count:** 1 nodes
| Node Name | Category |
|-----------|----------|
| `OptimalStepsScheduler` | sampling/custom_sampling/schedulers |
### Pag
**File:** `comfy_extras/nodes_pag.py`
**Count:** 1 nodes
| Node Name | Category |
|-----------|----------|
| `PerturbedAttentionGuidance` | model_patches/unet |
### Perpneg
**File:** `comfy_extras/nodes_perpneg.py`
**Count:** 2 nodes
| Node Name | Category |
|-----------|----------|
| `PerpNeg` | _for_testing |
| `PerpNegGuider` | _for_testing |
### Photomaker
**File:** `comfy_extras/nodes_photomaker.py`
**Count:** 2 nodes
| Node Name | Category |
|-----------|----------|
| `PhotoMakerEncode` | _for_testing/photomaker |
| `PhotoMakerLoader` | _for_testing/photomaker |
### Pixart
**File:** `comfy_extras/nodes_pixart.py`
**Count:** 1 nodes
| Node Name | Category |
|-----------|----------|
| `CLIPTextEncodePixArtAlpha` | advanced/conditioning |
### Post Processing
**File:** `comfy_extras/nodes_post_processing.py`
**Count:** 5 nodes
| Node Name | Category |
|-----------|----------|
| `ImageBlend` | image/postprocessing |
| `ImageBlur` | image/postprocessing |
| `ImageQuantize` | image/postprocessing |
| `ImageScaleToTotalPixels` | image/upscaling |
| `ImageSharpen` | image/postprocessing |
### Preview Any
**File:** `comfy_extras/nodes_preview_any.py`
**Count:** 1 nodes
| Node Name | Category |
|-----------|----------|
| `PreviewAny` | - |
### Primitive
**File:** `comfy_extras/nodes_primitive.py`
**Count:** 5 nodes
| Node Name | Category |
|-----------|----------|
| `PrimitiveBoolean` | utils/primitive |
| `PrimitiveFloat` | utils/primitive |
| `PrimitiveInt` | utils/primitive |
| `PrimitiveString` | utils/primitive |
| `PrimitiveStringMultiline` | utils/primitive |
### Qwen
**File:** `comfy_extras/nodes_qwen.py`
**Count:** 2 nodes
| Node Name | Category |
|-----------|----------|
| `TextEncodeQwenImageEdit` | advanced/conditioning |
| `TextEncodeQwenImageEditPlus` | advanced/conditioning |
### Rebatch
**File:** `comfy_extras/nodes_rebatch.py`
**Count:** 2 nodes
| Node Name | Category |
|-----------|----------|
| `RebatchImages` | image/batch |
| `RebatchLatents` | latent/batch |
### Rope
**File:** `comfy_extras/nodes_rope.py`
**Count:** 1 nodes
| Node Name | Category |
|-----------|----------|
| `ScaleROPE` | advanced/model_patches |
### Sag
**File:** `comfy_extras/nodes_sag.py`
**Count:** 1 nodes
| Node Name | Category |
|-----------|----------|
| `SelfAttentionGuidance` | _for_testing |
### Sd3
**File:** `comfy_extras/nodes_sd3.py`
**Count:** 5 nodes
| Node Name | Category |
|-----------|----------|
| `CLIPTextEncodeSD3` | advanced/conditioning |
| `ControlNetApplySD3` | conditioning/controlnet |
| `EmptySD3LatentImage` | latent/sd3 |
| `SkipLayerGuidanceSD3` | advanced/guidance |
| `TripleCLIPLoader` | advanced/loaders |
### Sdupscale
**File:** `comfy_extras/nodes_sdupscale.py`
**Count:** 1 nodes
| Node Name | Category |
|-----------|----------|
| `SD_4XUpscale_Conditioning` | conditioning/upscale_diffusion |
### Slg
**File:** `comfy_extras/nodes_slg.py`
**Count:** 2 nodes
| Node Name | Category |
|-----------|----------|
| `SkipLayerGuidanceDiT` | advanced/guidance |
| `SkipLayerGuidanceDiTSimple` | advanced/guidance |
### Stable3D
**File:** `comfy_extras/nodes_stable3d.py`
**Count:** 3 nodes
| Node Name | Category |
|-----------|----------|
| `SV3D_Conditioning` | conditioning/3d_models |
| `StableZero123_Conditioning` | conditioning/3d_models |
| `StableZero123_Conditioning_Batched` | conditioning/3d_models |
### Stable Cascade
**File:** `comfy_extras/nodes_stable_cascade.py`
**Count:** 4 nodes
| Node Name | Category |
|-----------|----------|
| `StableCascade_EmptyLatentImage` | latent/stable_cascade |
| `StableCascade_StageB_Conditioning` | conditioning/stable_cascade |
| `StableCascade_StageC_VAEEncode` | latent/stable_cascade |
| `StableCascade_SuperResolutionControlnet` | _for_testing/stable_cascade |
### String
**File:** `comfy_extras/nodes_string.py`
**Count:** 11 nodes
| Node Name | Category |
|-----------|----------|
| `CaseConverter` | utils/string |
| `RegexExtract` | utils/string |
| `RegexMatch` | utils/string |
| `RegexReplace` | utils/string |
| `StringCompare` | utils/string |
| `StringConcatenate` | utils/string |
| `StringContains` | utils/string |
| `StringLength` | utils/string |
| `StringReplace` | utils/string |
| `StringSubstring` | utils/string |
| `StringTrim` | utils/string |
### Tcfg
**File:** `comfy_extras/nodes_tcfg.py`
**Count:** 1 nodes
| Node Name | Category |
|-----------|----------|
| `TCFG` | advanced/guidance |
### Tomesd
**File:** `comfy_extras/nodes_tomesd.py`
**Count:** 1 nodes
| Node Name | Category |
|-----------|----------|
| `TomePatchModel` | model_patches/unet |
### Torch Compile
**File:** `comfy_extras/nodes_torch_compile.py`
**Count:** 1 nodes
| Node Name | Category |
|-----------|----------|
| `TorchCompileModel` | _for_testing |
### Train
**File:** `comfy_extras/nodes_train.py`
**Count:** 4 nodes
| Node Name | Category |
|-----------|----------|
| `LoraModelLoader` | loaders |
| `LossGraphNode` | training |
| `SaveLoRA` | loaders |
| `TrainLoraNode` | training |
### Upscale Model
**File:** `comfy_extras/nodes_upscale_model.py`
**Count:** 2 nodes
| Node Name | Category |
|-----------|----------|
| `ImageUpscaleWithModel` | image/upscaling |
| `UpscaleModelLoader` | loaders |
### Video
**File:** `comfy_extras/nodes_video.py`
**Count:** 5 nodes
| Node Name | Category |
|-----------|----------|
| `CreateVideo` | image/video |
| `GetVideoComponents` | image/video |
| `LoadVideo` | image/video |
| `SaveVideo` | image/video |
| `SaveWEBM` | image/video |
### Video Model
**File:** `comfy_extras/nodes_video_model.py`
**Count:** 6 nodes
| Node Name | Category |
|-----------|----------|
| `ConditioningSetAreaPercentageVideo` | - |
| `ImageOnlyCheckpointLoader` | - |
| `ImageOnlyCheckpointSave` | - |
| `SVD_img2vid_Conditioning` | - |
| `VideoLinearCFGGuidance` | - |
| `VideoTriangleCFGGuidance` | - |
### Wan
**File:** `comfy_extras/nodes_wan.py`
**Count:** 15 nodes
| Node Name | Category |
|-----------|----------|
| `TrimVideoLatent` | latent/video |
| `Wan22FunControlToVideo` | conditioning/video_models |
| `Wan22ImageToVideoLatent` | conditioning/inpaint |
| `WanAnimateToVideo` | conditioning/video_models |
| `WanCameraImageToVideo` | conditioning/video_models |
| `WanFirstLastFrameToVideo` | conditioning/video_models |
| `WanFunControlToVideo` | conditioning/video_models |
| `WanFunInpaintToVideo` | conditioning/video_models |
| `WanHuMoImageToVideo` | conditioning/video_models |
| `WanImageToVideo` | conditioning/video_models |
| `WanPhantomSubjectToVideo` | conditioning/video_models |
| `WanSoundImageToVideo` | conditioning/video_models |
| `WanSoundImageToVideoExtend` | conditioning/video_models |
| `WanTrackToVideo` | conditioning/video_models |
| `WanVaceToVideo` | conditioning/video_models |
### Webcam
**File:** `comfy_extras/nodes_webcam.py`
**Count:** 1 nodes
| Node Name | Category |
|-----------|----------|
| `WebcamCapture` | - |
---
## 3. API Nodes
**Source:** `comfy_api_nodes/`
**Count:** 118 nodes
External API integrations for cloud services.
### BFL
**File:** `comfy_api_nodes/nodes_bfl.py`
**Count:** 4 nodes
| Node Name | Category |
|-----------|----------|
| `Flux2ProImageNode` | api node/image/BFL |
| `FluxProExpandNode` | api node/image/BFL |
| `FluxProFillNode` | api node/image/BFL |
| `FluxProUltraImageNode` | api node/image/BFL |
### BYTEDANCE
**File:** `comfy_api_nodes/nodes_bytedance.py`
**Count:** 7 nodes
| Node Name | Category |
|-----------|----------|
| `ByteDanceFirstLastFrameNode` | api node/video/ByteDance |
| `ByteDanceImageEditNode` | api node/image/ByteDance |
| `ByteDanceImageNode` | api node/image/ByteDance |
| `ByteDanceImageReferenceNode` | api node/video/ByteDance |
| `ByteDanceImageToVideoNode` | api node/video/ByteDance |
| `ByteDanceSeedreamNode` | api node/image/ByteDance |
| `ByteDanceTextToVideoNode` | api node/video/ByteDance |
### GEMINI
**File:** `comfy_api_nodes/nodes_gemini.py`
**Count:** 4 nodes
| Node Name | Category |
|-----------|----------|
| `GeminiImage2Node` | api node/image/Gemini |
| `GeminiImageNode` | api node/image/Gemini |
| `GeminiInputFiles` | api node/text/Gemini |
| `GeminiNode` | api node/text/Gemini |
### IDEOGRAM
**File:** `comfy_api_nodes/nodes_ideogram.py`
**Count:** 3 nodes
| Node Name | Category |
|-----------|----------|
| `IdeogramV1` | api node/image/Ideogram |
| `IdeogramV2` | api node/image/Ideogram |
| `IdeogramV3` | api node/image/Ideogram |
### KLING
**File:** `comfy_api_nodes/nodes_kling.py`
**Count:** 13 nodes
| Node Name | Category |
|-----------|----------|
| `KlingCameraControlI2VNode` | api node/video/Kling |
| `KlingCameraControlT2VNode` | api node/video/Kling |
| `KlingCameraControls` | api node/video/Kling |
| `KlingDualCharacterVideoEffectNode` | api node/video/Kling |
| `KlingImage2VideoNode` | api node/video/Kling |
| `KlingImageGenerationNode` | api node/image/Kling |
| `KlingLipSyncAudioToVideoNode` | api node/video/Kling |
| `KlingLipSyncTextToVideoNode` | api node/video/Kling |
| `KlingSingleImageVideoEffectNode` | api node/video/Kling |
| `KlingStartEndFrameNode` | api node/video/Kling |
| `KlingTextToVideoNode` | api node/video/Kling |
| `KlingVideoExtendNode` | api node/video/Kling |
| `KlingVirtualTryOnNode` | api node/image/Kling |
### LTXV
**File:** `comfy_api_nodes/nodes_ltxv.py`
**Count:** 2 nodes
| Node Name | Category |
|-----------|----------|
| `LtxvApiImageToVideo` | api node/video/LTXV |
| `LtxvApiTextToVideo` | api node/video/LTXV |
### LUMA
**File:** `comfy_api_nodes/nodes_luma.py`
**Count:** 6 nodes
| Node Name | Category |
|-----------|----------|
| `LumaConceptsNode` | api node/video/Luma |
| `LumaImageModifyNode` | api node/image/Luma |
| `LumaImageNode` | api node/image/Luma |
| `LumaImageToVideoNode` | api node/video/Luma |
| `LumaReferenceNode` | api node/image/Luma |
| `LumaVideoNode` | api node/video/Luma |
### MINIMAX
**File:** `comfy_api_nodes/nodes_minimax.py`
**Count:** 4 nodes
| Node Name | Category |
|-----------|----------|
| `MinimaxHailuoVideoNode` | api node/video/MiniMax |
| `MinimaxImageToVideoNode` | api node/video/MiniMax |
| `MinimaxSubjectToVideoNode` | api node/video/MiniMax |
| `MinimaxTextToVideoNode` | api node/video/MiniMax |
### MOONVALLEY
**File:** `comfy_api_nodes/nodes_moonvalley.py`
**Count:** 3 nodes
| Node Name | Category |
|-----------|----------|
| `MoonvalleyImg2VideoNode` | api node/video/Moonvalley Marey |
| `MoonvalleyTxt2VideoNode` | api node/video/Moonvalley Marey |
| `MoonvalleyVideo2VideoNode` | api node/video/Moonvalley Marey |
### OPENAI
**File:** `comfy_api_nodes/nodes_openai.py`
**Count:** 6 nodes
| Node Name | Category |
|-----------|----------|
| `OpenAIChatConfig` | api node/text/OpenAI |
| `OpenAIChatNode` | api node/text/OpenAI |
| `OpenAIDalle2` | api node/image/OpenAI |
| `OpenAIDalle3` | api node/image/OpenAI |
| `OpenAIGPTImage1` | api node/image/OpenAI |
| `OpenAIInputFiles` | api node/text/OpenAI |
### PIKA
**File:** `comfy_api_nodes/nodes_pika.py`
**Count:** 7 nodes
| Node Name | Category |
|-----------|----------|
| `PikaImageToVideoNode2_2` | api node/video/Pika |
| `PikaScenesV2_2` | api node/video/Pika |
| `PikaStartEndFrameNode2_2` | api node/video/Pika |
| `PikaTextToVideoNode2_2` | api node/video/Pika |
| `Pikadditions` | api node/video/Pika |
| `Pikaffects` | api node/video/Pika |
| `Pikaswaps` | api node/video/Pika |
### PIXVERSE
**File:** `comfy_api_nodes/nodes_pixverse.py`
**Count:** 4 nodes
| Node Name | Category |
|-----------|----------|
| `PixverseImageToVideoNode` | api node/video/PixVerse |
| `PixverseTemplateNode` | api node/video/PixVerse |
| `PixverseTextToVideoNode` | api node/video/PixVerse |
| `PixverseTransitionVideoNode` | api node/video/PixVerse |
### RECRAFT
**File:** `comfy_api_nodes/nodes_recraft.py`
**Count:** 16 nodes
| Node Name | Category |
|-----------|----------|
| `RecraftColorRGB` | api node/image/Recraft |
| `RecraftControls` | api node/image/Recraft |
| `RecraftCreativeUpscaleNode` | api node/image/Recraft |
| `RecraftCrispUpscaleNode` | api node/image/Recraft |
| `RecraftImageInpaintingNode` | api node/image/Recraft |
| `RecraftImageToImageNode` | api node/image/Recraft |
| `RecraftRemoveBackgroundNode` | api node/image/Recraft |
| `RecraftReplaceBackgroundNode` | api node/image/Recraft |
| `RecraftStyleV3DigitalIllustration` | api node/image/Recraft |
| `RecraftStyleV3InfiniteStyleLibrary` | api node/image/Recraft |
| `RecraftStyleV3LogoRaster` | api node/image/Recraft |
| `RecraftStyleV3RealisticImage` | api node/image/Recraft |
| `RecraftStyleV3VectorIllustrationNode` | api node/image/Recraft |
| `RecraftTextToImageNode` | api node/image/Recraft |
| `RecraftTextToVectorNode` | api node/image/Recraft |
| `RecraftVectorizeImageNode` | api node/image/Recraft |
### RODIN
**File:** `comfy_api_nodes/nodes_rodin.py`
**Count:** 5 nodes
| Node Name | Category |
|-----------|----------|
| `Rodin3D_Detail` | api node/3d/Rodin |
| `Rodin3D_Gen2` | api node/3d/Rodin |
| `Rodin3D_Regular` | api node/3d/Rodin |
| `Rodin3D_Sketch` | api node/3d/Rodin |
| `Rodin3D_Smooth` | api node/3d/Rodin |
### RUNWAY
**File:** `comfy_api_nodes/nodes_runway.py`
**Count:** 4 nodes
| Node Name | Category |
|-----------|----------|
| `RunwayFirstLastFrameNode` | api node/video/Runway |
| `RunwayImageToVideoNodeGen3a` | api node/video/Runway |
| `RunwayImageToVideoNodeGen4` | api node/video/Runway |
| `RunwayTextToImageNode` | api node/image/Runway |
### SORA
**File:** `comfy_api_nodes/nodes_sora.py`
**Count:** 1 nodes
| Node Name | Category |
|-----------|----------|
| `OpenAIVideoSora2` | api node/video/Sora |
### STABILITY
**File:** `comfy_api_nodes/nodes_stability.py`
**Count:** 8 nodes
| Node Name | Category |
|-----------|----------|
| `StabilityAudioInpaint` | api node/image/Stability AI |
| `StabilityAudioToAudio` | api node/image/Stability AI |
| `StabilityStableImageSD_3_5Node` | api node/image/Stability AI |
| `StabilityStableImageUltraNode` | api node/image/Stability AI |
| `StabilityTextToAudio` | api node/image/Stability AI |
| `StabilityUpscaleConservativeNode` | api node/image/Stability AI |
| `StabilityUpscaleCreativeNode` | api node/image/Stability AI |
| `StabilityUpscaleFastNode` | api node/image/Stability AI |
### TOPAZ
**File:** `comfy_api_nodes/nodes_topaz.py`
**Count:** 2 nodes
| Node Name | Category |
|-----------|----------|
| `TopazImageEnhance` | api node/image/Topaz |
| `TopazVideoEnhance` | api node/video/Topaz |
### TRIPO
**File:** `comfy_api_nodes/nodes_tripo.py`
**Count:** 8 nodes
| Node Name | Category |
|-----------|----------|
| `TripoConversionNode` | api node/3d/Tripo |
| `TripoImageToModelNode` | api node/3d/Tripo |
| `TripoMultiviewToModelNode` | api node/3d/Tripo |
| `TripoRefineNode` | api node/3d/Tripo |
| `TripoRetargetNode` | api node/3d/Tripo |
| `TripoRigNode` | api node/3d/Tripo |
| `TripoTextToModelNode` | api node/3d/Tripo |
| `TripoTextureNode` | api node/3d/Tripo |
### VEO2
**File:** `comfy_api_nodes/nodes_veo2.py`
**Count:** 3 nodes
| Node Name | Category |
|-----------|----------|
| `Veo3FirstLastFrameNode` | api node/video/Veo |
| `Veo3VideoGenerationNode` | api node/video/Veo |
| `VeoVideoGenerationNode` | api node/video/Veo |
### VIDU
**File:** `comfy_api_nodes/nodes_vidu.py`
**Count:** 4 nodes
| Node Name | Category |
|-----------|----------|
| `ViduImageToVideoNode` | api node/video/Vidu |
| `ViduReferenceVideoNode` | api node/video/Vidu |
| `ViduStartEndToVideoNode` | api node/video/Vidu |
| `ViduTextToVideoNode` | api node/video/Vidu |
### WAN
**File:** `comfy_api_nodes/nodes_wan.py`
**Count:** 4 nodes
| Node Name | Category |
|-----------|----------|
| `WanImageToImageApi` | api node/image/Wan |
| `WanImageToVideoApi` | api node/video/Wan |
| `WanTextToImageApi` | api node/image/Wan |
| `WanTextToVideoApi` | api node/video/Wan |
---
## 4. Nodes by Category
Nodes grouped by their functional category.
### 3d
**Count:** 3 nodes
- `SaveGLB` [extras]
- `VoxelToMesh` [extras]
- `VoxelToMeshBasic` [extras]
### _for_testing
**Count:** 9 nodes
- `DifferentialDiffusion` [extras]
- `FreSca` [extras]
- `LoraSave` [extras]
- `Mahiro` [extras]
- `PerpNeg` [extras]
- `PerpNegGuider` [extras]
- `SamplerEulerCFGpp` [extras]
- `SelfAttentionGuidance` [extras]
- `TorchCompileModel` [extras]
### _for_testing/attention_experiments
**Count:** 4 nodes
- `CLIPAttentionMultiply` [extras]
- `UNetCrossAttentionMultiply` [extras]
- `UNetSelfAttentionMultiply` [extras]
- `UNetTemporalAttentionMultiply` [extras]
### _for_testing/conditioning
**Count:** 2 nodes
- `CLIPTextEncodeControlnet` [extras]
- `T5TokenizerOptions` [extras]
### _for_testing/custom_sampling/noise
**Count:** 1 nodes
- `AddNoise` [extras]
### _for_testing/photomaker
**Count:** 2 nodes
- `PhotoMakerEncode` [extras]
- `PhotoMakerLoader` [extras]
### _for_testing/stable_cascade
**Count:** 1 nodes
- `StableCascade_SuperResolutionControlnet` [extras]
### advanced/conditioning
**Count:** 9 nodes
- `CLIPTextEncodeHiDream` [extras]
- `CLIPTextEncodeHunyuanDiT` [extras]
- `CLIPTextEncodePixArtAlpha` [extras]
- `CLIPTextEncodeSD3` [extras]
- `CLIPTextEncodeSDXL` [extras]
- `CLIPTextEncodeSDXLRefiner` [extras]
- `TextEncodeHunyuanVideo_ImageToVideo` [extras]
- `TextEncodeQwenImageEdit` [extras]
- `TextEncodeQwenImageEditPlus` [extras]
### advanced/conditioning/edit_models
**Count:** 1 nodes
- `ReferenceLatent` [extras]
### advanced/conditioning/flux
**Count:** 5 nodes
- `CLIPTextEncodeFlux` [extras]
- `FluxDisableGuidance` [extras]
- `FluxGuidance` [extras]
- `FluxKontextImageScale` [extras]
- `FluxKontextMultiReferenceLatentMethod` [extras]
### advanced/debug/model
**Count:** 2 nodes
- `EasyCache` [extras]
- `LazyCache` [extras]
### advanced/guidance
**Count:** 6 nodes
- `CFGNorm` [extras]
- `CFGZeroStar` [extras]
- `SkipLayerGuidanceDiT` [extras]
- `SkipLayerGuidanceDiTSimple` [extras]
- `SkipLayerGuidanceSD3` [extras]
- `TCFG` [extras]
### advanced/loaders
**Count:** 2 nodes
- `QuadrupleCLIPLoader` [extras]
- `TripleCLIPLoader` [extras]
### advanced/model
**Count:** 2 nodes
- `ModelSamplingLTXV` [extras]
- `RenormCFG` [extras]
### advanced/model_patches
**Count:** 1 nodes
- `ScaleROPE` [extras]
### api node/3d/Rodin
**Count:** 5 nodes
- `Rodin3D_Detail` [api]
- `Rodin3D_Gen2` [api]
- `Rodin3D_Regular` [api]
- `Rodin3D_Sketch` [api]
- `Rodin3D_Smooth` [api]
### api node/3d/Tripo
**Count:** 8 nodes
- `TripoConversionNode` [api]
- `TripoImageToModelNode` [api]
- `TripoMultiviewToModelNode` [api]
- `TripoRefineNode` [api]
- `TripoRetargetNode` [api]
- `TripoRigNode` [api]
- `TripoTextToModelNode` [api]
- `TripoTextureNode` [api]
### api node/image/BFL
**Count:** 4 nodes
- `Flux2ProImageNode` [api]
- `FluxProExpandNode` [api]
- `FluxProFillNode` [api]
- `FluxProUltraImageNode` [api]
### api node/image/ByteDance
**Count:** 3 nodes
- `ByteDanceImageEditNode` [api]
- `ByteDanceImageNode` [api]
- `ByteDanceSeedreamNode` [api]
### api node/image/Gemini
**Count:** 2 nodes
- `GeminiImage2Node` [api]
- `GeminiImageNode` [api]
### api node/image/Ideogram
**Count:** 3 nodes
- `IdeogramV1` [api]
- `IdeogramV2` [api]
- `IdeogramV3` [api]
### api node/image/Kling
**Count:** 2 nodes
- `KlingImageGenerationNode` [api]
- `KlingVirtualTryOnNode` [api]
### api node/image/Luma
**Count:** 3 nodes
- `LumaImageModifyNode` [api]
- `LumaImageNode` [api]
- `LumaReferenceNode` [api]
### api node/image/OpenAI
**Count:** 3 nodes
- `OpenAIDalle2` [api]
- `OpenAIDalle3` [api]
- `OpenAIGPTImage1` [api]
### api node/image/Recraft
**Count:** 16 nodes
- `RecraftColorRGB` [api]
- `RecraftControls` [api]
- `RecraftCreativeUpscaleNode` [api]
- `RecraftCrispUpscaleNode` [api]
- `RecraftImageInpaintingNode` [api]
- `RecraftImageToImageNode` [api]
- `RecraftRemoveBackgroundNode` [api]
- `RecraftReplaceBackgroundNode` [api]
- `RecraftStyleV3DigitalIllustration` [api]
- `RecraftStyleV3InfiniteStyleLibrary` [api]
- `RecraftStyleV3LogoRaster` [api]
- `RecraftStyleV3RealisticImage` [api]
- `RecraftStyleV3VectorIllustrationNode` [api]
- `RecraftTextToImageNode` [api]
- `RecraftTextToVectorNode` [api]
- `RecraftVectorizeImageNode` [api]
### api node/image/Runway
**Count:** 1 nodes
- `RunwayTextToImageNode` [api]
### api node/image/Stability AI
**Count:** 8 nodes
- `StabilityAudioInpaint` [api]
- `StabilityAudioToAudio` [api]
- `StabilityStableImageSD_3_5Node` [api]
- `StabilityStableImageUltraNode` [api]
- `StabilityTextToAudio` [api]
- `StabilityUpscaleConservativeNode` [api]
- `StabilityUpscaleCreativeNode` [api]
- `StabilityUpscaleFastNode` [api]
### api node/image/Topaz
**Count:** 1 nodes
- `TopazImageEnhance` [api]
### api node/image/Wan
**Count:** 2 nodes
- `WanImageToImageApi` [api]
- `WanTextToImageApi` [api]
### api node/text/Gemini
**Count:** 2 nodes
- `GeminiInputFiles` [api]
- `GeminiNode` [api]
### api node/text/OpenAI
**Count:** 3 nodes
- `OpenAIChatConfig` [api]
- `OpenAIChatNode` [api]
- `OpenAIInputFiles` [api]
### api node/video/ByteDance
**Count:** 4 nodes
- `ByteDanceFirstLastFrameNode` [api]
- `ByteDanceImageReferenceNode` [api]
- `ByteDanceImageToVideoNode` [api]
- `ByteDanceTextToVideoNode` [api]
### api node/video/Kling
**Count:** 11 nodes
- `KlingCameraControlI2VNode` [api]
- `KlingCameraControlT2VNode` [api]
- `KlingCameraControls` [api]
- `KlingDualCharacterVideoEffectNode` [api]
- `KlingImage2VideoNode` [api]
- `KlingLipSyncAudioToVideoNode` [api]
- `KlingLipSyncTextToVideoNode` [api]
- `KlingSingleImageVideoEffectNode` [api]
- `KlingStartEndFrameNode` [api]
- `KlingTextToVideoNode` [api]
- `KlingVideoExtendNode` [api]
### api node/video/LTXV
**Count:** 2 nodes
- `LtxvApiImageToVideo` [api]
- `LtxvApiTextToVideo` [api]
### api node/video/Luma
**Count:** 3 nodes
- `LumaConceptsNode` [api]
- `LumaImageToVideoNode` [api]
- `LumaVideoNode` [api]
### api node/video/MiniMax
**Count:** 4 nodes
- `MinimaxHailuoVideoNode` [api]
- `MinimaxImageToVideoNode` [api]
- `MinimaxSubjectToVideoNode` [api]
- `MinimaxTextToVideoNode` [api]
### api node/video/Moonvalley Marey
**Count:** 3 nodes
- `MoonvalleyImg2VideoNode` [api]
- `MoonvalleyTxt2VideoNode` [api]
- `MoonvalleyVideo2VideoNode` [api]
### api node/video/Pika
**Count:** 7 nodes
- `PikaImageToVideoNode2_2` [api]
- `PikaScenesV2_2` [api]
- `PikaStartEndFrameNode2_2` [api]
- `PikaTextToVideoNode2_2` [api]
- `Pikadditions` [api]
- `Pikaffects` [api]
- `Pikaswaps` [api]
### api node/video/PixVerse
**Count:** 4 nodes
- `PixverseImageToVideoNode` [api]
- `PixverseTemplateNode` [api]
- `PixverseTextToVideoNode` [api]
- `PixverseTransitionVideoNode` [api]
### api node/video/Runway
**Count:** 3 nodes
- `RunwayFirstLastFrameNode` [api]
- `RunwayImageToVideoNodeGen3a` [api]
- `RunwayImageToVideoNodeGen4` [api]
### api node/video/Sora
**Count:** 1 nodes
- `OpenAIVideoSora2` [api]
### api node/video/Topaz
**Count:** 1 nodes
- `TopazVideoEnhance` [api]
### api node/video/Veo
**Count:** 3 nodes
- `Veo3FirstLastFrameNode` [api]
- `Veo3VideoGenerationNode` [api]
- `VeoVideoGenerationNode` [api]
### api node/video/Vidu
**Count:** 4 nodes
- `ViduImageToVideoNode` [api]
- `ViduReferenceVideoNode` [api]
- `ViduStartEndToVideoNode` [api]
- `ViduTextToVideoNode` [api]
### api node/video/Wan
**Count:** 2 nodes
- `WanImageToVideoApi` [api]
- `WanTextToVideoApi` [api]
### audio
**Count:** 16 nodes
- `AudioAdjustVolume` [extras]
- `AudioConcat` [extras]
- `AudioMerge` [extras]
- `ConditioningStableAudio` [extras]
- `EmptyAudio` [extras]
- `EmptyLatentAudio` [extras]
- `LoadAudio` [extras]
- `PreviewAudio` [extras]
- `RecordAudio` [extras]
- `SaveAudio` [extras]
- `SaveAudioMP3` [extras]
- `SaveAudioOpus` [extras]
- `SplitAudioChannels` [extras]
- `TrimAudioDuration` [extras]
- `VAEDecodeAudio` [extras]
- `VAEEncodeAudio` [extras]
### camera
**Count:** 1 nodes
- `WanCameraEmbedding` [extras]
### conditioning
**Count:** 3 nodes
- `AudioEncoderEncode` [extras]
- `CLIPTextEncodeLumina2` [extras]
- `TextEncodeAceStepAudio` [extras]
### conditioning/3d_models
**Count:** 3 nodes
- `SV3D_Conditioning` [extras]
- `StableZero123_Conditioning` [extras]
- `StableZero123_Conditioning_Batched` [extras]
### conditioning/controlnet
**Count:** 3 nodes
- `ControlNetApplySD3` [extras]
- `ControlNetInpaintingAliMamaApply` [extras]
- `SetUnionControlNetType` [extras]
### conditioning/inpaint
**Count:** 3 nodes
- `CosmosImageToVideoLatent` [extras]
- `CosmosPredict2ImageToVideoLatent` [extras]
- `Wan22ImageToVideoLatent` [extras]
### conditioning/instructpix2pix
**Count:** 1 nodes
- `InstructPixToPixConditioning` [extras]
### conditioning/lotus
**Count:** 1 nodes
- `LotusConditioning` [extras]
### conditioning/stable_cascade
**Count:** 1 nodes
- `StableCascade_StageB_Conditioning` [extras]
### conditioning/upscale_diffusion
**Count:** 1 nodes
- `SD_4XUpscale_Conditioning` [extras]
### conditioning/video_models
**Count:** 21 nodes
- `Hunyuan3Dv2Conditioning` [extras]
- `Hunyuan3Dv2ConditioningMultiView` [extras]
- `HunyuanImageToVideo` [extras]
- `HunyuanVideo15ImageToVideo` [extras]
- `LTXVAddGuide` [extras]
- `LTXVConditioning` [extras]
- `LTXVCropGuides` [extras]
- `LTXVImgToVideo` [extras]
- `Wan22FunControlToVideo` [extras]
- `WanAnimateToVideo` [extras]
- `WanCameraImageToVideo` [extras]
- `WanFirstLastFrameToVideo` [extras]
- `WanFunControlToVideo` [extras]
- `WanFunInpaintToVideo` [extras]
- `WanHuMoImageToVideo` [extras]
- `WanImageToVideo` [extras]
- `WanPhantomSubjectToVideo` [extras]
- `WanSoundImageToVideo` [extras]
- `WanSoundImageToVideoExtend` [extras]
- `WanTrackToVideo` [extras]
- `WanVaceToVideo` [extras]
### context
**Count:** 1 nodes
- `ContextWindowsManual` [extras]
### context_windows
**Count:** 1 nodes
- `WanContextWindowsManual` [extras]
### core
**Count:** 64 nodes
- `CLIPLoader`
- `CLIPSetLastLayer`
- `CLIPTextEncode`
- `CLIPVisionEncode`
- `CLIPVisionLoader`
- `CheckpointLoader`
- `CheckpointLoaderSimple`
- `ConditioningAverage`
- `ConditioningCombine`
- `ConditioningConcat`
- `ConditioningSetArea`
- `ConditioningSetAreaPercentage`
- `ConditioningSetAreaStrength`
- `ConditioningSetMask`
- `ConditioningSetTimestepRange`
- `ConditioningZeroOut`
- `ControlNetApply`
- `ControlNetApplyAdvanced`
- `ControlNetLoader`
- `DiffControlNetLoader`
- `DiffusersLoader`
- `DualCLIPLoader`
- `EmptyImage`
- `EmptyLatentImage`
- `GLIGENLoader`
- `GLIGENTextBoxApply`
- `ImageBatch`
- `ImageInvert`
- `ImagePadForOutpaint`
- `ImageScale`
- `ImageScaleBy`
- `InpaintModelConditioning`
- `KSampler`
- `KSamplerAdvanced`
- `LatentBlend`
- `LatentComposite`
- `LatentCrop`
- `LatentFlip`
- `LatentFromBatch`
- `LatentRotate`
- `LatentUpscale`
- `LatentUpscaleBy`
- `LoadImage`
- `LoadImageMask`
- `LoadImageOutput`
- `LoadLatent`
- `LoraLoader`
- `LoraLoaderModelOnly`
- `PreviewImage`
- `RepeatLatentBatch`
- `SaveImage`
- `SaveLatent`
- `SetLatentNoiseMask`
- `StyleModelApply`
- `StyleModelLoader`
- `UNETLoader`
- `VAEDecode`
- `VAEDecodeTiled`
- `VAEEncode`
- `VAEEncodeForInpaint`
- `VAEEncodeTiled`
- `VAELoader`
- `unCLIPCheckpointLoader`
- `unCLIPConditioning`
### dataset
**Count:** 18 nodes
- `AddTextPrefix` [extras]
- `AddTextSuffix` [extras]
- `ImageDeduplication` [extras]
- `ImageGrid` [extras]
- `LoadImageDataSetFromFolder` [extras]
- `LoadImageTextDataSetFromFolder` [extras]
- `LoadTrainingDataset` [extras]
- `MakeTrainingDataset` [extras]
- `MergeImageLists` [extras]
- `MergeTextLists` [extras]
- `ReplaceText` [extras]
- `SaveImageDataSetToFolder` [extras]
- `SaveImageTextDataSetToFolder` [extras]
- `SaveTrainingDataset` [extras]
- `StripWhitespace` [extras]
- `TextToLowercase` [extras]
- `TextToUppercase` [extras]
- `TruncateText` [extras]
### dataset/image
**Count:** 9 nodes
- `AdjustBrightness` [extras]
- `AdjustContrast` [extras]
- `CenterCropImages` [extras]
- `NormalizeImages` [extras]
- `RandomCropImages` [extras]
- `ResizeImagesByLongerEdge` [extras]
- `ResizeImagesByShorterEdge` [extras]
- `ShuffleDataset` [extras]
- `ShuffleImageTextDataset` [extras]
### freelunch
**Count:** 2 nodes
- `FreeU` [extras]
- `FreeU_V2` [extras]
### hooks
**Count:** 20 nodes
- `CombineHooks2` [extras]
- `CombineHooks4` [extras]
- `CombineHooks8` [extras]
- `ConditioningSetDefaultCombine` [extras]
- `ConditioningSetProperties` [extras]
- `ConditioningSetPropertiesAndCombine` [extras]
- `ConditioningTimestepsRange` [extras]
- `CreateHookKeyframe` [extras]
- `CreateHookKeyframesFromFloats` [extras]
- `CreateHookKeyframesInterpolated` [extras]
- `CreateHookLora` [extras]
- `CreateHookLoraModelOnly` [extras]
- `CreateHookModelAsLora` [extras]
- `CreateHookModelAsLoraModelOnly` [extras]
- `PairConditioningCombine` [extras]
- `PairConditioningSetDefaultCombine` [extras]
- `PairConditioningSetProperties` [extras]
- `PairConditioningSetPropertiesAndCombine` [extras]
- `SetClipHooks` [extras]
- `SetHookKeyframes` [extras]
### hunyuan
**Count:** 3 nodes
- `EmptyHunyuanVideo15Latent` [extras]
- `HunyuanRefinerLatent` [extras]
- `HunyuanVideo15SuperResolution` [extras]
### image
**Count:** 1 nodes
- `LTXVPreprocess` [extras]
### image/batch
**Count:** 3 nodes
- `ImageRGBToYUV` [extras]
- `ImageYUVToRGB` [extras]
- `RebatchImages` [extras]
### image/postprocessing
**Count:** 5 nodes
- `ImageBlend` [extras]
- `ImageBlur` [extras]
- `ImageQuantize` [extras]
- `ImageSharpen` [extras]
- `Morphology` [extras]
### image/preprocessors
**Count:** 1 nodes
- `Canny` [extras]
### image/upscaling
**Count:** 2 nodes
- `ImageScaleToTotalPixels` [extras]
- `ImageUpscaleWithModel` [extras]
### image/video
**Count:** 5 nodes
- `CreateVideo` [extras]
- `GetVideoComponents` [extras]
- `LoadVideo` [extras]
- `SaveVideo` [extras]
- `SaveWEBM` [extras]
### images
**Count:** 13 nodes
- `GetImageSize` [extras]
- `ImageAddNoise` [extras]
- `ImageCrop` [extras]
- `ImageFlip` [extras]
- `ImageFromBatch` [extras]
- `ImageRotate` [extras]
- `ImageScaleToMaxDimension` [extras]
- `ImageStitch` [extras]
- `RepeatImageBatch` [extras]
- `ResizeAndPadImage` [extras]
- `SaveAnimatedPNG` [extras]
- `SaveAnimatedWEBP` [extras]
- `SaveSVGNode` [extras]
### latent
**Count:** 3 nodes
- `EmptyFlux2LatentImage` [extras]
- `EmptyHunyuanImageLatent` [extras]
- `HunyuanVideo15LatentUpscaleWithModel` [extras]
### latent/3d
**Count:** 2 nodes
- `EmptyLatentHunyuan3Dv2` [extras]
- `VAEDecodeHunyuan3D` [extras]
### latent/advanced
**Count:** 7 nodes
- `LatentAdd` [extras]
- `LatentBatchSeedBehavior` [extras]
- `LatentConcat` [extras]
- `LatentCut` [extras]
- `LatentInterpolate` [extras]
- `LatentMultiply` [extras]
- `LatentSubtract` [extras]
### latent/advanced/operations
**Count:** 4 nodes
- `LatentApplyOperation` [extras]
- `LatentApplyOperationCFG` [extras]
- `LatentOperationSharpen` [extras]
- `LatentOperationTonemapReinhard` [extras]
### latent/audio
**Count:** 1 nodes
- `EmptyAceStepLatentAudio` [extras]
### latent/batch
**Count:** 2 nodes
- `LatentBatch` [extras]
- `RebatchLatents` [extras]
### latent/chroma_radiance
**Count:** 1 nodes
- `EmptyChromaRadianceLatentImage` [extras]
### latent/sd3
**Count:** 1 nodes
- `EmptySD3LatentImage` [extras]
### latent/stable_cascade
**Count:** 2 nodes
- `StableCascade_EmptyLatentImage` [extras]
- `StableCascade_StageC_VAEEncode` [extras]
### latent/video
**Count:** 4 nodes
- `EmptyCosmosLatentVideo` [extras]
- `EmptyHunyuanLatentVideo` [extras]
- `EmptyMochiLatentVideo` [extras]
- `TrimVideoLatent` [extras]
### latent/video/ltxv
**Count:** 1 nodes
- `EmptyLTXVLatentVideo` [extras]
### load_3d
**Count:** 2 nodes
- `Load3D` [extras]
- `Preview3D` [extras]
### loaders
**Count:** 6 nodes
- `AudioEncoderLoader` [extras]
- `HypernetworkLoader` [extras]
- `LatentUpscaleModelLoader` [extras]
- `LoraModelLoader` [extras]
- `SaveLoRA` [extras]
- `UpscaleModelLoader` [extras]
### mask
**Count:** 13 nodes
- `CropMask` [extras]
- `FeatherMask` [extras]
- `GrowMask` [extras]
- `ImageColorToMask` [extras]
- `ImageCompositeMasked` [extras]
- `ImageToMask` [extras]
- `InvertMask` [extras]
- `LatentCompositeMasked` [extras]
- `MaskComposite` [extras]
- `MaskPreview` [extras]
- `MaskToImage` [extras]
- `SolidMask` [extras]
- `ThresholdMask` [extras]
### mask/compositing
**Count:** 3 nodes
- `JoinImageWithAlpha` [extras]
- `PorterDuffImageComposite` [extras]
- `SplitImageWithAlpha` [extras]
### model_advanced
**Count:** 9 nodes
- `ModelComputeDtype` [extras]
- `ModelSamplingAuraFlow` [extras]
- `ModelSamplingContinuousEDM` [extras]
- `ModelSamplingContinuousV` [extras]
- `ModelSamplingDiscrete` [extras]
- `ModelSamplingFlux` [extras]
- `ModelSamplingSD3` [extras]
- `ModelSamplingStableCascade` [extras]
- `RescaleCFG` [extras]
### model_merging
**Count:** 11 nodes
- `CLIPMergeAdd` [extras]
- `CLIPMergeSimple` [extras]
- `CLIPMergeSubtract` [extras]
- `CLIPSave` [extras]
- `CheckpointSave` [extras]
- `ModelMergeAdd` [extras]
- `ModelMergeBlocks` [extras]
- `ModelMergeSimple` [extras]
- `ModelMergeSubtract` [extras]
- `ModelSave` [extras]
- `VAESave` [extras]
### model_merging_model_specific
**Count:** 15 nodes
- `ModelMergeAuraflow` [extras]
- `ModelMergeCosmos14B` [extras]
- `ModelMergeCosmos7B` [extras]
- `ModelMergeCosmosPredict2_14B` [extras]
- `ModelMergeCosmosPredict2_2B` [extras]
- `ModelMergeFlux1` [extras]
- `ModelMergeLTXV` [extras]
- `ModelMergeMochiPreview` [extras]
- `ModelMergeQwenImage` [extras]
- `ModelMergeSD1` [extras]
- `ModelMergeSD2` [extras]
- `ModelMergeSD35_Large` [extras]
- `ModelMergeSD3_2B` [extras]
- `ModelMergeSDXL` [extras]
- `ModelMergeWAN2_1` [extras]
### model_patch
**Count:** 3 nodes
- `ModelPatchLoader` [extras]
- `QwenImageDiffsynthControlnet` [extras]
- `USOStyleReference` [extras]
### model_patches/chroma_radiance
**Count:** 1 nodes
- `ChromaRadianceOptions` [extras]
### model_patches/unet
**Count:** 6 nodes
- `Epsilon Scaling` [extras]
- `HyperTile` [extras]
- `PatchModelAddDownscale` [extras]
- `PerturbedAttentionGuidance` [extras]
- `TemporalScoreRescaling` [extras]
- `TomePatchModel` [extras]
### nop
**Count:** 1 nodes
- `wanBlockSwap` [extras]
### preview_any
**Count:** 1 nodes
- `PreviewAny` [extras]
### sampling/custom_sampling
**Count:** 4 nodes
- `APG` [extras]
- `RandomNoise` [extras]
- `SamplerCustom` [extras]
- `SamplerCustomAdvanced` [extras]
### sampling/custom_sampling/guiders
**Count:** 3 nodes
- `BasicGuider` [extras]
- `CFGGuider` [extras]
- `DualCFGGuider` [extras]
### sampling/custom_sampling/noise
**Count:** 1 nodes
- `DisableNoise` [extras]
### sampling/custom_sampling/samplers
**Count:** 12 nodes
- `KSamplerSelect` [extras]
- `SamplerDPMAdaptative` [extras]
- `SamplerDPMPP_2M_SDE` [extras]
- `SamplerDPMPP_2S_Ancestral` [extras]
- `SamplerDPMPP_3M_SDE` [extras]
- `SamplerDPMPP_SDE` [extras]
- `SamplerER_SDE` [extras]
- `SamplerEulerAncestral` [extras]
- `SamplerEulerAncestralCFGPP` [extras]
- `SamplerLCMUpscale` [extras]
- `SamplerLMS` [extras]
- `SamplerSASolver` [extras]
### sampling/custom_sampling/schedulers
**Count:** 13 nodes
- `AlignYourStepsScheduler` [extras]
- `BasicScheduler` [extras]
- `BetaSamplingScheduler` [extras]
- `ExponentialScheduler` [extras]
- `Flux2Scheduler` [extras]
- `GITSScheduler` [extras]
- `KarrasScheduler` [extras]
- `LTXVScheduler` [extras]
- `LaplaceScheduler` [extras]
- `OptimalStepsScheduler` [extras]
- `PolyexponentialScheduler` [extras]
- `SDTurboScheduler` [extras]
- `VPScheduler` [extras]
### sampling/custom_sampling/sigmas
**Count:** 6 nodes
- `ExtendIntermediateSigmas` [extras]
- `FlipSigmas` [extras]
- `SamplingPercentToSigma` [extras]
- `SetFirstSigma` [extras]
- `SplitSigmas` [extras]
- `SplitSigmasDenoise` [extras]
### training
**Count:** 2 nodes
- `LossGraphNode` [extras]
- `TrainLoraNode` [extras]
### utils/primitive
**Count:** 5 nodes
- `PrimitiveBoolean` [extras]
- `PrimitiveFloat` [extras]
- `PrimitiveInt` [extras]
- `PrimitiveString` [extras]
- `PrimitiveStringMultiline` [extras]
### utils/string
**Count:** 11 nodes
- `CaseConverter` [extras]
- `RegexExtract` [extras]
- `RegexMatch` [extras]
- `RegexReplace` [extras]
- `StringCompare` [extras]
- `StringConcatenate` [extras]
- `StringContains` [extras]
- `StringLength` [extras]
- `StringReplace` [extras]
- `StringSubstring` [extras]
- `StringTrim` [extras]
### video_model
**Count:** 6 nodes
- `ConditioningSetAreaPercentageVideo` [extras]
- `ImageOnlyCheckpointLoader` [extras]
- `ImageOnlyCheckpointSave` [extras]
- `SVD_img2vid_Conditioning` [extras]
- `VideoLinearCFGGuidance` [extras]
- `VideoTriangleCFGGuidance` [extras]
### webcam
**Count:** 1 nodes
- `WebcamCapture` [extras]
---
## Node Registration Patterns
ComfyUI uses two main patterns for registering nodes:
### 1. Legacy Pattern (NODE_CLASS_MAPPINGS)
```python
NODE_CLASS_MAPPINGS = {
"NodeName": NodeClass,
}
```
### 2. New Pattern (ComfyExtension + io.Schema)
```python
class MyNode(io.ComfyNode):
@classmethod
def define_schema(cls):
return io.Schema(
node_id="MyNodeName",
category="category/subcategory",
inputs=[...],
outputs=[...]
)
class MyExtension(ComfyExtension):
async def get_node_list(self):
return [MyNode]
```
---
*Generated from ComfyUI source code*