Nodes/ComfyUI-WanVaceAdvanced/VaceStrengthTester
ComfyUI Node

VaceStrengthTester

A/B your VACE strengths without rebuilding the graph

By drozbay·Created about a year ago·Updated 7 months ago· 95
VaceStrengthTester
  • positive
  • conditioning
  • strength_info
reference_strength1.0
control_strength1.0
frame_count20
custom_strength_list

VACE control on Wan is a two-knob game: how hard the reference image (the subject identity) is applied, and how hard the control video (the pose/depth that drives motion) is applied. The fiddly part is that they act on different frames and you end up typing floats into the node over and over, rendering, and squinting at the difference. VaceStrengthTester exists to make that loop less stupid: you set two floats, it builds the whole per-frame strength pattern for you, and it tells you exactly what it did.

How it works

The idea is the "reference + control" pattern that most VACE workflows want anyway: the reference image matters on the first frame, then the control video takes over for the rest. So the node builds a strength list like this:

  • frame 0 gets reference_strength
  • frames 1..frame_count-1 get control_strength

...and injects that list into the conditioning's vace_strength, flagging vace_has_reference so downstream VACE handling knows the first latent holds a reference. The second output, strength_info, is a plain string describing what got applied - "Using ref:1.0, ctrl:0.8 for 20 frames" - which is your receipt, and also just a handy text node to hang off the graph.

The optional custom_strength_list input overrides all of it: comma-separated floats are padded with the last value (or truncated) to frame_count. If your list is malformed it falls back to the ref/control pattern and tells you so - graceful, not crashy.

The inputs that matter

  • positive (CONDITIONING) - your already-VACE-encoded conditioning, i.e. the output of a WanVacePhantomSimpleV2 or similar. This node edits existing VACE conditioning; it doesn't encode anything itself.
  • reference_strength / control_strength - the two knobs, 0–10, default 1.0 each.
  • frame_count - how many latent frames the pattern spans (default 20). Remember these are latent frames; each is 4 video frames.
  • custom_strength_list - optional escape hatch.

Outputs: conditioning (feed it straight to your KSampler/ConditioningCombine chain) and strength_info (STRING).

When it's worth it

Honestly? If you're happy typing 1.0 into vace_strength and leaving it, skip this node. It pays for itself the moment you start tuning - ramping reference down (0.6) or control up (1.4) across renders to find the spot where motion follows the control video without melting the subject's face. Because it rewrites vace_strength on already-encoded conditioning, you can swap values and re-run without touching your encode nodes, which is the actual win: your VACE encode stays cached, only the strength test changes.

Install

Standard for this pack:

cd ComfyUI/custom_nodes
git clone https://github.com/drozbay/ComfyUI-WanVaceAdvanced
# restart ComfyUI

or ComfyUI Manager → "ComfyUI-WanVaceAdvanced". No extra dependencies, and note that like everything here it only does the full per-frame-list thing on a patched model - feed it the output of a V2 node (model patched in) or patch separately with VaceAdvancedModelPatch. One gotcha from the source: it only applies the strength list to conditioning items that already carry a vace_strength key, so it must sit downstream of a real VACE encode node, not replace one.

CategoryWanVaceAdvanced

Inputs (5)

NameTypeDefaultDescription
positiveCONDITIONING
reference_strengthFLOAT1.00–10
control_strengthFLOAT1.00–10
frame_countINT201–1000
custom_strength_listoptSTRING

Outputs (2)

NameTypeDescription
conditioningCONDITIONING
strength_infoSTRING