Nodes/ComfyUI Handy Nodes/Print Value to log
ComfyUI Node

Print Value to log

The debug node that tells you what's actually flowing through your wires

By trashkollector·Created about a year ago·Updated 2 days ago· 1
Print Value to log
  • value
  • value
labelmylog

You have a workflow that silently produces garbage and you have no idea which intermediate value is the culprit. Print Value to log is the node that ends that guessing: drop it on a wire, give it a label, and it prints whatever is flowing through to comfyui.log - then hands the exact same value out the other side so your graph keeps working while you spy on it. It's the ComfyUI equivalent of a print() in a debugger, and for a platform where intermediate tensors are black boxes, that's more useful than it sounds.

How it works

Two inputs, one output. value is typed * - any type - so it accepts images, latents, strings, numbers, audio, whatever the wire carries. label is a STRING (default mylog) that prefixes the output line so you can tell your debug prints apart in a busy log. On execution it does exactly one thing: print(f"[{label}] : {value}") to the server log. The value passes through untouched on the output socket, which is what makes it safe to splice into the middle of a graph - you're observing, not transforming.

For tensors (images, latents), the print shows the tensor object - shape, dtype, device - which is usually exactly the diagnostic you need (is this a [1, 3, 512, 512] or a [24, 3, 512, 512]? Why is this a CPU tensor?). For strings and numbers it shows the actual value, which is how you check what a math node or a list index actually produced.

When you'd reach for it

  • Checking types/shapes. The most common failure mode in ComfyUI is a shape mismatch a couple nodes upstream. Print mid-chain and the tensor shapes tell you where the batch got wrong.
  • Confirming list/wrapper contents. Pack-defined types like TK_IMAGE_PROMPT_LIST are opaque; printing the list shows you the dicts inside.
  • Status reporting. The node is marked OUTPUT_NODE, so you can leave it dangling at the end of a branch and ComfyUI treats it as a legitimate terminal node - a cheap way to log "we got here" with a value.

Where to find the output

It prints to the server-side log (comfyui.log / the console you launched ComfyUI from), not to the node or a UI panel. If you're running ComfyUI as a service or in Docker, check the container logs - a common stumble is hunting for the output in the browser when it's sitting in the terminal window two rooms away. And because the print happens server-side, it's not affected by the frontend at all; the value passes through regardless of what the UI shows.

Installing it

Part of trashkollector/TKNodes ("ComfyUI Handy Nodes"). Install via ComfyUI Manager (search "Handy Nodes") or:

cd ComfyUI/custom_nodes
git clone https://github.com/trashkollector/TKNodes

Restart, and it's under the debug category. Zero dependencies.

Common issues

The label defaulting to mylog means every unedited instance prints [mylog] - if you drop several in a graph and forget to rename them, you can't tell which is which in the log. Cheap fix, easy to forget. And one honest caveat: printing big lists or image batches floods the log fast; for per-frame debugging you'll want it on a single value, not a 100-frame tensor, or you'll be scrolling for minutes. For that job, this node + TKAudioUnwrap-style access to raw values is the right toolbox.

Categorydebug

Inputs (2)

NameTypeDefaultDescription
value*Value to be printed to comfyui.log
labelSTRINGmylogLabel for your log

Outputs (1)

NameTypeDescription
value*