Nodes/ComfyUI_StarNodes/⭐ Star Watermark
ComfyUI Node

⭐ Star Watermark

Text or logo watermarks, tiled or one-off, with a mask

By Starnodes2024·Created 2 years ago·Updated 2 days ago· 106
⭐ Star Watermark
  • images
  • watermark_image
  • watermark_mask
  • watermarked
  • mask
textSample Watermark
modetext
image_scale100
repeat_patternfalse
opacity0.50
positionbottom_right
x_offset10
y_offset10
rotation0
blend_modenormal
output_maskfalse
adaptive_colorfalse
randomize_per_batchfalse
fontarial.ttf
font_size32
font_color#FFFFFF
font_boldfalse
font_italicfalse
font_underlinefalse
effect_outlinefalse
effect_shadowfalse
effect_glowfalse
insert_datetimefalse
invert_maskfalse

Sooner or later you want your name on the output - branding, a batch of generations you're about to post, or just insurance against someone else claiming your renders. You can do that in an image editor, or you can do it in the workflow with ⭐ Star Watermark, which stamps text or a logo onto a whole batch of images before they hit your save node. It's part of the StarNodes pack, the big helper collection from the r/comfyui dev who builds nodes "for myself but maybe some of you can use them too."

What makes it worth reaching for over a Paint.net trip: it's deterministic, it reruns with every batch, and it hands you a mask of where the watermark actually landed - which opens up downstream tricks like only watermarking a region or using the mask in compositing.

The mode that matters

The single most important input is mode, and it's a trap if you skip it:

  • text - renders your text string with a system font. Fine for a name, a handle, or a "Sample Watermark".
  • image - pastes a logo from the optional watermark_image input (plus an optional watermark_mask if your logo has transparency baked in weirdly). This is the one you want for an actual brand.

Watch it: in image mode without a watermark_image connected, the node quietly falls back to a default text watermark. If you see "Watermark" stamped on your images, that's why.

The inputs a beginner actually sets

  • position - ten choices including all corners plus custom, which unlocks the x_offset / y_offset knobs for pixel-fine placement.
  • opacity - 0 to 1. 0.5 is a decent default for something visible but not obnoxious.
  • repeat_pattern - tiles the watermark across the whole image. That's your "nobody crops this out" mode, beloved by stock-image sellers.
  • rotation - handy for diagonal text on tiled watermarks.

Everything else is optional seasoning: font, font_size, font_color, bold/italic/underline, and the effect_outline / effect_shadow / effect_glow toggles for legibility. There's also adaptive_color (picks a contrasting color automatically) and insert_datetime for timestamping. blend_mode gives you normal, multiply, or overlay - overlay is a nice subtle option for logos on busy images.

Outputs

  • watermarked - your image batch with the watermark composited in.
  • mask - a black-and-white mask of the watermark placement (you asked for it via output_mask; it's a dummy batch if not).

Installing it

ComfyUI Manager, search Starnodes, install, restart. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/Starnodes2024/ComfyUI_StarNodes
cd ComfyUI_StarNodes
pip install -r requirements.txt

It's under ⭐StarNodes/Image And Latent, and it's plain Pillow - the one dependency ComfyUI already ships.

Gotchas

  • The font dropdown is built from your system fonts (it scans the Windows Fonts directory). On Linux/Mac the pick list is thinner - if your font isn't there, install it system-wide and restart.
  • randomize_per_batch shifts the watermark position per image in the batch - great for beating simple crop-detection, mildly annoying if you actually want identical placement.
  • Watermarking after upscaling is much cheaper than watermarking before - you only stamp the final resolution once.

One honest note: this is a visible watermark node. If your threat model is someone strip-mining your metadata, this won't stop them - nothing in a pipeline will. It's for making your work look claimed, not for DRM.

Category⭐StarNodes/Image And Latent

Inputs (27)

NameTypeDefaultDescription
imagesIMAGE
textSTRINGSample Watermark
modeCOMBOtext2 options: text, image
image_scaleFLOAT1001–500
repeat_patternBOOLEANfalse
opacityFLOAT0.500–1
positionCOMBObottom_right10 options: center, top, bottom, left, right, top_left, +4
x_offsetINT10-10000–10000
y_offsetINT10-10000–10000
rotationINT0-180–180
blend_modeCOMBOnormal3 options: normal, multiply, overlay
output_maskBOOLEANfalse
adaptive_colorBOOLEANfalse
randomize_per_batchBOOLEANfalse
watermark_imageoptIMAGE
watermark_maskoptMASK
fontoptCOMBOarial.ttf9 options: Arial Bold.ttf, Arial Italic.ttf, Arial.ttf, Courier.ttf, Times New Roman Bold.ttf, Times New Roman.ttf, +3
font_sizeoptINT321–1000
font_coloroptSTRING#FFFFFF
font_boldoptBOOLEANfalse
font_italicoptBOOLEANfalse
font_underlineoptBOOLEANfalse
effect_outlineoptBOOLEANfalse
effect_shadowoptBOOLEANfalse
effect_glowoptBOOLEANfalse
insert_datetimeoptBOOLEANfalse
invert_maskoptBOOLEANfalse

Outputs (2)

NameTypeDescription
watermarkedIMAGE
maskIMAGE