Bubba Watermark Overlay
Bubba Watermark Overlay
- watermark
- pipe
- image
- watermark_mask
- pipe
- image
Bubba Watermark Overlay composites a watermark image onto your render - positioned, scaled, made transparent, offset, and optionally masked. If you post images publicly, this is the node that marks your work without making you drag a PNG into an editor and manually paste it for the fiftieth time. Give it the base image, give it the watermark, pick a corner, set the opacity, done.
It's a small thing with a real workflow payoff: the watermark stays a node in your graph, so every render gets branded consistently at generation time. No post-processing step you'll forget, no un-watermarked version leaking out of a batch because you were rushing. And unlike a separate editor pass, it happens before you save, so the output PNG is the finished product.
How it works
The required watermark input is an IMAGE (a second image, not text - make your logo or signature with any image editor, or render a signature with a text node first). The base image is optional because this is a pipe-aware node: feed it a pipe and it grabs the image from there. Five controls place the mark:
anchor- which corner or edge it sticks to (bottom_rightby default; the combo covers the usual eight).image_scale- resize the watermark relative to its native size, 0.01 to 10x. This is how you fit a big logo down to a subtle corner mark.alpha- opacity from 0 (invisible) to 1 (opaque).x_offset/y_offset- nudge it in from the anchor, positive or negative, in pixels.
There's also enabled (on by default - flip it off to bypass the composite without deleting the node) and an optional watermark_mask input if your watermark needs transparency driven by a mask rather than its own alpha channel.
Outputs are the composited image and the pipe passed through, so you can chain this into Bubba Save Image downstream and the watermark is in the final file, period.
The inputs that matter
watermark (the image), alpha (set it to about 0.5 for a tasteful mark, 1.0 for a hard stamp), and anchor. Everything else is fine at defaults once you've set image_scale.
How to install it
Part of the Bubba_Nodes pack. ComfyUI Manager → "Bubba Nodes" → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/bubbafett5611/bubba_nodes.git
restart ComfyUI, pip install -r requirements.txt if the console complains. Needs ComfyUI v0.27.0+. No model downloads - bring your own watermark image.
Gotchas
The one thing to keep in mind is that a burned-in watermark can't be unburned. It's now part of the pixels, so keep a clean save on the main branch if you want the unmarked version later (same advice as the metadata overlay - the KB's image-io essay hammers on treating your clean PNG as the master). Also, a watermark with its own white or black background will stamp as a visible box; if that happens, either export your watermark with transparency (PNG with alpha) or wire a watermark_mask in to cut it out. And scale by image_scale multiplies the watermark's native size, so a 1024px logo at 0.1 isn't the same as a 256px logo at 1.0 - for consistent results across outputs, make the watermark file the size you want and use image_scale to fine-tune. The pack is new and this utility node doesn't have community write-ups yet; the node's own tooltips and defaults are accurate and self-explanatory.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| watermark | IMAGE | — | |
| enabled | BOOLEAN | true | — |
| anchor | COMBO | bottom_right | 9 options: top_left, top_center, top_right, center_left, center, center_right, +3 |
| image_scale | FLOAT | 1.000.01–10 | — |
| alpha | FLOAT | 1.000–1 | — |
| x_offset | INT | 0-8192–8192 | — |
| y_offset | INT | 0-8192–8192 | — |
| pipeopt | BUBBA_PIPE | — | |
| imageopt | IMAGE | — | |
| watermark_maskopt | MASK | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| pipe | BUBBA_PIPE | — |
| image | IMAGE | — |