Add Watermark to Video
Add text or image watermarks to videos directly in your browser. Adjust position, opacity, size, rotation. Free, private, no upload required.
About
Unprotected video content gets redistributed without attribution. A watermark embeds ownership information directly into the pixel data of every frame, making removal non-trivial. This tool composites your watermark - either a text string rendered with configurable font properties or a raster image - onto each frame of the source video using the Canvas 2D rendering context. The output is encoded client-side via the MediaRecorder API into WebM format. All processing occurs in your browser; no frames leave your machine.
The compositing respects α (alpha/opacity) values you set, blending the watermark layer over the video layer per the standard Porter-Duff "source-over" operation. Position is mapped to a 3×3 anchor grid with pixel-level offset control. Note: output is constrained to codecs your browser's MediaRecorder supports - typically VP8/VP9 in WebM. Audio is muxed from the original source. Processing time scales linearly with frame count: a 60-second video at 30 fps requires compositing 1800 frames.
Formulas
Each output frame is produced by the Porter-Duff source-over compositing operation. For each pixel, the result color Cout is computed as:
where Cw = watermark pixel color, Cv = video frame pixel color, and αw = watermark opacity (0 to 1).
For tiled mode, watermark instances are placed at grid coordinates:
where s = tile spacing in pixels, i ∈ {0, 1, …, ⌊Ws⌋} and j ∈ {0, 1, …, ⌊Hs⌋}. W and H are the canvas (video) width and height.
Rotation transforms the canvas context by angle θ (in radians) around the watermark anchor point before drawing. Total processing time T approximates:
where N = duration × fps (total frames) and tframe is the per-frame composite time (typically 2 - 15 ms depending on resolution).
Reference Data
| Watermark Property | Range / Options | Default | Effect on Output |
|---|---|---|---|
| Text Content | 1 - 200 characters | © Your Name | Rendered string overlaid on each frame |
| Font Size | 8 - 120 px | 32 px | Larger text increases visibility but occludes more content |
| Opacity (α) | 0.05 - 1.0 | 0.35 | Lower values make watermark subtle; higher values deter removal |
| Rotation | −180° to 180° | −30° | Diagonal text is harder to crop or clone-stamp out |
| Color | Any hex color | #FFFFFF | White with opacity works on most footage; dark for light scenes |
| Position | 9-point grid | Bottom-right | Corner placement minimizes content obstruction |
| Tile Mode | On / Off | Off | Repeats watermark across entire frame - maximum protection |
| Tile Spacing | 50 - 400 px | 150 px | Gap between repeated watermark instances in tile mode |
| Image Watermark | PNG / SVG / JPEG / WebP | None | Logo overlay instead of text; respects alpha channel of source image |
| Image Scale | 5 - 100% | 20% | Percentage of video width occupied by watermark image |
| Output Format | WebM (VP8/VP9) | WebM | Browser-native encoding; no external codecs required |
| Output Bitrate | 1 - 20 Mbps | 5 Mbps | Higher bitrate preserves quality but increases file size |
| Max File Size | 500 MB | - | Browser memory constraint; larger files may cause tab crash |
| Supported Input | MP4, WebM, OGG, MOV | - | Codec support depends on browser (H.264, VP8/9, Theora) |