Visitar URL original
Releases · allenk/VeoWatermarkRemover · GitHub
Skip to content

Releases: allenk/VeoWatermarkRemover

v0.6.5-demo — Half-scale stamped diamonds, --region manual lock, bright-scene & old-iGPU fixes

Choose a tag to compare

@allenk allenk released this 10 Aug 13:10

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,h lock for video. When a watermark sits somewhere auto-detect doesn't know yet, lock the exact spot yourself and pair it with --veo-alpha for intensity:
    ./GeminiWatermarkTool-Video -i in.mp4 -o out.mp4 --region "1221,656,22,22" --veo-alpha 0.98
    No --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 --cpu flag (or GWT_CPU_DENOISE=1 in 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 spots

No 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):

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

Choose a tag to compare

@allenk allenk released this 19 Jun 00:26

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):

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

Choose a tag to compare

@allenk allenk released this 14 Jun 01:43

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.mp4

It 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):

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

Choose a tag to compare

@allenk allenk released this 09 Jun 10:02

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

Choose a tag to compare

@allenk allenk released this 27 May 18:04

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).

  • --variant escape hatch in SKIP hint. When auto-detect can't lock on (rare now), the SKIP message suggests --variant 720p-1 / --variant 720p-2 directly.

  • 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 → ffmpeg decompose problem output into PNGs → hand-tune problem frames in the GUI build's Custom mode with the Alpha intensity slider → ffmpeg recompose. Most clips only need a handful of touch-ups.

  • --sigma tuning tips. --sigma 15 for anime / illustration content (smaller value = less smoothing = cleaner edges on hand-drawn detail); --sigma 25 for 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 compact

Compatibility

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.zip

Built 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

Choose a tag to compare

@allenk allenk released this 25 May 02:15

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 tier
    • 720p-2 compact — 44×44 diamond at margin (29, 40) — ~7 Mbps tier

    No --variant flag 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_ts matches input to the tick
    • FPS metadata — r_frame_rate and avg_frame_rate propagated
      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.

  • Quieter default output. FFmpeg container parser warnings
    (e.g. Unknown cover type: 0x1 emitted on C2PA-tagged Veo videos)
    are suppressed at default verbosity. They still appear under
    --verbose for 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 compact

Compatibility

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.zip

Built 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

Choose a tag to compare

@allenk allenk released this 23 May 16:49

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.
  • --legacy for 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.mp4

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.

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

Choose a tag to compare

@allenk allenk released this 01 May 18:30

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

Choose a tag to compare

@allenk allenk released this 06 Apr 20:20

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 --verbose for detailed diagnostics

Previous Features (unchanged)

  • Drag & drop — just drop your .mp4 onto 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.mp4

First 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)

Choose a tag to compare

@allenk allenk released this 26 Mar 12:34

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.mp4

About

Based on GeminiWatermarkTool — mathematically precise reverse alpha blending for AI watermark removal.