Nodes/Stand-In Official Preprocessor ComfyUI Nodes/Stand-In VideoInputPreprocessor
ComfyUI Node

Stand-In VideoInputPreprocessor

The node that actually builds Stand-In's identity-conditioned input

By WeChatCV·Created 12 months ago·Updated 12 months ago· 158
Stand-In VideoInputPreprocessor
  • face_processor
  • images
  • face_rgba
  • processed_images
  • denoise_strength
denoise_strength0.50
confidence_threshold0.50
face_crop_scale1.5
dilation_kernel_size10
with_necktrue
face_only_modetrue
feather_amount21
random_horizontal_flip_chance0.05
match_angle_and_sizetrue

This is the node the whole pack is actually named after. When the README says "Only images processed with this official preprocessor can fully unleash the power of Stand-In," this is the preprocessor it means - the one doing the real per-frame identity work, not just loading a model or cropping a photo.

Some context first, because this node makes a lot more sense once you know what it's feeding. Stand-In is WeChat Vision/Tencent's identity-preserving adapter for Wan video, released August 2025. It's notably lightweight - Kijai, who wrote ComfyUI-WanVideoWrapper and built his own support for it independently, noted only about 1% of the base model got retrained to make it work, and called it "pretty accurate," though "not quite as versatile as the bigger models such as Phantom." On his hardware it added roughly half a step of sampling overhead and a bit more VRAM from the KV cache - about 30 seconds extra on a 4090 for an 81-frame clip at 832×480 with optimizations on. The catch: the authors felt Kijai's implementation of the preprocessing step didn't quite match theirs, so they published this repo as the corrected, official version. This node is that correction.

How it works

Feed it your face_processor (from FaceProcessorLoader), your video frames (images), and an identity reference (face_rgba, from ApplyFaceProcessor). Per frame, it detects the face, matches the reference face's angle and size to it (match_angle_and_size), and blends the reference identity in through a feathered, dilated mask (dilation_kernel_size, feather_amount) so the paste doesn't look like a paste. There's also a small chance per frame of a random horizontal flip (random_horizontal_flip_chance) - read that as light augmentation, keeping the conditioning from locking onto one exact orientation across an entire clip. What comes out (processed_images) is the actual sequence you hand to your Stand-In-aware Wan sampler.

The inputs and outputs that matter

  • face_processor, images, face_rgba - the three required inputs. Everything else has a workable default.
  • denoise_strength (0.1–1, default 0.5) - the setting you'll actually tune. Too high and the model drifts away from your source frames; too low and it barely touches anything. Start at 0.5 and nudge in small steps. It's also an output, relayed straight through - wire it directly into your KSampler's denoise widget instead of typing the same number in two places.
  • confidence_threshold, face_crop_scale, dilation_kernel_size, feather_amount - fine at defaults for a first pass; come back to these once you can see what's not blending cleanly.
  • with_neck and face_only_mode - make sure these agree with whatever you set on ApplyFaceProcessor. Wiring a shared FaceOnlyModeSwitch into both nodes is the cleaner way to guarantee that.

Output: processed_images, which continues on toward your sampler, and the passthrough denoise_strength described above.

How to install it

cd ComfyUI/custom_nodes
git clone https://github.com/WeChatCV/Stand-In_Preprocessor_ComfyUI.git
cd Stand-In_Preprocessor_ComfyUI
pip install -r requirements.txt

Restart ComfyUI, or search "Stand-In Official Preprocessor ComfyUI Nodes" in ComfyUI Manager. The README's own prompt advice is worth carrying over here too: if you don't want to alter the subject's facial features, keep your text prompt as plain as "a man" or "a woman" rather than adding your own appearance description, and aim for frontal, medium-to-close-up framing - that's what Stand-In was tuned around.

Common issues & troubleshooting

You're not sure what mode you're even running. When Stand-In first launched, a fair number of people on r/comfyui were confused about what it actually did, with one comment admitting "I'm having trouble imagining how it's useful if it doesn't work with I2V." This node isn't plain text-to-video with a reference photo - it's specifically for prepping a driving video plus a reference face for a face-focused edit, closer to what another commenter called "basically face-id support in WAN... you can faceswap with it."

Output looks slower or heavier than the benchmarks you've seen. The README states plainly that this is a temporary node - KV cache and advanced attention mechanisms aren't implemented here yet, unlike Kijai's fuller wrapper integration. That's expected overhead for this pack, not a misconfiguration.

One frame in a batch looks mirrored for no obvious reason. That's random_horizontal_flip_chance doing exactly what it says on the default 0.05 chance per frame. Set it to 0 if you want fully deterministic output across a clip.

Identity drifts or barely shows up at all. That's almost always denoise_strength - walk it up or down in increments of 0.1 rather than jumping straight to the extremes.

CategoryStand-In

Inputs (12)

NameTypeDefaultDescription
face_processorFACE_PROCESSOR
imagesIMAGE
face_rgbaIMAGE
denoise_strengthFLOAT0.500.1–1
confidence_thresholdFLOAT0.500.1–1
face_crop_scaleFLOAT1.51–3
dilation_kernel_sizeINT100–50
with_neckBOOLEANtrue
face_only_modeBOOLEANtrue
feather_amountINT210–151
random_horizontal_flip_chanceFLOAT0.050–1
match_angle_and_sizeBOOLEANtrue

Outputs (2)

NameTypeDescription
processed_imagesIMAGE
denoise_strengthFLOAT