Watermark Studio is a developer-friendly toolkit for cleaning watermarks from videos you own or have permission to process. It combines a Python CLI, reusable masking/compositing utilities, a ProPainter backend adapter, and a native macOS app for visually marking the cleanup area.
The workflow is simple: open a video, mark the watermark, run a video inpainting backend, and rebuild the final mp4 with the original audio preserved.
The current backend adapter targets ProPainter. Point the CLI or macOS app at a local ProPainter checkout to run cleanup jobs with that backend.
- Remove watermarks from Veo, Gemini, and other AI-generated video clips you own or have permission to process.
- Compare rectangle and polygon masks for small generated-video logos.
- Run local video inpainting cleanup from a Python CLI or a native macOS GUI.
Watermark Studio is currently a developer preview. The CLI and macOS app are usable for local workflows, but the macOS app is not signed or notarized yet.
watermark-studioPython CLI.- Rectangle and polygon mask generation.
- ROI cropping and scaled repair compositing for faster ProPainter backend runs.
- ffmpeg/ffprobe helpers for frame extraction and final mp4 rebuilds.
- Native macOS SwiftUI app for visual marking, parameter tuning, and cleanup execution.
- Environment diagnostics through
watermark-studio doctor. - ProPainter bootstrap script for cloning/updating the backend checkout.
- CI coverage for Python tests on macOS/Linux and Swift tests on macOS.
The macOS app provides a visual workflow for opening a video, marking the cleanup mask, previewing the mask, choosing speed/quality presets, and opening the completed output.
Left: source clip. Right: cleaned clip.
- macOS or Linux for the CLI.
- macOS 14+ for the SwiftUI app.
ffmpegandffprobeonPATH.- Python 3.10+ with OpenCV and NumPy.
- A working ProPainter checkout and environment. Watermark Studio provides the orchestration layer; ProPainter code, weights, and runtime dependencies follow the upstream project.
Check your local environment:
watermark-studio doctor \
--python python3 \
--propainter-dir /path/to/ProPainterBootstrap a local ProPainter checkout:
scripts/bootstrap_propainter.sh ~/Tools/ProPainter
watermark-studio doctor \
--python ~/Tools/ProPainter/.venv/bin/python \
--propainter-dir ~/Tools/ProPainterSet INSTALL_REQUIREMENTS=1 if you want the bootstrap script to run pip install -r requirements.txt inside the generated virtual environment.
Recommended ProPainter flags for short generated-video clips:
--mask_dilation 0 \
--neighbor_length 5 \
--ref_stride 10 \
--subvideo_length 12 \
--raft_iter 10 \
--save_framesProPainter's own temporary mp4 writing can fail in some PyAV environments while the repaired frames are already saved. Watermark Studio treats saved frames as the source of truth and uses ffmpeg to rebuild the final mp4.
cd /path/to/watermark-studio
python3 -m pip install -e .If your OpenCV environment is in Conda, use that Python:
/path/to/conda/bin/python -m pip install -e .For tests and development helpers:
python3 -m pip install -e ".[dev]"
pytest -qProbe a video:
watermark-studio probe input.mp4Extract a frame to mark:
watermark-studio preview-frame input.mp4 preview.png --at 0Check required tools:
watermark-studio doctor --python python3 --propainter-dir /path/to/ProPainterClean a video with a rectangle mask:
watermark-studio clean input.mp4 output.mp4 \
--propainter-dir /path/to/ProPainter \
--python /path/to/python \
--rect 560,1128,80,72 \
--expand 3 \
--segment-frames 48 \
--keep-workClean with a polygon mask:
watermark-studio clean input.mp4 output.mp4 \
--propainter-dir /path/to/ProPainter \
--polygon "596,1128;612,1147;639,1151;621,1169;629,1202;600,1182;535,1210;576,1172;550,1160;581,1147" \
--expand 3Use rectangle masks for regular watermarks. Use polygon masks for small or irregular watermarks. Keep the mask tight first, then increase --expand only when edges still remain.
The macOS app lives in macos/WatermarkStudio.
Development run:
cd macos/WatermarkStudio
swift run WatermarkStudioMacBuild a local unsigned .app:
cd /path/to/watermark-studio
./scripts/package_mac_app.sh
open "dist/Watermark Studio.app"Current app features:
- Open a video.
- Extract and show the first frame.
- Drag and resize a rectangle over the watermark.
- Draw a pen/polygon mask for small or irregular watermarks.
- Zoom into the frame while marking.
- Preview the final mask.
- Adjust mask expansion and ROI padding.
- Choose
Fast,Balanced, orQualitycleanup presets. - Configure and persist ProPainter path, Python path, and output path.
- Auto-generate unique output names and open/reveal completed videos.
- Run the CLI and stream progress logs.
The packaged app includes the watermark_studio Python package in app resources, but it still uses your system Python and external ProPainter checkout.
See Quickstart for a full local setup.
Before contributing, read CONTRIBUTING.md. For sensitive reports, see SECURITY.md.
The macOS app exposes three ProPainter presets:
Fast: ROI 128, half-resolution inpainting, then composited back into the original video. Good for first-pass checks.Balanced: ROI 256, full-resolution inpainting. Recommended default for many generated-video watermarks.Quality: full-frame, slower and more conservative when the repaired area has foreground motion.
For maximum speed, use the smallest accurate mask. Oversized masks are slower and usually smear more detail.
- Add additional backend adapters for OpenCV Telea, LaMa, and other image/video inpainting engines.
- Add batch mode from the macOS app.
- Package a signed
.appand optional bundled Python environment. - Add visual QC contact sheet generation after every run.
- Parse segment logs into a real percent progress indicator.
Use this tool only on videos you own, videos you generated, licensed material, or videos where you have permission to remove embedded marks. The repo is meant for cleaning your own generated or licensed production assets.

