Repository navigation
Releases: allenk/VeoWatermarkRemover
Release list
v0.6.5-demo — Half-scale stamped diamonds, --region manual lock, bright-scene & old-iGPU fixes
v0.6.5-demo — Half-scale stamped diamonds, --region manual lock, bright-scene & old-iGPU fixes
This release teaches the tool a new watermark class — the half-size "stamped" diamond appearing on some newer free-tier / API outputs — and adds a manual --region lock for anything auto-detect doesn't know yet. Plus two reliability fixes: fewer missed frames on bright scenes, and a fix for corrupted output on old Intel iGPUs.
What's new
- Half-scale "stamped" diamonds are now found and removed (#31). Some newer clips carry a diamond about half the usual size at a nonstandard corner position (these appear to be stamped onto the video after generation). Previous versions could lock onto look-alike scene content nearby and report success while the real watermark stayed put. The smart search now scans down to these small sizes and holds every candidate to a stricter, data-calibrated bar — the real diamond wins.
- Manual
--region x,y,w,hlock for video. When a watermark sits somewhere auto-detect doesn't know yet, lock the exact spot yourself and pair it with--veo-alphafor intensity:No./GeminiWatermarkTool-Video -i in.mp4 -o out.mp4 --region "1221,656,22,22" --veo-alpha 0.98--region= unchanged automatic behavior. - Fewer missed frames on bright, busy backgrounds. The "watermark is occluded here, skip this frame" guard now accounts for how faint a watermark physically can be over a bright background (ocean foam, snow, spray) instead of using a fixed bar — a fully visible diamond no longer slips through on a single frame while its neighbors are cleaned.
- Fix: "diamond turns into a black square" on old Intel iGPUs (#28). On systems whose Vulkan driver is present but broken (Mesa warns "Haswell Vulkan support is incomplete"), the AI denoise step could write a black patch. Device selection now skips broken and software-emulated Vulkan devices (llvmpipe/lavapipe & friends) and falls back to the fast native CPU path automatically. You can also force CPU outright with the new
--cpuflag (orGWT_CPU_DENOISE=1in the environment).
How to use
Drag a Veo/Gemini video onto the executable, or:
./GeminiWatermarkTool-Video your_video.mp4 # auto-detects + removes
./GeminiWatermarkTool-Video --cpu your_video.mp4 # force CPU AI denoise (broken GPU drivers)
./GeminiWatermarkTool-Video -i in.mp4 -o out.mp4 \
--region "x,y,w,h" --veo-alpha 0.98 # manual lock for unknown watermark spotsNo flags needed for the common case.
Security & verification
These binaries are built by GitHub Actions from this repository's public, MIT-licensed source, in a clean throwaway CI runner with public build logs — no human ever touches the file between source and release. Independent VirusTotal scans (the SHA256 is in each link, so you can match it against your download):
- Windows x64 — https://www.virustotal.com/gui/file/542d413f0cc0467e90bc0a13a197df55a811fce312f3f0fb6a151f548e2964a0
- Linux x64 — https://www.virustotal.com/gui/file/958a8f429208848af55d461754a841d5c5703301a61ac66d045831c5a9622654
- macOS Universal — https://www.virustotal.com/gui/file/1998739f3a881d4cd9894b087a3eccba03d22b02bbcd9cfcc70dbeacf5aa6280
The executables are unsigned, so a brand-new release with zero antivirus reputation can occasionally trigger a generic heuristic false positive — it's about the file being new and unsigned, not about what the program does. Verify the SHA256 above, or build it yourself from source. Proper code signing is on the roadmap.
Demo build
CLI-only demo/preview build, unsigned executable. Full GUI support arrives when this is merged into the main GeminiWatermarkTool release.
Support
If this saved you time, you can support development on Ko-fi or PayPal. Thank you!
Veo Watermark Remover — v0.6.4
v0.6.4-demo — Engine-default (ML now opt-in) + Veo text detection fix & 1080p
A stability-focused release: the ML intensity assist is now opt-in, and the new small "Veo" text watermark is detected more reliably and supported at 1080p.
What's new
- More stable by default — the ML assist is now opt-in (
--ml). v0.6.3 ran the on-device "Alpha Judge" ML intensity predictor by default. Across the huge variety of real-world clips it occasionally over-corrected and made a clip worse than the plain analytical estimate. So the default is back to the proven, predictable analytical intensity (reliable for the common case), and Alpha Judge is now a one-flag opt-in (--ml) for the minority of clips whose intensity genuinely varies a lot. By default the tool also no longer initialises the GPU for ML, so it starts clean on more systems. - New "Veo" text — more reliable detection. Fixed a case where a clip with the small "Veo" wordmark over a busy foreground (e.g. shot through grass) was misread as the Gemini diamond and left the text in place (#18). The tool now identifies the watermark type correctly before removing it.
- 1080p small "Veo" text support. v0.6.3 handled the 720p wordmark only; 1080p is now detected and removed too (landscape and portrait).
- Diamond auto-detection hardened. The fallback shape-search is constrained to the actual corner zone, so busy mid-frame content can no longer be mistaken for a relocated diamond.
How to use
Drag a Veo/Gemini video onto the executable, or:
./GeminiWatermarkTool-Video your_video.mp4 # auto-detects + removes
./GeminiWatermarkTool-Video --ml your_video.mp4 # opt-in ML assist (tricky clips)No flags needed for the common case. --ml is optional.
Security & verification
These binaries are built by GitHub Actions from this repository's public, MIT-licensed source, in a clean throwaway CI runner with public build logs — no human ever touches the file between source and release. Independent VirusTotal scans (the SHA256 is in each link, so you can match it against your download):
- Windows x64 — https://www.virustotal.com/gui/file/e6a0fd8e1c6cbe26da02dafd8a1df4645ac35a565acab58e3171995dde4ab955
- Linux x64 — https://www.virustotal.com/gui/file/dd6d27547cee59555a87e720c8ef41c68373d78f94356cca31ab817b43d74f9b
- macOS Universal — https://www.virustotal.com/gui/file/b97c3c3d27c6c7e4e672e16b772a4e21ae4a93d4d15fcd6a6129ec441def4d5e
The executables are unsigned, so a brand-new release with zero antivirus reputation can occasionally trigger a generic heuristic false positive — it's about the file being new and unsigned, not about what the program does. Verify the SHA256 above, or build it yourself from source. Proper code signing is on the roadmap.
Demo build
CLI-only demo/preview build, unsigned executable. Full GUI support arrives when this is merged into the main GeminiWatermarkTool release.
Support
If this saved you time, you can support development on Ko-fi or PayPal. Thank you!
Reply — Issue #18 (update for v0.6.4)
Quick update — v0.6.4-demo is out and should fix this properly.
The earlier v0.6.3 build added the small "Veo" text removal, but on clips where the wordmark sits over a busy foreground (like yours, shot through the grass) it sometimes mis-identified the watermark as the older "diamond" type and left the "Veo" text in place. v0.6.4 fixes that detection so the right watermark is removed automatically — still no flags needed. It also now handles the 1080p "Veo" text, not just 720p.
Grab the latest build from the Releases page and give it another try. If anything still looks off, reply with a sample and I'll take a look.
Veo Watermark Remover — v0.6.3
v0.6.3-demo — Alpha Judge (on-device ML) + new "Veo" text removal
This release brings the two things that matter most for clean output: on-device machine learning to nail the removal intensity, and support for the new small "Veo" text watermark that Google's Flow generator started adding.
What's new
- ML-enhanced removal — meet "Alpha Judge". Picking the exact removal intensity for each clip is the single biggest factor in a clean result. v0.6.3 adds Alpha Judge, a small neural network (DNN) that runs entirely on your own machine and predicts the ideal intensity straight from the video. It works alongside the analytical estimator — two independent reads combined into one — so the hardest clips (dark, low-contrast, or busy backgrounds) come out cleaner than either method alone. 100% offline, nothing uploaded, with the same deterministic reverse-alpha math doing the actual removal.
- New: removes the small "Veo" text watermark. Google's Flow video generator now stamps a small "Veo" wordmark in the bottom-right corner of its newest outputs. v0.6.3 detects and removes it automatically — no flags, no setup — in both landscape and portrait. The tool recognises which watermark a clip carries (the Gemini diamond or the small Veo text) and cleans the right one on its own.
- Smarter auto-detection of the diamond, too. When Google relocates the diamond, the tool now finds it automatically — the fixed positions are just a fast path, and a frame-consistency search is the safety net. No update needed if the position shifts again.
Demo build
This is a CLI-only demo/preview build with an unsigned executable. Windows/macOS may warn on first run — see the README's First Run — OS Security Prompts for the one-time unblock. Full GUI support lands when this is merged into the main GeminiWatermarkTool release.
How to use
Drag a Veo/Gemini video onto the executable, or from the command line:
./GeminiWatermarkTool-Video your_video.mp4It auto-detects the watermark and writes your_video_processed.mp4 with audio preserved. No flags needed for either the diamond or the new "Veo" text. Full details and difficult-clip tips are in the README.
🛡️ Security & verification
These binaries are built by GitHub Actions from this repository's public, MIT-licensed source, in a clean throwaway CI runner with public build logs — no human ever touches the file between source and release. Independent VirusTotal scans (the SHA256 is in each link, so you can match it against your download):
- Windows x64 — https://www.virustotal.com/gui/file/f1544edff72b7f20bda25b79bcc9cc6d1ba57c49e9fc5f9b28d1b645706f1731
- Linux x64 — https://www.virustotal.com/gui/file/07a3f60c38cb5840458fc44f4cf07bf3b806723915cea65ba37f9b5608a0936b
- macOS Universal — https://www.virustotal.com/gui/file/62325e82c88560e5ebd20c640941908646a41e47b09870662eb10901a50e62d2
The executables are unsigned, so a brand-new release with zero antivirus reputation can occasionally trigger a generic heuristic false positive (a Wacatac / AIDetect-style label) — it's about the file being new and unsigned, not about what the program does. Verify the SHA256 above, restore from quarantine / add an exclusion, or build it yourself from source. Proper code signing is on the roadmap.
❤️ Support
If this saved you time, you can support development on Ko-fi or PayPal. Thank you!
Veo Watermark Remover — v0.6.2
Cleaner removal on the trickiest clips, and automatic handling of the relocated watermark that newer Veo outputs started using. Still the same offline, deterministic reverse-alpha-blending math — no cloud, no AI hallucination, no quality loss.
What's New
Auto-detects the relocated watermark (issues #14, #16)
Newer Veo portrait outputs (1080×1920 and 720×1280) moved the diamond
further in from the corner. v0.6.1 didn't recognise the new position and skipped those files entirely. v0.6.2:
- Adds the new positions so they auto-detect and clean out of the box.
- Adds a smart bottom-right search that locates the diamond
wherever it sits, by matching its shape across several frames and requiring them to agree on the spot. If Google shifts the position again, the tool finds it without needing an update — the fixed positions are just a fast path, the search is the safety net.
Fixes the "dark hole" over-removal on bright backgrounds
When the watermark drifted across a bright, low-contrast area (a lit hand, skin, a bright sky), the per-frame intensity estimator could over-shoot and over-subtract, leaving a dark crater for a stretch of frames. v0.6.2 anchors each frame's intensity to the stable per-shot value and rejects physically-implausible estimates, so the removal stays clean across the whole clip even as the background changes.
Keeps partially-occluded frames (issue #5)
When a foreground object partly covers the diamond, the watermark is still there underneath — but v0.6.1 could read the low match score as "no watermark" and skip those frames, leaving it visible. v0.6.2 adds a three-tier confidence gate: high-confidence frames are tuned per frame, low-confidence frames get the shot's consensus intensity applied (instead of being skipped), and only genuinely watermark-free frames are passed through untouched.
Smarter 1080p intensity (issue #2)
1080p previously used a fixed intensity, but some clips actually need a noticeably stronger one. v0.6.2 measures the correct intensity per shot with a more accurate (least-squares) estimator — about 20% closer to the ideal value than the previous method — while staying completely flicker-free on 1080p (where per-frame wobble would be visible, the tool locks one value for the whole shot).
Coming next: ML-assisted intensity
Picking the right removal intensity for each clip is the single biggest quality factor, and it's what most manual touch-up comes down to. v0.6.2 estimates it analytically; the next release will add a small neural model — trained and run entirely on your machine — that predicts the optimal intensity straight from the frame, automatically nailing the hardest clips (dark, low-contrast, or busy backgrounds) that analytic estimation still struggles with. Same principles throughout: fully offline, no upload, deterministic reverse-alpha math at the core.
Download
Single file, no installer.
| Platform | File | Notes |
|---|---|---|
| Windows x64 | GeminiWatermarkTool-Video.exe |
Drag & drop supported |
| Linux x64 | GeminiWatermarkTool-Video |
chmod +x before running |
| macOS Universal | GeminiWatermarkTool-Video |
Intel + Apple Silicon |
SHA256 checksums are listed below. First-run OS security prompts (SmartScreen / Gatekeeper) are normal for unsigned binaries — see the README for the one-time steps.
Notes
- Demo/preview build — CLI only, video only. For Gemini image watermarks use the main GeminiWatermarkTool.
- Pre-Gemini-3.5 videos with the old "Veo" text watermark still need
--legacy. - Got a clip the tool can't handle? An issue with a sample is the most useful thing you can send.
If this saved you time, you can support via Ko-fi or PayPal — not required, just appreciated.
Veo Watermark Remover v0.6.1
v0.6.1-demo — adaptive per-frame alpha, no more fade-in SKIPs
Two main wins this release: the auto-detector no longer SKIPs videos that start with a fade-in intro (5 community samples were affected), and the per-frame alpha intensity is now refined with a bisection feedback loop that actually evaluates whether the result looks like the surrounding background.
Highlights
-
Multi-frame detection probe. v0.6.0 inspected frame 0 only — fade-in intros or pre-roll splash screens reported NCC = 0 and the whole clip was SKIPped even when the diamond was rock-solid in mid-clip. v0.6.1 probes 12 frames spread across the first 90% of the video and picks the best (sample, tuple) pair.
Five previously-skipped community samples now auto-detect cleanly:
issue_4_2,issue_4_4,issue_4_5,issue_4_6,issue_5_1. See #4 / #5. -
Adaptive per-frame alpha via bisection feedback. v0.6.0 estimated the alpha intensity once per frame from observed pixels — accurate on uniform content but locally noisy on heterogeneous backgrounds (medical illustrations, anime fights), producing scale swings 0.65 ↔ 1.45 across adjacent frames that looked like watermark flicker.
v0.6.1 replaces that single-shot estimator with a result-feedback loop:
- Pick a candidate intensity (from the per-shot seed).
- Apply the candidate, examine the resulting WM region.
- Brighter than surroundings → residue → push intensity up.
- Darker than surroundings → over-subtracted (dark hole) → push down.
- Up to 5 bisection rounds per frame.
Goal is visual consistency with the local context, not predictive accuracy. Same content + same diamond converges to the same scale every run.
-
Per-shot seed + per-frame change cap. Stable per-video baseline (median of 12 sample-frame estimates) anchors the bisection. Applied scale capped to ±0.05 per frame so any single bad assessment damps to an imperceptible nudge instead of a visible flash. Loose enough that real intensity changes track within ~46 frames (1.9 s @ 24 fps).
-
--variantescape hatch in SKIP hint. When auto-detect can't lock on (rare now), the SKIP message suggests--variant 720p-1/--variant 720p-2directly. -
Manual touch-up workflow documented. Some content classes still produce a small residue on a few frames. The README now documents the practical workflow: run the auto pipeline first →
ffmpegdecompose problem output into PNGs → hand-tune problem frames in the GUI build's Custom mode with the Alpha intensity slider →ffmpegrecompose. Most clips only need a handful of touch-ups. -
--sigmatuning tips.--sigma 15for anime / illustration content (smaller value = less smoothing = cleaner edges on hand-drawn detail);--sigma 25for photographic content where the default AI denoise is too aggressive.
Scope
| Resolution | Status |
|---|---|
| 1920×1080 landscape | ✅ Calibrated, validated (unchanged from v0.6.0) |
| 1080×1920 portrait | ✅ Calibrated, validated (unchanged from v0.6.0) |
| 1280×720 / 720×1280 (both variants) | ✅ Auto-detected (improved over v0.6.0 — survives fade-in intros) |
| 4K, 9:16 short-form, square 1:1, ... | ❌ Not yet calibrated |
Honest limitation
The new adaptive bisection is a real improvement on the noisy-bg case, but single-pass per-frame assessment can't be perfect on every frame — content with very strong per-frame motion (medical illustrations with hair strands meeting skin right next to the WM, rapid-cut animation with foreground overlays) will still produce a small residue on a small number of frames.
For those clips, see the Manual touch-up workflow section in the README, or use the GUI build's Custom-mode Alpha intensity slider on the problem frames directly.
A future release will likely add a two-pass scan-then-apply mode that builds a per-shot intensity model from a full first-pass scan, then applies it. That's gated on collecting more samples that single-pass demonstrably can't handle.
Usage
# Default — Gemini 3.5 diamond removal (1080p + 720p auto-detected)
GeminiWatermarkTool-Video.exe video.mp4
# Pre-Gemini-3.5 video with "Veo" text watermark
GeminiWatermarkTool-Video.exe --legacy old_veo_video.mp4
# Anime / illustration content (lighter AI denoise)
GeminiWatermarkTool-Video.exe --sigma 15 video.mp4
# Force a specific 720p variant if auto-detect can't lock on (very rare):
GeminiWatermarkTool-Video.exe --variant 720p-1 video.mp4 # 48x48 standard
GeminiWatermarkTool-Video.exe --variant 720p-2 video.mp4 # 44x44 compactCompatibility
Drop-in replacement for v0.6.0-demo. CLI surface unchanged for the default flow. 1080p path is byte-for-byte identical to v0.6.0-demo on the static-alpha branch — no regression to validated content.
First run — OS security prompts
Downloaded binaries are not code-signed, so your OS may warn on first launch. See the README for one-time bypass instructions per platform.
Verification
SHA256 checksums for each platform archive are listed below. Verify with:
# Windows (PowerShell)
Get-FileHash GeminiWatermarkTool-Windows-x64-Video.zip -Algorithm SHA256
# Linux / macOS
sha256sum GeminiWatermarkTool-Linux-x64-Video.zipBuilt on
GeminiWatermarkTool v0.3.1 + dev-side veo-video-pipeline branch at internal version 0.6.1. Mathematical write-up of the underlying reverse alpha blending technique: Removing Gemini AI Watermarks — Medium.
Acknowledgements
Thanks to community contributors who supplied 720p samples and surfaced the fade-in / heterogeneous-bg cases this release addresses:
- @achillion, @Sappurit, @1436735995 — earlier 720p calibration (carried over from v0.6.0)
- @rezzvy — duration-drift report (fixed in v0.6.0)
- issue #4 thread contributors (
issue_4_2..4_6) — fade-in SKIP cases that drove the multi-frame probe - issue #5 reporter (
issue_5_1) — anime / X-icon overlay test case for the adaptive bisection
Their files and observations made this release possible.
Support this project
Every public release goes through GitHub Actions CI on Windows / Linux / macOS, and the binaries live in the Releases section. If the tool saved you time and you'd like to help cover runner minutes / storage, you can support on Ko-fi. Not required, just appreciated.
Bug reports and sample videos remain the most valuable contribution — opening an issue with a clip the tool can't handle is often more useful than a one-off donation.
Full Changelog: v0.6.0-demo...v0.6.1-demo
Veo Watermark Remover v0.6.0
v0.6.0-demo — 720p support + transcoder timing fidelity
Two big things this release: 720p Gemini 3.5 diamond removal is now
first-class and auto-detected, and the transcoder no longer drifts
frame count or duration relative to the source.
If you were re-rendering 720p videos to 1080p as a workaround, or
re-aligning v0.5.0 output against the original in a video editor, both
of those workarounds are no longer needed.
Highlights
-
720p auto-detect. Both geometries we've seen in real Veo 720p
outputs are calibrated and shipping:720p-1 standard— 48×48 diamond at margin (72, 72) — ~1.5 Mbps tier720p-2 compact— 44×44 diamond at margin (29, 40) — ~7 Mbps tier
No
--variantflag needed for normal use. Auto-detect picks the
right one per file via NCC scoring. -
Dynamic per-frame alpha estimation. The 720p watermark intensity
varies substantially across encoding tiers (manual tuning showed up
to a 3× spread between the two variants), so v0.6.0 estimates the
per-frame alpha multiplier directly from each frame's pixels using a
median-ratio over high-reference-alpha pixels. Recovers within ~5% of
hand-tuned values automatically. 1080p stays on the validated
static path — baseline is byte-for-byte unchanged. -
Position refinement at video startup. A ±4 px local NCC search
around the tuple anchor snaps to the actual diamond position. Absorbs
minor per-encoding-tier position drift without needing recalibration. -
Transcoder timing fidelity. Output now matches input exactly on:
- Frame count — decoder reorder buffer is properly drained;
no more silently losing the last 1-3 tail frames - Duration — output
duration_tsmatches input to the tick - FPS metadata —
r_frame_rateandavg_frame_ratepropagated
from input
If you were re-aligning v0.5.0 output against the original in an NLE
per #4,
that step is no longer needed. - Frame count — decoder reorder buffer is properly drained;
-
Quieter default output. FFmpeg container parser warnings
(e.g.Unknown cover type: 0x1emitted on C2PA-tagged Veo videos)
are suppressed at default verbosity. They still appear under
--verbosefor debugging.
Scope
| Resolution | Status |
|---|---|
| 1920×1080 landscape | ✅ Calibrated, validated (unchanged from v0.5.0) |
| 1080×1920 portrait | ✅ Calibrated, validated (unchanged from v0.5.0) |
| 1280×720 / 720×1280 (both variants) | ✅ NEW — auto-detected |
| 4K, 9:16 short-form, square 1:1, ... | ❌ Not yet calibrated |
Unsupported resolutions emit [SKIP] with a hint. If you have a
Gemini 3.5 video at a resolution other than 1080p / 720p, please
open an issue
with a sample.
Honest limitation
There is a class of content this approach cannot clean: frames
where foreground motion physically paints over the diamond (crashing
waves, smoke, particles, fast motion blur covering the watermark
region). In those frames the original background pixels are gone —
the reverse-alpha math has nothing to recover from, and AI denoise
will not invent missing content. Per-frame NCC gating leaves such
frames untouched (diamond visible) rather than scribble over them
with hallucinated content; partial-occlusion frames may show some
residue.
This is a fundamental property of the math, not a tuning issue.
See #2
for examples.
Usage
# Default — Gemini 3.5 diamond removal (1080p + 720p auto-detected)
GeminiWatermarkTool-Video.exe video.mp4
# Pre-Gemini-3.5 video with "Veo" text watermark
GeminiWatermarkTool-Video.exe --legacy old_veo_video.mp4
# Force a specific 720p variant if auto-detect picks wrong (rare):
GeminiWatermarkTool-Video.exe --variant 720p-1 video.mp4 # 48x48 standard
GeminiWatermarkTool-Video.exe --variant 720p-2 video.mp4 # 44x44 compactCompatibility
Drop-in replacement for v0.5.0-demo. CLI surface unchanged for the
default drag-drop flow. 1080p path is byte-for-byte identical to
v0.5.0-demo on the static-alpha branch — no regression to validated
content.
First run — OS security prompts
Downloaded binaries are not code-signed, so your OS may warn on first
launch. See the README
for one-time bypass instructions per platform.
Verification
SHA256 checksums for each platform archive are listed below. Verify
with:
# Windows (PowerShell)
Get-FileHash GeminiWatermarkTool-Windows-x64-Video.zip -Algorithm SHA256
# Linux / macOS
sha256sum GeminiWatermarkTool-Linux-x64-Video.zipBuilt on
GeminiWatermarkTool
v0.3.1 + dev-side veo-video-pipeline branch at internal version
0.6.0. Mathematical write-up of the underlying reverse alpha blending
technique:
Removing Gemini AI Watermarks — Medium.
Acknowledgements
Thanks to community contributors who supplied 720p samples and
reported the transcoder timing drift:
- @achillion — 720p sample on
#2 - @Sappurit — 720p compact variant
observations - @rezzvy — 720p re-render workaround and
duration-drift report on
#4 that
surfaced the transcoder timing bugs - @1436735995 — original 1080p sample
carried over from v0.5.0
Their files and observations made this release possible.
Full Changelog: v0.5.0-demo...v0.6.0-demo
Veo Watermark Remover v0.5.0
v0.5.0-demo — Gemini 3.5 watermark support
Latest Gemini 3.5 video outputs no longer carry the old "Veo" text
overlay — they ship the Gemini diamond logo instead. This release
adds removal for the new diamond as the default mode and keeps the
previous Veo text path behind a single flag.
Highlights
- Gemini 3.5 diamond removal (default, no flag needed). Uses the
V2 watermark profile from
GeminiWatermarkTool v0.3.1
scaled to the video logo size. --legacyfor pre-Gemini-3.5 videos carrying the "Veo" text
watermark. Same behaviour as previous releases.- No automatic fallback between the two modes — different shapes
at different positions, so applying the wrong removal would damage
the frame. The user picks explicitly. - Tighter video encode — CRF 14 / preset slow (was 18 / medium).
PSNR up ~2-3 dB on encoding-only regions; visually identical to
source on most content. - Quieter output — per-frame AI-denoise timing line is no longer
emitted at warn level, so the progress bar isn't drowned in
hundreds of status messages.
Scope — please read before reporting issues
The diamond removal is currently calibrated for 1080p only:
| Resolution | Status |
|---|---|
| 1920×1080 landscape | ✅ Calibrated, validated end-to-end |
| 1080×1920 portrait | ✅ Calibrated, validated end-to-end |
| 720p (any orientation) | ❌ Not yet calibrated |
| 4K, 9:16 short-form, square 1:1, ... | ❌ Not yet calibrated |
Unsupported resolutions emit [SKIP] with a hint to retry with
--legacy if the file is a pre-Gemini-3.5 output. The diamond shape
appears identical across resolutions; only the position and size
scale, so with one or two samples per resolution we can ship support
quickly.
If you have a Gemini 3.5 video at a resolution other than 1080p,
please open an issue
with a sample so we can calibrate that size.
Usage
# Default — Gemini 3.5 diamond removal
GeminiWatermarkTool-Video.exe video.mp4
# Pre-Gemini-3.5 video with "Veo" text watermark
GeminiWatermarkTool-Video.exe --legacy old_veo_video.mp4First run — OS security prompts
Downloaded binaries are not code-signed, so your OS may warn on first
launch. See the README
for one-time bypass instructions per platform.
Built on
GeminiWatermarkTool v0.3.1 + dev-side veo-video-pipeline branch
Mathematical write-up of the underlying reverse alpha blending
technique:
Removing Gemini AI Watermarks — Medium.
Acknowledgements
Thanks to @Sappurit and the
#34 thread
for the ERRORLEVEL contract; and to the reporters of
#2 and
#3 for the
1080p sample videos that made this calibration possible.
Veo Watermark Remover v0.4.0
What's New in v0.4.0
macOS stability hot-fix.
macOS crash fix:
- Pre-flight Vulkan loader probe before NCNN GPU init. macOS without
MoltenVK / LunarG Vulkan SDK installed used to crash with SIGBUS at
startup (instruction abort in __DATA, after three failed dlopen
attempts) when --denoise ai was active during processing - The fix detects the missing loader and routes denoise through the CPU
code path with a clear log message naming MoltenVK / LunarG as the
remediation for users who want GPU acceleration - Same probe also helps headless Linux setups without a Vulkan ICD
- Refs allenk/GeminiWatermarkTool#30, allenk/GeminiWatermarkTool#31
CLI quality-of-life:
- The "Simple usage:" hint in --help now correctly reads
"GeminiWatermarkTool-Video" in the Video build (was hardcoded as
"GeminiWatermarkTool") - Added --snap-min-size option (default 16, range 8-64) mirroring the
existing --snap-max-size flag for finer snap-search control on the
image (Gemini) path
CI / verification:
- Added end-to-end smoke test that runs --denoise ai through a real
inference pipeline on every CI build (Windows / Linux / macOS). The
previous --version-only smoke test never touched the AI denoise init
path, which is why the macOS crash slipped past CI in v0.3.0
Platforms: Windows x64, Linux x64, macOS Universal (Intel + Apple Silicon)
Based on GeminiWatermarkTool v0.2.8: https://github.com/allenk/GeminiWatermarkTool
Veo Watermark Remover v0.3.0 — Improved Quality & Encoder Upgrade
What's New in v0.3.0
Improved Watermark Removal
- Remastered alpha maps — 720p and 1080p masks rebuilt from 10+ golden frame-differencing pairs (Lightning flash, Light bulb, Sunrise transitions), significantly more accurate than previous versions
- Better output quality — upgraded video encoder delivers higher fidelity with improved compression efficiency
- Enhanced AI cleanup — per-resolution denoise tuning with expanded inference context preserves background texture while cleaning watermark residuals more effectively
Quality of Life
- Progress bar — real-time ASCII progress indicator during video processing
- Quieter output — reduced log verbosity in normal mode; use
--verbosefor detailed diagnostics
Previous Features (unchanged)
- Drag & drop — just drop your
.mp4onto the exe - Single executable — zero dependencies, zero installation
- Audio preserved — original audio track kept intact
- Fast — 720p ~50 fps, 1080p ~18 fps
- Landscape + Portrait support
Usage
# Drag & drop or:
GeminiWatermarkTool-Video video.mp4
# Output: video_processed.mp4First Run
Windows: SmartScreen may warn → click "More info" → "Run anyway"
macOS: Right-click → Open → click "Open" in dialog
Linux: chmod +x GeminiWatermarkTool-Video
Coming Soon
GUI integration into GeminiWatermarkTool
Adaptive watermark detection
About
Demo build based on GeminiWatermarkTool — the original reverse alpha blending engine for AI watermark removal.
Veo Watermark Remover v0.2.0 Demo — Cross-platform (Windows + Linux + macOS)
What's New in v0.2.0
- Cross-platform — now available for Windows, Linux, and macOS
- macOS Universal Binary — runs natively on Intel and Apple Silicon
- Portrait video support — 720x1280 and 1080x1920 vertical videos
- LTO enabled — smaller binary size via link-time optimization
- Standalone fix — removed VCOMP140.DLL dependency (zero external DLLs)
Download
| Platform | File | Size |
|---|---|---|
| Windows x64 | GeminiWatermarkTool-Windows-x64-Video.zip |
16 MB |
| Linux x64 | GeminiWatermarkTool-Linux-x64-Video.zip |
20 MB |
| macOS Universal | GeminiWatermarkTool-macOS-Universal-Video.zip |
31 MB |
Usage
# Drag & drop (Windows) or command line (all platforms):
./GeminiWatermarkTool-Video video.mp4
# Output: video_processed.mp4About
Based on GeminiWatermarkTool — mathematically precise reverse alpha blending for AI watermark removal.