ComfyUI Node

Debug Conditioning

See inside your CONDITIONING — shapes, dtypes, and every metadata key

By RandyHaylor·Created 4 months ago·Updated 3 months ago· 1
Debug Conditioning
  • conditioning
  • conditioning
  • debug_text
label

A CONDITIONING in ComfyUI is just a list of (tensor, metadata_dict) pairs. The sampler reads the metadata - start_percent, end_percent, pooled_output, strength, size/crop fields - but nothing in the UI ever shows you what's actually in there. So when your timestep-range trick "isn't working" or your combine branches aren't firing, you're stuck guessing. This node is the X-ray: drop it anywhere on a CONDITIONING wire and it tells you exactly what's inside.

What it does

DebugConditioning is an in-line passthrough. It prints the full structure to your ComfyUI server console under a label you supply: the type and length of the conditioning, then per entry - tensor shape, dtype, device, min/max values, and every metadata key with its value. It returns the same CONDITIONING unchanged, plus a debug_text STRING output containing the same dump.

That STRING output is the killer feature. Instead of tailing the console, wire debug_text into a ShowText / SaveText node and read the dump right in the UI. It's also marked OUTPUT_NODE = True, so you can run a workflow that ends at this node without a preview node attached.

Inputs and outputs

  • conditioning (CONDITIONING, required) - the wire you want to inspect. Passed through untouched.
  • label (STRING) - prefixed onto the dump so you can tell multiple debug nodes apart in one console.

Outputs: conditioning (identical to input - this is why it's safe to drop into a live chain) and debug_text (STRING, the dump).

Where it earns its keep

This pack ships it for a specific reason: verifying that start_percent / end_percent / pooled_output / strength survive each stage of a merge chain. Stock ConditioningConcat drops the from-side range silently - the exact bug the pack's flagship node fixes. Put a DebugConditioning before and after a merge and you can see the metadata get eaten in real time. It's also great for checking the crop-zoom node wrote its width/height/crop_w/crop_h keys, or that a combine-mode merge actually emitted multiple entries.

Install

ComfyUI Manager → search "Unified Conditioning", or:

cd ComfyUI/custom_nodes
git clone https://github.com/RandyHaylor/unified-conditioning-combine-with-timestep-range.git unified-conditioning-merge

Restart ComfyUI; it's under unified-conditioning-merge. No models, no pip deps.

Troubleshooting

  • Can't find the console output? On Windows it's the terminal window where you launched ComfyUI; on a service install you'll need its logs. The debug_text output sidesteps all of this - just use ShowText.
  • The dump can be long with multi-entry conditioning. Use distinct label values per node so you can tell which dump is which.
  • It's a passthrough, so you can leave it in the graph while debugging and remove it once you've confirmed the chain is healthy - it costs a print per run, nothing more.
Categoryunified-conditioning-merge

Inputs (2)

NameTypeDefaultDescription
conditioningCONDITIONING
labelSTRING

Outputs (2)

NameTypeDescription
conditioningCONDITIONING
debug_textSTRING