Nodes/MediaForge/πŸ’§ Compose Watermark
ComfyUI Node

πŸ’§ Compose Watermark

Brand your video with a corner logo that stays proportional at any resolution

By leon80148Β·Created 4 months agoΒ·Updated 2 months agoΒ· 0
πŸ’§ Compose Watermark
  • overlays
  • overlays
β—„image_pathinput/watermark.pngβ–Ί
β—„placementbottom_rightβ–Ί
β—„relative_scale0.15β–Ί
β—„opacity0.70β–Ί
β—„margin_top20β–Ί
β—„margin_right20β–Ί
β—„margin_bottom20β–Ί
β—„margin_left20β–Ί
β—„visible_start_sec0.0β–Ί
β—„visible_end_sec0.0β–Ί

MF_ComposeWatermark is the "put my logo on this video" preset, and it's the node you'll want for 90% of branding jobs: pick a corner, a relative size, an opacity, done. It's a convenience wrapper around the same overlay mechanism as MF_ComposeOverlayImage, but it does the fiddly math for you - and crucially, sizing is relative to the frame, so the watermark stays proportional whether your source is 1080p, 4K, or a phone portrait clip.

The honest comparison: MF_ComposeOverlayImage gives you absolute pixel position and scale, which is what you want for a one-off graphic. This node trades that control for sensible presets - six placements, relative scaling, per-side margins, opacity, and a visibility window. If your problem is "I want my logo in the corner of every video at the same visual weight," this is the one you reach for, and the one that keeps you from re-figuring positions every time the resolution changes.

How it works

It appends a watermark op to the MF_COMPOSE_OPS overlay chain; MF_ComposeVideo compiles the chain into the single encode. The relative_scale value is resolved against the frame width (specifically ComposeVideo.target_width, or the probed source width if that's 0), so the logo ends up the same fraction of the frame no matter the resolution. Opacity is applied via colorchannelmixer alpha, which means the PNG's own alpha channel is preserved - a transparent PNG logo keeps its soft edges instead of getting a flat transparency slapped over it.

The tile placement is worth a mention: it auto-computes rows and columns from the image's aspect ratio and tiles the whole frame, which is the "wallpaper your video so nobody reuploads it" move.

The inputs that matter

  • image_path - your logo. PNG with alpha strongly recommended.
  • placement - top_left / top_right / bottom_left / bottom_right / center / tile.
  • relative_scale - logo width as a fraction of frame width (0.05–0.5). 0.12 is a tasteful corner bug; 0.3+ starts competing with content.
  • opacity - 0.7 default. 0.6–0.8 is the readable-but-subtle band.
  • margin_top/right/bottom/left - per-side pixel margins from the frame edge.
  • visible_start_sec / visible_end_sec - show it for part of the video only; both 0 = always visible.

Optional overlays chains upstream; output overlays feeds the next overlay or MF_ComposeVideo.

Install

Part of MediaForge:

cd ComfyUI/custom_nodes
git clone https://github.com/leon80148/comfyui_MediaForge.git
# restart ComfyUI

Or ComfyUI Manager β†’ "MediaForge".

Common issues

The classic failure is a non-transparent image: a JPG or a PNG with no alpha renders as a solid rectangle on the frame - the node can't invent transparency. Export the logo with alpha. And if the watermark looks huge or tiny, remember relative_scale is relative to the frame: if you've set a ComposeVideo.target_width that's far from the source, the watermark resolves against that target instead. Paths with filter-special characters are auto-escaped by the pack, so if a weird-path logo breaks, test a plain path first.

CategoryMediaForge/Compose

Inputs (11)

NameTypeDefaultDescription
image_pathSTRINGinput/watermark.pngβ€”
placementCOMBObottom_right6 options: top_left, top_right, bottom_left, bottom_right, center, tile
relative_scaleFLOAT0.150.05–0.5β€”
opacityFLOAT0.700–1β€”
margin_topINT200–1000β€”
margin_rightINT200–1000β€”
margin_bottomINT200–1000β€”
margin_leftINT200–1000β€”
visible_start_secFLOAT0.00–36000β€”
visible_end_secFLOAT0.00–36000β€”
overlaysoptMF_COMPOSE_OPSβ€”

Outputs (1)

NameTypeDescription
overlaysMF_COMPOSE_OPSβ€”