Generated reference · ComfyUI workflow · Utility & post

Batch Watermark Applier

Apply watermarks to multiple images with customizable positioning, opacity, and style options

Utility & post8nodesGPU noneout image_batch~3sv1.0.0

On this page
8Graph nodes
8Node classes
19Inputs
0Models

Tags: utilitybatchwatermarkbrandingprotectionbulk

Inputs (19)#

The typed parameter surface callers bind when they request this workflow. Enum options and numeric bounds are the values the workflow document declares.

input_imagesimage_batchrequired
Batch of images to watermark
watermark_typeenumdefault image
Type of watermark to apply
options: imagetextboth
watermark_imageimage
Watermark image (PNG with transparency recommended)
watermark_textstringdefault LILITH
Text for text watermark
text_fontenumdefault roboto
Font for text watermark
options: arialhelveticatimesrobotoplayfaircustom
text_sizeenumdefault auto
Size of text watermark
options: smallmediumlargeauto
text_colorstringdefault #FFFFFF
Color for text watermark
positionenumdefault bottom_right
Watermark position
options: centerbottom_rightbottom_leftbottom_centertop_righttop_lefttop_centertiled
opacityfloatdefault 0.5min 0.1max 1.0
Watermark opacity
scale_modeenumdefault percentage
How to scale the watermark
options: fixedpercentageauto
scale_percentageintegerdefault 15min 5max 50
Watermark size as percentage of image
marginintegerdefault 20
Margin from edges in pixels
tile_spacingintegerdefault 100
Spacing between tiles (for tiled mode)
tile_rotationintegerdefault -30min -90max 90
Rotation angle for tiled watermarks
blend_modeenumdefault normal
Blend mode for watermark
options: normalmultiplyscreenoverlaysoft_light
add_shadowbooleandefault true
Add subtle shadow to watermark
shadow_opacityfloatdefault 0.3
Shadow opacity
output_formatenumdefault same
Output format (same = keep original)
options: pngjpgwebpsame
qualityintegerdefault 95
Output quality for lossy formats

ComfyUI node graph (8)#

The executable ComfyUI prompt graph: 8 nodes across 8 distinct node classes, wired by 9 data dependencies. Nodes tinted green come from a custom node pack this workflow declares; the rest are ComfyUI core / baked-community classes.

flowchart TD n0["1: LoadImageBatch"] n1["2: LoadImage"] n2["3: TextWatermarkGenerator"] n3["4: WatermarkSelector"] n4["5: WatermarkScaler"] n5["6: WatermarkShadow"] n6["7: BatchWatermarkApply"] n7["8: SaveImageBatch"] n1 -->|image_watermark| n3 n2 -->|text_watermark| n3 n3 -->|watermark| n4 n0 -->|target_images| n4 n4 -->|watermarks| n5 n0 -->|images| n6 n5 -->|watermarks| n6 n6 -->|images| n7 n0 -->|filenames| n7 classDef custom fill:#12b886,stroke:#0b6b4f,color:#04110c; class n0,n2,n3,n4,n5,n6,n7 custom;
Data-flow DAG — scroll to zoom, drag to pan.

Nodes (8)#

1LoadImageBatchcustom pack
images = {{input_images}} tmpl
outputs: IMAGE_BATCHFILENAMES
2LoadImagecore
image = {{watermark_image}} tmpl
outputs: IMAGEMASK
3TextWatermarkGeneratorcustom pack
text = {{watermark_text}} tmplfont = {{text_font}} tmplsize_config = {{text_size}} tmplcolor = {{text_color}} tmplenabled = {{watermark_type == 'text' or watermark_type == 'both'}} tmpl
outputs: IMAGE
4WatermarkSelectorcustom pack
image_watermark = ◂ node 2 · out[0]text_watermark = ◂ node 3 · out[0]type = {{watermark_type}} tmpl
outputs: IMAGE
5WatermarkScalercustom pack
watermark = ◂ node 4 · out[0]target_images = ◂ node 1 · out[0]scale_mode = {{scale_mode}} tmplscale_percentage = {{scale_percentage}} tmpl
outputs: IMAGE_BATCH
6WatermarkShadowcustom pack
watermarks = ◂ node 5 · out[0]enabled = {{add_shadow}} tmplopacity = {{shadow_opacity}} tmploffset = 3
outputs: IMAGE_BATCH
7BatchWatermarkApplycustom pack
images = ◂ node 1 · out[0]watermarks = ◂ node 6 · out[0]position = {{position}} tmplopacity = {{opacity}} tmplmargin = {{margin}} tmplblend_mode = {{blend_mode}} tmpltile_spacing = {{tile_spacing}} tmpltile_rotation = {{tile_rotation}} tmpl
outputs: IMAGE_BATCH
8SaveImageBatchcustom pack
images = ◂ node 7 · out[0]filenames = ◂ node 1 · out[1]format = {{output_format}} tmplquality = {{quality}} tmplfilename_prefix = watermarked_

Parameter banks (3)#

The prompt / configuration lookup tables this workflow keys into from its inputs — the vocabulary that turns a style / palette / preset selection into graph parameters.

position_configs (8)#

center
{"x": "center", "y": "center"}
bottom_right
{"x": "right", "y": "bottom"}
bottom_left
{"x": "left", "y": "bottom"}
bottom_center
{"x": "center", "y": "bottom"}
top_right
{"x": "right", "y": "top"}
top_left
{"x": "left", "y": "top"}
top_center
{"x": "center", "y": "top"}
tiled
{"x": "tiled", "y": "tiled"}

text_size_configs (4)#

small
{"base_size": 24, "scale_factor": 0.02}
medium
{"base_size": 36, "scale_factor": 0.03}
large
{"base_size": 48, "scale_factor": 0.04}
auto
{"base_size": 36, "scale_factor": 0.025}

preset_configurations (4)#

subtle_corner
{"position": "bottom_right", "opacity": 0.3, "scale_percentage": 10, "add_shadow": true, "description": "Subtle corner watermark"}
centered_overlay
{"position": "center", "opacity": 0.15, "scale_percentage": 40, "add_shadow": false, "description": "Large centered semi-transparent"}
tiled_protection
{"position": "tiled", "opacity": 0.2, "scale_percentage": 15, "tile_rotation": -30, "description": "Tiled protection pattern"}
professional_brand
{"position": "bottom_center", "opacity": 0.7, "scale_percentage": 12, "margin": 30, "add_shadow": true, "description": "Professional branding watermark"}

Models & dependencies#

Custom node packs (7)#

The non-core ComfyUI node classes this graph requires; the RunPod worker image the workflow runs on must bake or install a pack that provides every one of them.

LoadImageBatchTextWatermarkGeneratorWatermarkSelectorWatermarkScalerWatermarkShadowBatchWatermarkApplySaveImageBatch

Output contract#

What a successful run of this workflow returns.

type
image_batch
format
variable
description
Batch of watermarked images

Taxonomy & routing#

How the control plane classifies this workflow — from the committed workflow-taxonomy-registry.json. It drives the consistency / control surface the agentic director can exercise over the workflow.

assetFamily
mkt-influencer-collab-asset-pack
outputPackageProfile
marketing-campaign-profile
controlModalities
color-script-lockmodel-lockprompt-template-locksampler-scheduler-lockseed-lockstyle-lock
consistencyDimensions
color-script
notes
Auto-mapped from utility defaults