Brand every video without opening an editor
You produce 20 videos a week. Each one needs your logo in the corner. Opening Premiere Pro or DaVinci Resolve for a 5-second watermark operation is a waste of time.
An n8n workflow does it automatically. New video uploaded? Logo applied. Batch of videos from a shoot? All watermarked. Client delivery folder? Every file branded.
This guide focuses on the n8n workflow side. If you want the full breakdown of FFmpeg watermark filters — positioning, scale2ref, opacity, text overlays, animated watermarks, and subtitle burn-in — see the FFmpeg watermark guide.
Use the RenderIO n8n node
The quickest way to add watermarks in n8n is RenderIO's partner-verified community node. Install from Settings → Community Nodes → search "renderio". It provides a visual interface for FFmpeg commands without HTTP Request configuration.
The watermark examples below use HTTP Request nodes for full flexibility, but the same FFmpeg overlay commands work with the native node.
The FFmpeg watermark command
FFmpeg's overlay filter places one video (or image) on top of another. Here's the basic command:
W= main video widthw= logo widthH= main video heighth= logo height-10= 10 pixel padding from the edge
This places the logo in the bottom-right corner with 10px padding.
Position reference
| Position | FFmpeg overlay value |
| Top-left | overlay=10:10 |
| Top-right | overlay=W-w-10:10 |
| Bottom-left | overlay=10:H-h-10 |
| Bottom-right | overlay=W-w-10:H-h-10 |
| Center | overlay=(W-w)/2:(H-h)/2 |
Basic workflow: Watermark a single video
Node 1: Trigger
Webhook, Google Drive trigger, or any trigger that provides:
videoUrl: URL of the video to watermarklogoUrl: URL of the logo/watermark image (PNG with transparency)
Node 2: Submit watermark command (HTTP Request)
Method: POST
URL:
https://renderio.dev/api/v1/run-ffmpeg-commandAuthentication: Header Auth (X-API-KEY)
Body:
Node 3-5: Standard polling loop
Wait → Check Status → IF Complete → use result.
The output video has your logo permanently embedded in the bottom-right corner.
Semi-transparent watermark
A fully opaque logo can be distracting. Reduce opacity to 30%:
colorchannelmixer=aa=0.3 sets the alpha channel to 30%. The logo is visible but not overpowering.
Resized watermark
If your logo is too large or too small for the video, scale it first:
scale=150:-1 resizes the logo to 150px wide, maintaining aspect ratio.
Combine scaling with transparency:
Dynamic positioning with n8n
Let users choose watermark position through your trigger:
Code node to map position to FFmpeg values:
Then reference {{ $json.overlayPosition }} in your FFmpeg command.
Text watermark (no image needed)
If you don't have a logo image, use FFmpeg's drawtext filter:
fontcolor=white@0.5 makes the text white at 50% opacity. x=w-tw-10 positions it 10px from the right edge.
Batch watermarking
Process an entire folder of videos with the same watermark:
Step 1: Video list (from spreadsheet, database, or API)
Step 2: Split in Batches (size: 5)
Step 3: Submit watermark for each
Step 4: Poll and collect results
Timed watermark (appears/disappears)
Show the watermark only during the first 5 seconds:
enable='between(t,0,5)' shows the overlay from 0 to 5 seconds only.
Watermark with fade-in
Make the watermark fade in over the first 2 seconds:
Best practices for watermark images
Use PNG with transparency: JPG doesn't support transparency. Your logo needs an alpha channel.
Size appropriately: Logo should be 10-15% of the video width. For 1080p, that's 108-162px wide.
White or light colors: Works on most video content. Add a slight drop shadow in your PNG for videos with bright scenes.
Host on a reliable URL: The logo URL must be accessible when the API downloads it. Use S3, Cloudflare R2, or any CDN.
Get started
The Starter plan at $9/mo includes 500 commands -- enough to test watermarking workflows.