Watermark
Stamping a logo onto your generations (the opposite of watermark removal)
- images
- logo_list
- logo_mask
- IMAGE
Most of what gets written about watermarks in this ecosystem is about removing them - edit models like Flux Kontext are, in the community's own words, "shockingly effective" at stripping them out of a reference image. This node does the opposite: it composites a logo or watermark onto your output, for branding generated content, tagging provenance, or just marking internal test renders so they're never mistaken for a finished export.
How it works
You give it your rendered images and a logo image to stamp onto them; it composites the logo over each frame and returns the result. There's an optional mask for controlling exactly which pixels of the logo actually blend in - without one, expect the logo image to be composited more or less as a full rectangle, so if your logo file doesn't already carry its own alpha shape, wiring in a mask is how you get a clean stamp instead of a solid box.
One thing the schema leaves genuinely open: logo_list is plural, which suggests you can feed it more than one logo image rather than only a fixed single one. Exactly how a multi-item logo_list maps onto a multi-image batch - the same logo repeated across every frame, or cycling through the list one-to-one - isn't documented anywhere in the pack. If that matters for your use case, test it on a small two-image batch before relying on it in a long run.
The inputs and outputs that matter
images(required IMAGE) - your renders.logo_list(required IMAGE) - the logo/watermark image(s) to overlay.logo_mask(optional MASK) - shapes exactly which part of the logo blends onto the image, instead of a plain rectangular stamp.enabled(optional BOOLEAN, default true) - a global on/off switch. Handy for A/B comparing a workflow with and without the watermark, or leaving it permanently wired into a shared workflow and flipping it off for internal test renders without rewiring anything.
Output: IMAGE.
How to install it
Via ComfyUI Manager: search ComfyUI-tbox, install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/ai-shizuka/ComfyUI-tbox
then restart. No model weights involved here - it's straightforward image compositing, nothing to download. The pack's README doesn't cover this node specifically (it's essentially blank throughout - three section headers, no body text), but there's no dependency risk for a pure compositing operation like this one.
Common issues & troubleshooting
The logo shows up as a solid box instead of just the logo shape. Wire something into logo_mask - without one, the node has no way to know which parts of your logo image should be transparent.
You want to quickly compare with and without the watermark. Toggle enabled rather than disconnecting and reconnecting nodes - that's exactly what it's there for.
A different logo than expected appears on a given output. If you fed more than one image into logo_list, be aware the pack doesn't document how it maps multiple logos onto a batch of images - verify the mapping on a small test batch rather than assuming it behaves one particular way.
Canvas stops floating or scroll-zoom breaks after installing tbox. Not this node's fault - it's a known conflict between one of tbox's own image-loading nodes and ComfyUI's frontend, tracked on the pack's GitHub issues and cross-referenced against a core ComfyUI issue. Worth ruling out separately from anything watermark-specific.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| logo_list | IMAGE | — | |
| logo_maskopt | MASK | — | |
| enabledopt | BOOLEAN | true | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |