Nodes/Boyonodes/Boyo Watermarks πŸ‰
ComfyUI Node

Boyo Watermarks πŸ‰

Stamp your brand on every frame, right before the save

By DragonDiffusionbyBoyoΒ·Created 2 years agoΒ·Updated 27 days agoΒ· 16
Boyo Watermarks πŸ‰
  • frames
  • watermark
  • frames
β—„wm_width150β–Ί
β—„wm_height150β–Ί
β—„cornerbottom-rightβ–Ί
β—„opacity0.85β–Ί
β—„padding10β–Ί

So you've generated a video you're actually happy with, and now you need to put your logo in the corner before it ships. Boyo Watermarks (yes, with the dragon emoji) is the node for that: give it your frame batch and a watermark image, and it stamps the mark onto every single frame, resized, positioned, and blended the way you want. It works on the IMAGE tensor, so it slots in right before your video saver - no post-production, no re-encode.

What makes it nicer than slapping text onto frames in an editor is that it's a pure tensor operation. No ffmpeg involved, no disk round-trip: just torch.nn.functional.interpolate for resizing and a per-pixel alpha blend. It runs on whatever device your tensors live on, which makes it effectively free inside an existing generation workflow.

How it works

The node takes the first frame of your watermark input, bilinear-resizes it to wm_width Γ— wm_height, and places it in the corner you pick with a pixel padding gap from the edges. The blend respects alpha properly: if your watermark image has an alpha channel (a transparent PNG, as it should be), that alpha is used and scaled by opacity; if it's a flat RGB image, the whole stamp gets a uniform opacity. It then writes onto a copy of the frame batch, so your original tensor isn't modified in place - always a nice touch. There's also a clamp safety net: if the watermark plus padding would overflow the frame, it crops instead of crashing.

The inputs that matter

  • frames - your video frame batch (B, H, W, C), straight from the decoder or from earlier in the pipeline.
  • watermark - the mark itself, a single image. Use a PNG with transparency; the node will happily blend a JPG but you'll get a solid rectangle.
  • wm_width / wm_height - the stamp size in pixels. 150Γ—150 is a reasonable default; size it relative to your resolution (a 150px mark vanishes on a 1080p frame).
  • corner - bottom-right, bottom-left, top-right, top-left.
  • opacity - 0 to 1; the default 0.85 is tasteful enough for a watermark.
  • padding - the gap from the frame edge, in pixels.

The single output, also named frames, is the stamped batch. Wire it into a video saver like Boyo Video Saver (same pack) or any other mp4-writing node.

Install

Available in ComfyUI Manager under "Boyonodes", or:

cd ComfyUI/custom_nodes
git clone https://github.com/DragonDiffusionbyBoyo/Boyonodes

Restart ComfyUI. This is one of the lightest nodes in the pack - it needs nothing beyond the torch that ComfyUI already ships, so no extra pip installs. (The pack's scary requirements.txt is for its audio/TTS side, not for this.)

Where people get burned

The usual mistake is feeding in a watermark that's huge relative to the frame and expecting it to be ignored - it isn't; it gets clamped, so you'll see the stamp bleed edge to edge. Set explicit wm_width/wm_height values that fit. The second gotcha: because this operates on the tensor, it only affects this render - if you're saving frames to disk with a plain save node, the watermark won't retroactively appear in files already written. Do watermark β†’ then save. And remember the opacity math: a fully opaque white logo on a light scene is invisible-ish, so check the blend against a bright frame before committing to a long batch.

CategoryBoyoNodes/video

Inputs (7)

NameTypeDefaultDescription
framesIMAGEVideo frames batch (B, H, W, C)
watermarkIMAGEWatermark image (single frame)
wm_widthINT1508–2048β€”
wm_heightINT1508–2048β€”
cornerCOMBObottom-right4 options: bottom-right, bottom-left, top-right, top-left
opacityFLOAT0.850–1β€”
paddingINT100–256Pixel gap between watermark and frame edge

Outputs (1)

NameTypeDescription
framesIMAGEβ€”