ComfyUI-UtilsCollection
A ComfyUI extension with 255 custom nodes.
Nodes (255)
Two resolutions from one set of numbers, so base and hires can't disagree
Weight individual phrases by biasing their attention, not their tokens
Drop in a hand-tuned style paragraph without writing it yourself
The same style shelf, rewritten for video models
Camera language that actually moves the shot, without the typos
One color, three formats, zero guessing
Pick a branch, or just pass through
An any-type A/B switch that keeps old workflows alive
The action half of an edit instruction, pre-written and phrased right
Tell the edit model *what* you're editing, in its own language
Ideogram 4's official step counts, as a drag-in sigma node
The compositing node done right — pure PyTorch, auto-resize, no hunting through other packs
Procedural color noise in eight flavors, seeded and repeatable
Fill a hole by pulling the surrounding pixels in, not by guessing
Stretch the edges inward, telescoping, for holes a single fill can't handle
Make a generated image inherit the reference's color and light
One node that resizes, crops to aspect, and hands you the numbers
Ready-made instruction blocks for image-editing models
Instruction blocks rewritten for video-edit conditioning
A random integer you can actually lock down and replay
Paint a mask, erase it, no diffusion checkpoint involved
The lama remover for when your mask is an image, not a MASK
Grow, shrink, blur, invert, and batch
Paste an AI edit back onto the original without the seam
A random number you can wire to five things at once
Randomness you can reproduce — the seed-friendly integer roller
Stop typing the same number into five widgets
Stop doing the aspect-ratio math in your head
`<cat=1.5>`
Klein's chat template with per-token emphasis on top
LTXV 2 conditioning with image reference, system prompt, and bias
One encoder, three model templates, zero guessing
Inject reasoning into a Z-Image prompt
Z-Image's system prompt slot, scaled-bias edition
Load a whole folder of images as a batch
Load an image from anywhere, not just the input folder
The system prompts this author spent days writing, for free
The same great edit system prompts, but aimed at video
Two taggers, one clean deduped list
Blend two reference images with math before the encoder sees them
The system prompt slot Flux 2 dev actually wants
The advanced edit encoder with a system prompt, for Gemma-family models
The correct chat template for Flux 2 Klein, think block included
Reweight what Krea 2 actually looks at, word by word
Text, reference images, and math in the prompt
A Krea 2 encoder with a resolution dial and numbered picture anchors
The LTX-2 encoder that puts your system prompt where it belongs
Three image sockets, no autogrow fuss
The autogrow encoder that flattens whole image batches into the prompt
One text-encode node that understands all the 2026 chat-template models
Give Z-Image a thinking block it will actually use
The Z-Image encoder with a proper system prompt slot
Run a Qwen3.5 chat inside your graph — braces and all
Burn text onto images without leaving ComfyUI
Expand a bounding box around its center, cleanly
One node that computes both your base and upscaled resolution
The config node that decides how many resolutions your consensus encodes
The MiniMax H3 image-to-video conditioning node that does the plumbing for you
Fuse your reference images spatially, then let a vote settle the resolution
The token-first alternative to the visual consensus encoder
The advanced visual encoder that turns 'encode these images' into a toolbox
Token fusion for the advanced visual encoder
More motion fidelity from MiniMax H3 video — without spending extra tokens on it
MiniMax H3 temporal density, fused before the Qwen encode (the VRAM-savvy twin)
TokenFusion for MiniMax H3 image-to-video
Pose Control for Your Dog, Cat, or Horse (Yes, Really)
1.3) does nothing: Attention Bias Encode
Cutouts that keep their soft edge (and skip the model when you already have alpha)
OpenPose That Actually Enjoys Being Fed a Video
Make your prompts look like a heavy-metal album (Bold Fraktur text)
Bonus Prompt Presets
Same style blocks, built for video prompts
Name a camera move and get the right words for it
Color Convert saves you the hex-to-int math
A manual for the compositor family, inside your graph
Blend multiple encodings after the fact, without touching reference placement
Crop exactly to your subject, and get the offsets to paste it back
Colour the Body Instead of Drawing the Stick Figure
The one-node fix when your sampler needs its penultimate sigma gone
Whole-Body Pose Without the ONNX Stack
A dropdown of edit instructions, from censor bars to anatomy fixes
Describe the thing you're editing without fumbling for words
Find out what's actually inside that .pt embedding you downloaded
A field manual for the pack's advanced encoder family
Pull x, y, width, height out of any bbox-shaped data
Grab one frame out of an image list without slicing a batch
Take one layer out of a mask batch, cleanly
Steal the palette, not the pixels
Cut every face out of a group shot as a clean RGBA layer
Grab a slice of any list
Eight seeds from one knob
A JSON file as your config panel
Stitch your tiles back without the seams
Tiled diffusion without the patchwork
The tiling manual that lives in your graph
Crop to a box, get the Ideogram coordinates too
The Ideogram 4 debanner patch, and why it only runs half the schedule
Resize the pixels and the mask, together
Blend two images with an actual mask
Grain, on demand, in whatever color you want
Put the processed crop back where it came from
Fill those borders from the inside
Stretch the border, keep the texture
Make the new shot match the old light
Padding that brings its own mask
Think in megapixels, not magic numbers
Turn your storyboard frames into timestamps
Talk like an editor, get video instructions
One click to 'make it a 3D render'
A dropdown of hand-written style instructions for your video prompts
A seeded random integer that stays reproducible across runs
Cleaning up LLM JSON output so ComfyUI stops choking on it
Export Krea 2's actual text embeddings instead of re-encoding every run
Subtracting Krea 2's refusal direction, layer by layer
Measure what Krea 2's conditioning layers are actually doing
Phrase-level attention weights for Krea 2, not just prompt emphasis
Krea 2 attention weighting after token-first visual fusion
Erase things with no prompt, no sampler, no drama
Cut, place, and layer subjects onto a new background without Photoshop
Old preset prompts, kept alive so your old workflows don't break
Turn a list of images into a batch without the slow path
Load a whole folder of images for batch workflows
Load an image from any path on disk, not just the input folder
Load an image and keep its alpha channel as actual pixels
The boring half of the fastest inpaint in town
All inputs must be true, or the whole thing is false
The ternary operator your workflows keep needing
The one-line inverter that makes your gates readable
True if any one of your conditions passes
True when an odd number of inputs are true
Apply a LoRA to the text encoder and leave the diffusion model alone
Finally, a Way to Actually Read What a Text Node Is Saying
Turn your mask into a crop, a box, or an anchor
The Math Node You Didn't Know You Needed
Add Up Ten Numbers at Once, the Way You Wished ComfyUI Did
9 Without Doing Division in Your Head
When 'At Least This Many' Is What You Actually Mean
Put a Fence Around a Number So It Can't Go Off the Rails
Turning a Comparison Into a Yes or No
Cosine, Radians vs. Degrees, and the First Real Trap in the Math Pack
Divide by Zero Is a Feature Here (and It Saves You From a Crash)
Round Down, and the Negative-Number Trap That Gets Everyone Once
The 'At Least This Big' Guardrail for Resolutions and Batches
The Ceiling You Slap on Values Before They Break Something
The Easiest Way to Make Things Loop and Cycle
Multiply a Whole Chain of Numbers in One Node, Not a Tower of Them
The Adapter Node That Ends Int/Float Type Mismatch Hell
The 'Example' Math Node — and Why You Should Usually Skip It
Exponents, Squares, and the Scaling Math Nobody Wants to Do by Hand
Round to N Decimals, and the Banker's Rounding Surprise
Smooth Motion for Animated Workflows
Square Root, Negative Inputs, and the 0.0 Safety Net
The node that does exactly one thing well
Tangent without the trig homework
Swap a face without training a thing — MediaPipe + BiRefNet, no InsightFace drama
Tuning the face swap without touching a slider on the main node
Encode the Voice Once
Skip work in MiniMax H3 sampling without breaking the model
Run MiniMax H3 with a 4B or 8B Qwen3-VL encoder instead of the 32B monster
Pin MiniMax H3's picture slots to timestamps (and optionally bring audio)
H3 at 8 steps instead of 32, and the sigmas to do it right
Attaching References to H3 Conditioning Without a Model Patcher
Freeze an Image Batch Into a Reusable H3 Reference
Load a Saved H3 Reference Instead of Re-Encoding It
Save an H3 Reference to Disk So You Never Re-Encode It
Turn Any Clip Into H3-Ready Frames, Audio and Length
The dials for the pack's experimental sparse-attention speedup
Forecast MiniMax H3's transformer output to skip expensive steps
Drop a MiniMax H3 'frame at this exact second' anchor straight into the prompt
System prompt presets for H3, plus room to make them yours
The experimental H3 timeline presets, with overrides bolted on
Grab a proper system instruction for MiniMax H3 instead of winging the prompt
Experimental system prompts for MiniMax H3's timeline tricks
The jackknife of mask cleanup
The node that outputs a single newline (really)
Shrink images without the glow you've been ignoring
When a number stops being a number
When your edit model redraws the whole frame, composite it back with optical flow
Draw Someone Else's Keypoints on Your Own Frames
The scheduler that reshapes denoising to your model's liking
Turn a Qwen3-VL prompt into saved embeddings you never re-encode
Power Shift's sibling that handles its own cleanup
The 'randomize me' widget that isn't really a random node
A reproducible random integer, on purpose
The scale-and-crop node masks have been missing
Stop doing megapixel math by hand
The loader that stops SAM from silently breaking
Text-prompted SAM3 segmentation that doesn't lose the small stuff on big images
The frame-picker built for LLM video conditioning
Talk to the Mistral inside
The Qwen3 template with a think block
The only one that also adds reference images
One encoder, three model templates
Let the model think before it draws
Qwen3 wants its <|im_start|> back
One master seed, eight variants, zero spreadsheet
Draw your own noise schedule, literally
The same idea, minus the wiggles
The denoise control custom sampling chains forgot
The S-curve that made Chroma sing
The name is a red herring — it's just a soft switch
One background, one image per subject
Pull your subjects back out of the composite
The photo-compositor that remembers your cutouts
The Settings Object Behind the Staged Compositor
Background Composite That Lets You Drag the Faces Around
Tuning How Faces Get Cut Out of Your Composite
The Static Float Node
Your Graph's Favorite Integer, Held in One Place
Turning Text Back Into Numbers ComfyUI Can Do Math On
When Your Prompt Text Has Literal Backslash-n in It
The Boolean Switch, Flipped
Grab a System Prompt for Flux2-Style LLM Encoders, Don't Type It Again
The Same System Prompt Library, Namespaced for Video Workflows
Merge Two Taggers' Output Into One Sane Prompt
Joining Prompt Parts With a Delimiter, Without a Wrinkle
Concatenate Text Lists, Element by Element
Making Multiple Prompts Vote Instead of Average
Text Encode That Lets You Drop a System Prompt Into Flux2 dev
Advanced Image-Edit Encoding With Gemma and Your Own System Prompt
The Text Encode That Lets You Edit Klein's Thinking Block
A Text Encode for Krea 2 That Hands You Its System Message
LTXV 2 Encoding With a Custom System Prompt and an Optional Reference
Multi-Image Edit Encoding With a Custom System Prompt
One node, five model templates
The thinking-prompt encoder
System prompts for Z-Image, done properly
An actual LLM inside your graph — with image fusion on the side
Qwen3.5 as a chat bot in your node graph, system prompt included
Burn captions and watermarks onto your image without leaving ComfyUI
Reclaim text that someone styled into Fraktur
FlashAttention or SageAttention
Drop a whole cast onto one background in a single queue
One dropdown to rule all your prompt preset families
Strip invisible Unicode joiner characters out of your text
Never hand a video model a broken resolution again
A shot list you can paste into your video prompt
The config glue for advanced multi-image conditioning
Interleave two images' visual tokens like a checkerboard, if you must
Export the raw embeddings your VLM encoder actually computes
Preset captioning prompts, plus the knobs to actually customize them
The advanced captioning presets with the bleeding-edge video ones
The old captioning presets, kept around so your saved workflows still load
VLM captioning system prompts, one dropdown away
The experimental VLM captioning presets, pre-bleeding-edge
The VLM preset that drops your text into prewritten captioning instructions
VLM query presets with no wrapper — when you want the bare instruction
1.3) weighting back to LLM-encoded models — system prompt included
One Dropdown, and It Fetches the Model Itself
Audio In, Timestamped Segments Out (Three Lists, Not One String)
The invisible-character hack that keeps tokenizers from splitting terms
One dropdown that drives three prompt families in lockstep
Preset plus your own queries, wrapped in one string
A dropdown of ready-made captioning system prompts
Same node, old name
ComfyUI-UtilsCollection
A collection of ComfyUI nodes for modern text and multimodal conditioning, image and mask processing, prompt presets, workflow parameters, loading, and general utilities. The encoder nodes track current ComfyUI Core behavior while retaining compatible legacy node IDs where practical.
Available nodes
The list below uses the canonical node IDs. Deprecated compatibility aliases remain registered for existing workflows but are not duplicated here.
Whisper audio transcription
Whisper transcription requires tiktoken (included in requirements.txt). Without it, the collection still loads and non-Whisper nodes remain available; attempting transcription gives an installation error. Install it in ComfyUI's Python environment and restart ComfyUI to enable Whisper.
UC_WhisperLoaderloads tiny, base (default), small, medium, large-v2, or large-v3 safetensors from the registeredwhispermodel directories. If missing, executing the loader downloads only the selected model fromsilveroxides/ComfyUI-UtilsCollection-Models/audio/whisperintomodels/whisper. Existing configured directories retain priority; invalid checkpoints raise an error rather than being replaced.UC_WhisperTranscribetakes the loaded model and ComfyUIAUDIO. Choose transcription (default) or translation to English, with automatic spoken-language detection or a language code. Stereo/multichannel audio is downmixed to mono and resampled to 16 kHz. Full recordings are processed in timestamp-aware windows.- Outputs are aligned ComfyUI lists: transcript text, a JSON array of
{start, end, text}segments, and a spoken-language code per recording. Times are seconds from the start of each recording, not each processing window. With an explicit language, the language output reports that selection. Translation text is English, not the selected source language. - Native inference uses ComfyUI model management and attention, UEL safetensors loading, and
tiktoken; it does not importopenai-whisperor the local reference checkout. Segment timestamps are approximate. Word alignment, diarization, SRT/VTT formatting, and advanced decoding widgets are not included. A language unavailable in a checkpoint is rejected explicitly.
Text encoding and conditioning
UC_TextEncodeSystemPromptUC_TextEncodeLtxv2SystemPromptUC_WeightedTextEncodeSystemPromptUC_TextEncodeSystemEditAdvancedUC_TextEncodeGemmaSystemEditAdvancedUC_AdvancedVisualConditioningEncodeUC_AdvancedVisualConditioningEncodeTokenFusionUC_AdvancedMiniMaxH3ImageToVideoUC_AdvMiniMaxH3ImageToVideoTokenFusionUC_AdvMiniMaxH3ImageToVideoTemporalFusionUC_AdvMiniMaxH3ImageToVideoTemporalTokenFusionUC_MiniMaxH3VLMGuideUC_MiniMaxH3MediaConfigUC_MiniMaxH3RefExtractUC_MiniMaxH3AudioRefExtractUC_MiniMaxH3RefLoadUC_MiniMaxH3RefSaveUC_MiniMaxH3RefApplyUC_AdvancedVisConEncoderUC_AdvancedVisConEncoderTokenFusionUC_VisualConsensusConfigurationUC_AdvancedConsensusConfigurationUC_Krea2TokenAttentionWeightUC_Krea2TokenAttentionWeightTokenFusionUC_AttentionBiasTextEncodeUC_TextConsensusBlendConfigUC_VisualFusionConfigUC_ConditioningConsensusBlendUC_VLMInputEmbedsUC_Krea2LayerProbeUC_Krea2LayerAblatorUC_MiniMaxH3ClipProjectionPatcherUC_EncoderNodesGuide
MiniMax H3 experiments
All four H3 image-to-video encoders preserve joint Qwen encoding regardless of enable_caching. Enabled modes cache complete joint encoded results; changing their prompt or media invalidates those results. Image/video modes select matching VAE outputs; all also includes audio VAE outputs. Raw vision, DeepStack, and pre-Qwen tokens are never saved. Guide retains its established independent encoding and caches in images_only and all. Entries use UnifiedEfficientLoader under ComfyUI temporary storage.
The temporal encoders fuse offset video samples into the ordinary video token budget. Set temporal density and consensus/spatial method on UC_MiniMaxH3MediaConfig; density 1 preserves ordinary sampling. Consensus uses UC_TextConsensusBlendConfig, spatial fusion uses UC_VisualFusionConfig.
UC_MiniMaxH3VLMGuide inserts an independently encoded timestamp/image block before the prompt in compatible H3 conditioning. Chained guides retain insertion order. This experiment does not re-encode the original prompt jointly with the guide.
UC_MiniMaxH3FirstFrameReferences, UC_AdvancedMiniMaxH3ImageToVideoCombined, and UC_AdvMiniMaxH3ImageToVideoCombinedTokenFusion were removed. Workflows using these IDs report missing nodes; no aliases or migration are provided.
MiniMax H3 Ref
MiniMax H3 Ref Extract encodes each image in an IMAGE batch as a separate native H3 reference. Select video only when the ordered batch is one 24 fps clip; the clip needs at least five frames. MiniMax H3 Audio Ref Extract creates an independent audio reference with a matching H3 audio VAE. Compression can reduce token cost but loses detail; refined compression optimizes only the compressed latent and does not train a model.
Use MiniMax H3 Ref Save to write individual .safetensors artifacts under ComfyUI/models/minimax_h3_refs, then select an artifact with MiniMax H3 Ref Load. MiniMax H3 Ref Apply appends saved or newly extracted refs to existing MiniMax H3 conditioning. It uses ordinary native conditioning only—no model patcher or sampler wrapper—and does not add prompt labels, learned trigger words, or voice-cloning guarantees.
Ref Save is an output node, so extraction can run without a sampler. Save uses the original refmod_meta file header. Load accepts original-format references and earlier files saved here with ref_meta; the shorter node names do not change file compatibility. Saved descriptions and settings are retained as metadata, not automatically applied as controls.
Refs are applied independently in socket order. retention controls detail retained in newly supplied refs; it is not attention strength or a denoising curve. max_ref_tokens rejects excess total reference tokens instead of silently resizing or dropping refs.
Custom merging, time-varying reference curves, synchronized audio/video identity binding, and library or preview UI are future work. Use the original reference-node package if you need its package-specific behavior.
MiniMax H3 CLIP projection models
UC_MiniMaxH3ClipProjectionPatcher projects a Qwen3-VL 4B or 8B text encoder into MiniMax H3's 32B conditioning space. Load the encoder with Core's Load CLIP node using type minimax, then connect it to the projection patcher.
Download one projection matching the encoder size into ComfyUI/models/clip_projections/:
- Qwen3-VL 4B v3.1
- Qwen3-VL 4B v3.1 with residual MLP
- Qwen3-VL 8B v3.1
- Qwen3-VL 8B v3.1 with residual MLP
Only one projection is used at a time. The control and obsolete/ files in the model repository are not normal generation models.
UC_AdvancedMiniMaxH3ImageToVideo: Qwen-only 1024 VLM example
The optional MiniMax H3 Media Configurator controls separate Picture and Video timestamp syntax. Configured Video timestamps map one-to-one to already-selected images; without them, the Video input is a full 24 fps batch using ComfyUI Core H3 sampling, syntax, and native conditioning. vlm_resolution controls Picture token detail while vlm_video_resolution independently controls Video token detail. Video blocks remain outside Picture fusion. Audio and its MiniMax H3 audio VAE connect directly to each advanced main node and produce a standalone native audio reference plus Qwen Audio label.
Workflow JSON | API workflow JSON | Workflow overview | Reference images | Turbo LoRA used
This example uses eight chronological storyboard frames as 1024-resolution Qwen3-VL/DeepStack references. The prompt associates each ordered <Picture N> entry with a target timestamp. With ref_image_size set to none, the images provide visual-token conditioning without VAE reference encoding.
The workflow demonstrates strong subject, composition, and approximate timeline control without a native reference video. Its eight images reproduced the main framing and progression of a 12.25-second source sequence in seven sampling steps on a 16 GB GPU. Picture timestamps are prompt instructions, not fixed frame anchors, so results remain stochastic.
Extract the separately hosted reference-image ZIP into ComfyUI/input before loading either workflow.
The workflow uses Core's Create Video and Save Video nodes and requires no other custom-node collection.
For headless use, start ComfyUI with its API reachable, extract the reference ZIP, then run:
python workflows/UC_AdvancedMiniMaxH3ImageToVideo/run_api_workflow.py C:\path\to\reference-images
The standard-library runner uploads the eight images, substitutes the returned server filenames into the unchanged API workflow, queues it, waits for completion, and prints the saved-output metadata. Use --server http://host:8188 for another ComfyUI server and --seed N to override the workflow seed.
Advanced visual consensus
UC_AdvancedVisConEncoder runs two sequential stages: it first constructs a
complete spatially fused conditioning independently at every selected VLM
resolution, then passes those complete conditionings through the same consensus
mathematics as UC_ConditioningConsensusBlend. Spatial fusion and consensus
are not alternatives and are never crossfaded.
UC_AdvancedVisConEncoderTokenFusion is the additive token-first alternative.
At each lane and resolution it fuses per-source visual and DeepStack tokens,
runs one conditioning encode, then applies the same complete-conditioning
consensus across resolution samples. The original node remains unchanged.
Use UC_VisualConsensusConfiguration to combine one complete
UC_VisualFusionConfig with one UC_AdvancedConsensusConfiguration. Fusion
method off disables the spatial stage; consensus preset off disables the
cross-resolution consensus stage. Advanced Consensus Configuration inherits
the complete Text Consensus Blend Configurator contract and adds
resolution_samples plus a 32-aligned sample_offset.
block_size is specific to block-interleave. dither_ratio and
dither_secondary_pattern are specific to random-dither. Advanced Consensus
Configuration exposes resolution_samples and sample_offset. Offset defaults
to 32 and supports 32 through 512 in 32-unit steps. The configured sample
count is exact, so 1 remains one
resolution sample regardless of visual-source or batch-lane count. Original VLM
resolution supports one sample but cannot construct adjacent resolution
variants.
A batch in the only connected image socket behaves like its images were connected as separate visual sources. With multiple connected batched sockets, equal indices form independent lanes, singleton sockets broadcast, and all other batch lengths must match. Raw visual export uses the same spatial mask as the base-resolution conditioning fusion.
Image, mask, and compositing
UC_Image_Color_NoiseUC_ExtractPrevalentColorsUC_ModifyMaskUC_SAM31CheckpointLoaderUC_SAM3DetectUC_MaskToBoundingBoxUC_ImageBlendByMaskUC_ImagePadUC_NoHaloLoHaloDownscaleUC_CropByMaskUC_StagedLayerCropsUC_ImageCropMergeUC_ExtractMaskUC_ExtractImageUC_ImageAndMaskResizeUC_ResizeMaskUC_BackgroundRemovalPreserveAlphaUC_FaceRemovalPreserveAlphaUC_UnifiedBackgroundReplaceUC_StagedLayeredBackgroundCompositeUC_StagedIndividualCompositesUC_StagedLayeredBackgroundCompositeOptionsUC_StagedMediaPipeFaceBackgroundCompositeUC_StagedMediaPipeFaceOptionsUC_LayeredBackgroundCompositeUC_MediaPipeFaceCompositeOptionsUC_MediaPipeFaceCompositeUC_ListToImageBatchUC_ImageMatchPropertiesUC_OpticalFlowCompositeUC_ImageInwardEdgeFillUC_ImageIterativeStretchFillUC_TextOverlayNodeUC_CompositeNodesGuideUC_LaMaInpaintUC_BatchedOpenPoseUC_DWPoseEstimatorUC_AnimalPoseEstimatorUC_DensePoseEstimator
UC_BatchedOpenPose batches video frames for body inference and person crops for hand/face inference. UC_DWPoseEstimator batches YOLOX frames and RTMPose person crops, including partial batches without padding. Both return IMAGE and POSE_KEYPOINT, use ComfyUI's selected device/model management, and expose a batch size to control VRAM use. These are independent eager implementations loaded through UEL; comfyui_controlnet_aux, Ultralytics, ONNX Runtime, MMPose, and TorchScript are not runtime dependencies. Speed and prediction parity need real-model validation.
Checkpoints belong in ComfyUI/models/controlnet/preprocessors (also discovered under additional controlnet roots registered through folder_paths). Executing a pose node downloads missing weights from the pack's HF repository through huggingface_hub and reuses existing local files. No model weights are stored in this node repository.
DWPose exposes separate detection and keypoint-confidence thresholds (both default to 0.3). OpenPose exposes body (0.1), hand/face (0.05), limb affinity (0.05), limb support (0.8), minimum connected body parts (4), and minimum assembled body score (0.4). OpenPose preserves face-landmark slots when points are below threshold so temporal matching cannot shift landmark identities.
Both nodes share optional temporal_filter: it treats the input batch as ordered video frames and prunes individual unsupported keypoints before rendering and exporting, without removing person entries or interpolating replacement joints. Defaults inspect two frames on either side, require support from two neighbors where available, allow movement up to 0.1 of the person's box diagonal, and match person boxes at IoU 0.3. Increase the distance allowance for faster motion; leave filtering disabled for unrelated still images. Matching spans processing-chunk boundaries.
| Node | Checkpoints | Path in silveroxides/ComfyUI-UtilsCollection-Models |
| --- | --- | --- |
| OpenPose | openpose_body.safetensors; openpose_hand.safetensors when hands enabled; openpose_face.safetensors when face enabled | preprocessors/openpose/ |
| DWPose detector | dwpose_yolox_l.safetensors | detectors/ |
| DWPose pose | dwpose_ucoco_384.safetensors | preprocessors/dwpose/ |
scripts/convert_pose_models_to_safetensors.py converts the original trusted .pth/TorchScript sources, maps eager tensor names, and verifies shapes, dtypes, and tensor values before accepting the output. Runtime loaders accept the converted safetensors, not the original executable archives.
UC_AnimalPoseEstimator reuses YOLOX for COCO animal classes 14–23 and runs AP10K RTMPose crops in batches, returning IMAGE and AP10K POSE_KEYPOINT records. Detection, keypoint, NMS and temporal-filter controls are exposed. UC_DensePoseEstimator runs an eager R50-FPN backbone and ROI heads in batches, with Viridis/Parula rendering and exposed detection/NMS/proposal limits. DensePose uses torchvision's existing ROI/NMS operations, not Detectron2.
Additional files: animalpose_ap10k_256.safetensors under HF preprocessors/animalpose/, and densepose_r50_fpn.safetensors under preprocessors/densepose/; both install in the same local preprocessor model directory. Artifact conversion/loading is verified separately from numerical prediction parity and measured speed, which remain unverified for these ports.
For further models, use MODEL_MIGRATION.md and the shared models/migrations.json manifest/schema rather than inventing a new conversion/loading flow.
UC_StagedLayeredBackgroundComposite builds a scene from a background and ordered foreground sockets. Use run_staging to retain cutouts and populate the placement editor. Use run_staged to composite retained cutouts without loading models or evaluating foreground branches. Use full_run to restage and composite in one queue. foreground_0 is the backmost layer. Retained cutouts are held in server memory and must be recreated after restarting ComfyUI.
UC_StagedMediaPipeFaceBackgroundComposite detects faces in each foreground and adds them as independently placeable layers. The background and face options nodes contain removal, extraction, feathering, and blend settings. UC_StagedIndividualComposites provides the same ordinary foreground staging editor but returns one full-background image, placement mask, and box per included foreground without stacking them. UC_BackgroundRemovalPreserveAlpha directly returns source-resolution RGBA images and their soft alpha masks; existing RGBA inputs keep their supplied alpha without model execution. UC_FaceRemovalPreserveAlpha returns expanded face crops as RGBA images with matching alpha masks and transparent padding for differently sized batched crops.
UC_LoadLaMaModel loads Big LaMa .safetensors files from ComfyUI/models/lama through Unified Efficient Loader. Connect its LAMA_MODEL output to UC_LaMaInpaint. Device choices include ComfyUI's default device, CPU, and every visible GPU. Models are never downloaded automatically. Download Big LaMa or Anime/Manga Big LaMa, then place the selected file in ComfyUI/models/lama.
Each staged foreground (including detected faces) supports Brush and Text in its right-click menu after staging. Additions use the foreground's rectangular canvas, including transparent pixels, and follow its transforms. Brush erasing leaves the original foreground and text untouched. Text is one editable multiline block; click the foreground in Text mode to position it. Show Brush/Text controls preview and output visibility independently of editing. Reset Brush/Text clears only that content; placement Reset preserves both. Additions stay attached to the same foreground socket when its source changes.
Brush/text PNGs save automatically to ComfyUI input storage; queueing waits for saves. Keep those PNGs when moving workflows. Text stays editable in workflow data, while its saved PNG preserves appearance during backend execution. Tool-local Undo/Redo history lasts for the current editor session.
The Brush panel's Object Eraser removes original foreground pixels without altering text. Brush opacity and hardness control erasure strength and edges. Undo/Redo covers painting and object erasures in order; Reset Brush restores the original foreground and clears painted content. Show Brush also controls whether object erasures apply.
The left sidebar stays visible and shows the selected foreground's context actions when no drawing tool is active. Brush and text share an HSL color picker below their controls. Hold numeric or layer-order arrows to repeat changes; releasing stops the repeat.
Staged compositor example
Workflow JSON | Workflow overview | Source assets
<img src="workflows/CompositorExampleWorkflow.jpg" alt="Staged MediaPipe face background compositor workflow" width="1200">Resolution and workflow parameters
UC_AdjustedResolutionParametersUC_ResolutionSelectorExtendedUC_VideoResolutionSelectorUC_ImageScaleAndResolutionPickerUC_SwitchInverseNodeUC_SoftSwitchInverseNodeUC_IntegerRangeRandomUC_RandIntUC_StaticIntUC_StaticFloatUC_RandIntRangeUC_ColorConvertNodeUC_SeedClusterUC_FromSeedClusterUC_ExtractBoundingBoxUC_AdjustBoundingBoxUC_Ideogram4BoundingBoxCropUC_Ideogram4DebannerPatchUC_HighResolutionTileSplitUC_HighResolutionTileAccumulatorUC_HighResolutionTilingGuide
Prompt presets
UC_SystemMessagePresetsUC_SystemMessageVideoPresetsUC_InstructPromptPresetsUC_InstructPromptVideoPresetsUC_BonusPromptPresetsUC_BonusPromptVideoPresetsUC_EditTargetPresetsUC_EditOpPresetsUC_CameraShotPresetsUC_VLMSysInstrPresetsUC_VLMSysInstrPresetsExperimentalUC_VLMSysInstrLegacyPresetsUC_VLMSysQueryAddPresetsUC_VLMSysQueryRawPresetsUC_VLMSysInstrAdvPresetsUC_VLMSysInstrAdvPresetsExperimentalUC_MiniMaxH3VLMSysInstrPresetsUC_MiniMaxH3VLMSysInstrPresetsExperimentalUC_MiniMaxH3VLMSysInstrAdvPresetsUC_MiniMaxH3VLMSysInstrAdvPresetsExperimentalUC_LegacyPromptPresetsUC_UnifiedPresets
Loading, text generation, and text utilities
UC_LoadImagePathUC_LoadImageDirectoryUC_LoadImageWithAlphaUC_SampleVideoFramesAsImagesUC_MiniMaxH3RefVid— H3 Reference Video Components prepares 24 fps reference frames, H3-ready audio, width, height, and frame count. Its finalvideooutput preserves the source resolution and framing, adjusting only timing and audio for nodes that accept VIDEO.start_at_timestampskips the beginning of both video and audio:0skips nothing; positive seconds use H3 frame-count rounding. Duration is measured after that offset (0uses the remaining clip), with the usual H3 end padding. The live preview displays zero-based start frame, inclusive end frame, and output frame count; with automatic duration, end/count become available after video analysis. End frames can extend beyond the source because the final frame is repeated for padding. Only the separateframesoutput is matched to the nearest standard aspect ratio from Video Resolution Selector and center-cropped to its selected resolution. Audio is resampled to 32 kHz and padded only at the end to an 800-sample boundary, avoiding Core's H3 audio input-cropping issue; missing audio is filled with silence.UC_ImagesToVideoTimelineUC_VideoTimelineTextUC_LoraLoaderCLIPOnlyUC_LoadLaMaModelUC_TextGenerateUC_TextGenerateQwen35SystemPromptUC_EmbeddingDetokenizerAnalysisUC_ImageToVideoPromptUC_TagNormalizeCombineUC_FromListUC_GetJsonValueUC_MiniMaxH3CacheUC_MiniMaxH3SlaAttentionConfigUC_MiniMaxH3SpectrumUC_MiniMaxH3PDDAccUC_UnifiedAttentionPatcherUC_MarkdownPreviewUC_BoldFrakturTextStyleUC_UnBoldFrakturTextStyleUC_WordJoinerUC_UnWordJoinerUC_JSONMinifyRepairUC_StringUnescapeUC_TextConcatenateAutogrowUC_TextConcatenateListsAutogrowUC_Newline
MiniMax H3 PDD Acc models
Download the PDD Acc file matching the MiniMax H3 diffusion model:
Place the downloaded .safetensors file in ComfyUI/models/loras, or in the
configured external directory used by ComfyUI's loras model category. Restart
ComfyUI or refresh model files, then select it in UC_MiniMaxH3PDDAcc.
Unified Attention Patcher
UC_UnifiedAttentionPatcher returns a cloned model with one selected attention
backend. Connect its model output in place of the original model. The
disabled mode returns the input model unchanged.
| Attention mode | Applies to | Optional runtime requirement | Behavior |
| --- | --- | --- | --- |
| FlashAttention | Attention calls without a mask | A compatible package providing flash_attn or flash_attn_interface | Uses FlashAttention. allow_compile permits compilation after the initial run. |
| SageAttention | General model attention | sageattention; sageattn3 or sageattn3_per_block_mean additionally need sageattn3 | Select a Sage kernel from sage_mode. allow_compile permits compilation after the initial run. |
| Sparse / MiniMax H3 SLA | MiniMax H3 self-attention only | CUDA and Triton | Routes each H3 attention block to selected key blocks while retaining dense attention where sparse routing is unsuitable. |
SLA uses its selected dense_backend for deliberate dense steps and sparse
fallbacks. auto retains the incoming ComfyUI-selected attention callable. No
attention package, model checkpoint, or LoRA is downloaded by this node.
SageAttention MiniMax H3 memory option
h3_memory_optimizations is available only inside the SageAttention mode. It
requires a CUDA MiniMax H3 model and a compatible SageAttention installation.
It reduces the H3 attention path's peak memory use; selecting it for another
model raises an error rather than silently applying a different patch.
MiniMax H3 SLA controls
SLA is experimental and only patches MiniMax H3 models with 128-dimensional
attention heads. It does not modify ComfyUI Core files or model weights. The
minimax_h3_sla_config input on UC_UnifiedAttentionPatcher is optional.
Connect UC_MiniMaxH3SlaAttentionConfig to configure its documented controls;
omitting it uses their defaults.
- Main SLA controls:
sparsity: fraction of ordinary key blocks skipped. Start with the default0.90; compare output and speed against dense attention for each model, resolution, duration, and sampler.block_size: routing granularity. Smaller blocks retain finer temporal and audio detail at additional routing cost.dense_tail_steps: final sampler steps retained on dense attention for detail recovery. Set0to allow sparse routing at every eligible step.protect_reference_media:Offadds no visual-reference quota;Lightretains the best-scoring 15% of each reference block range;Heavy Enforcementretains every reference block.dense_backend:comfy_kitchen,auto,pytorch, or a value fromCUSTOM_SAGE_MODES. A selected unavailable backend raises an actionable error before sampling.
UC_MiniMaxH3SlaAttentionConfigcontrols:minimum_sequence_length: sequences below this threshold stay on the selected dense attention path.dense_steps: comma-separated zero-based steps or inclusive ranges kept dense, such as0,3-5. Default0preserves the first sampling step.protect_audio: preserves text and audio ranges in every sparse key selection.disable_fp16_accumulation: disables FP16/BF16 reduced-precision matmul accumulation for this SLA sampling run, then restores prior settings.stabilize_routing: biases near-cutoff block selection toward the prior sampling step. Use it only when motion detail is unstable; it retains a bounded routing history while sampling.
SLA calls stay dense when the call is masked, not MiniMax H3 packed
self-attention, uses an unsupported dtype/device, falls below the minimum
sequence length, falls in dense_steps or the configured dense tail, lacks
MiniMax H3 layout metadata, or when the sparse kernel fails. Each reason is
reported once in the ComfyUI console for that sampling run. A sparse-kernel
failure also disables further sparse attempts for the remainder of that run.
This preserves a usable model path when SLA cannot apply, but it also means a
run may receive less acceleration than its selected sparsity suggests.
Scheduler presets
Ideogram4SchedulerPresetUC_SigmaRescaleUC_DiscardPenultimateSigmaUC_SigmoidOffsetSchedulerUC_PowerShiftSchedulerUC_RadianceShiftSchedulerUC_SigmaCurveFromPointsSchedulerUC_SigmaCurvePchipScheduler
The migrated schedulers also register sigmoid_offset, power_shift,
radiance_shift, sigma_curve_from_points, and sigma_curve_pchip for Core
scheduler selectors. The Power Shift scheduler was inspired by
InverserSquaredScheduler.
UC_SigmaRescale maps an existing schedule to exact start and end sigma
values without changing its shape or number of steps.
The dedicated scheduler nodes do not include Core-style denoise controls or
optional penultimate-sigma controls. Connect UC_SigmaRescale after a
scheduler when setting image-to-image noise levels. Connect
UC_DiscardPenultimateSigma when the selected sampler requires penultimate
sigma removal. Radiance Shift performs its required compensated removal
internally. Sigmoid Offset retains its model-specific start_sigma
adjustment.
Logic and math
UC_LogicIFUC_LogicANDUC_LogicORUC_LogicNOTUC_LogicXORUC_MathAddUC_MathSubtractUC_MathMultiplyUC_MathDivideUC_MathPowerUC_MathFloorUC_MathCeilUC_MathRoundUC_MathModuloUC_MathAbsUC_MathSqrtUC_MathSinUC_MathCosUC_MathTanUC_MathMinUC_MathMaxUC_MathClampUC_MathNumberConvertUC_StringToNumberUC_NumberToStringUC_MathCompareUC_MathOperationUC_MathAspectRatio
These nodes replace the equivalent nodes from ComfyUI-LogicMath, ComfyUI_SigmoidOffsetScheduler, and ComfyUI_PowerShiftScheduler. Remove the standalone pack before accepting ComfyUI's workflow replacement prompt.