FFmpeg recipe
FFmpeg: Add an Image Watermark / Logo to a Video
overlay places one input on top of another. Use a transparent PNG and offset 10 px from the corner for a clean watermark.
Command
ffmpeg -i input.mp4 -i logo.png -filter_complex "[0:v][1:v]overlay=W-w-10:H-h-10" -c:v libx264 -crf 23 -c:a copy -y output.mp4Prefer no terminal?
Use the Watermark in your browser
What each flag does
| -i | Input file. Can be a video, audio, or image. Repeat for multiple inputs. |
|---|---|
| -c:v | Video codec for output. e.g. libx264, libx265, libvpx-vp9. |
| -crf | Constant Rate Factor — quality target (lower = better, larger file). 23 is visually lossless for libx264. |
| -c:a | Audio codec for output. e.g. aac, libmp3lame, copy. |
| overlay=W-w-10:H-h-10 | Position: W=main width, w=overlay width, 10 px margin from bottom-right corner. Other corners: 10:10 (top-left), W-w-10:10 (top-right), 10:H-h-10 (bottom-left). |
Notes & gotchas
- For a translucent watermark, pre-process the PNG with [1:v]format=rgba,colorchannelmixer=aa=0.5[wm] and use [wm] in overlay.
- For animated motion (logo bouncing or sliding in), see ffmpeg overlay timeline editing.
Related recipes
Burn in subtitles · SRT + video
Burn SRT subtitles into a video with FFmpeg subtitles filter. Hard-subs survive cross-posts and downloads.
Trim · MP4
Trim an MP4 with FFmpeg using stream-copy for lossless, instant output. Copy-paste command with explanations.
Trim (frame-accurate) · MP4
Frame-accurate MP4 trim with FFmpeg. Re-encodes for exact-frame precision — use when -c copy keyframe snapping is not OK.
Convert MOV → MP4 · MOV → MP4
Convert MOV to MP4 with FFmpeg using H.264 video and AAC audio. CRF 23 default keeps quality visually identical.