dont-track-me-google
Firefox and Chrome extensions to prevent Google from making links ugly.
A high-performance, 100% client-side tool for removing Gemini AI image & video watermarks. Built with pure JavaScript u…
git clone https://github.com/GargantuaX/gemini-watermark-remover.gitGargantuaX/gemini-watermark-remover🔥 Tired of Gemini watermarks? Try the more powerful GPT Image 2 at pilio.ai — free for a limited time.
An open-source tool to remove Gemini watermarks from AI-generated images with high-fidelity, reproducible results on supported outputs. Built with pure JavaScript, the engine uses a mathematically exact Reverse Alpha Blending algorithm instead of unpredictable AI inpainting.
🚀 Looking for the
Online Gemini Watermark Remover (Recommended)? Try geminiwatermarkremover.io — free, no install, works directly in your browser.💡 Got watermarks that Gemini Watermark Remover can't handle? Try the general-purpose AI watermark remover: pilio.ai/image-watermark-remover
Warning
USE AT YOUR OWN RISK
This tool modifies image files. While it is designed to work reliably, unexpected results may occur due to:
The author assumes no responsibility for any data loss, image corruption, or unintended modifications. By using this tool, you acknowledge that you understand these risks.
Note
Note: Disable any fingerprint defender extensions (e.g., Canvas Fingerprint Defender) to avoid processing errors. #3
For all users — the fastest and easiest way to remove Gemini watermarks from images:
For Gemini-generated videos with visible watermarks:
Note: Video watermark removal runs entirely in your browser — no files are uploaded to any server.
Use this if you do not want a userscript manager but still want automatic Gemini page integration for previews, copy, and download actions.
The popup includes an "Enable on Gemini" toggle. If Gemini becomes slow, behaves unexpectedly, or you need to troubleshoot the page, turn the toggle off and refresh Gemini.
Chrome Web Store installs update automatically. If the Web Store is not reachable in your network, the matching verified zip (gemini-watermark-remover-extension-v*.zip) remains available from GitHub Releases and the official website download entry for manual unpacked installation.
Current userscript boundaries:
Processing... overlayFor workflows that involve AI coding agents:
skills/gemini-watermark-remover/ contains a packaged Skill that agents can discover and invoke.skills.sh using:pnpm dlx skills add GargantuaX/gemini-watermark-remover --skill gemini-watermark-remover
--agent, --yes, or --copy only if your local setup needs them.node skills/gemini-watermark-remover/scripts/run.mjs remove <input> --output <file>
SKILL.md for agent integration details.For scripting, CI, and local batch workflows, use the direct CLI:
# repo-local node bin/gwr.mjs remove <input> --output <file> # installed globally gwr remove <input> [--output <file> | --out-dir <dir>] [--overwrite] [--json]
If you do not have gwr installed globally, use:
pnpm dlx @pilio/gemini-watermark-remover remove <input> --output <file>
The default CLI file decoder/encoder uses sharp. SDK consumers that only use browser or ImageData APIs do not need it. If you use the CLI file path in your own project, install sharp alongside this package:
pnpm add sharp
This tool targets Gemini's visible watermark (the semi-transparent logo in the bottom-right corner). If your image watermark doesn't match a known Gemini format, or you need to remove other types of image watermarks, try the general-purpose AI watermark remover:
👉 pilio.ai/image-watermark-remover
The repository still keeps a local internal preview harness at /dev-preview.html for single-image comparison, copy, and download verification.
/ now only redirects users toward the official website, the userscript artifact, and the internal preview page.# Install dependencies pnpm install # Development build pnpm dev # Production build pnpm build # Local static serving pnpm serve
Notes:
/ is now a lightweight entry page that points to the official website, the userscript artifact, and the retained internal preview page./dev-preview.html, is now kept as a static Chinese-only single-image compare harness for local algorithm/UI debugging, and no longer maintains public-facing locale or theme-switching features.pnpm dev / pnpm serve still host the userscript, probe pages, and these static assets.For the repo's fixed-profile workflow on macOS:
# Build the latest userscript pnpm build # Start a local dist server if needed pnpm dev # Open the fixed Chrome profile with remote debugging enabled ./scripts/open-fixed-chrome-profile.sh --url https://gemini.google.com/app
Notes:
.chrome-debug/tampermonkey-profile9226http://127.0.0.1:7890; disable it with --proxy off if not neededpnpm dev serverpnpm dev starts probing from http://127.0.0.1:4173/ and auto-increments if that port is already occupiedpnpm dev output instead of hardcoding 4173The package root still exposes an SDK, but this path is intended for advanced or internal integration scenarios:
import {
createWatermarkEngine,
removeWatermarkFromImage,
removeWatermarkFromImageData,
removeWatermarkFromImageDataSync,
} from '@pilio/gemini-watermark-remover';
Use the pure-data API when you already have decoded ImageData:
const result = await removeWatermarkFromImageData(imageData, {
adaptiveMode: 'auto',
});
console.log(result.meta.decisionTier);
Use the browser image API when you have an HTMLImageElement or HTMLCanvasElement:
const { canvas, meta } = await removeWatermarkFromImage(imageElement);
document.body.append(canvas);
console.log(meta.applied, meta.decisionTier);
If you need to process many images, reuse a single engine instance so alpha maps stay cached:
const engine = await createWatermarkEngine();
const first = await removeWatermarkFromImageData(imageDataA, { engine });
const second = await removeWatermarkFromImageData(imageDataB, { engine });
For Node.js integrations, use the dedicated subpath and inject your own decoder/encoder:
import { removeWatermarkFromBuffer } from '@pilio/gemini-watermark-remover/node';
const result = await removeWatermarkFromBuffer(inputBuffer, {
mimeType: 'image/png',
decodeImageData: yourDecodeFn,
encodeImageData: yourEncodeFn,
});
Float32Array, Uint8ClampedArray)navigator.clipboard.write(...) and ClipboardItemsharp installed when using the default CLI file decoder/encodernode bin/gwr.mjs remove <input> --output <file> node skills/gemini-watermark-remover/scripts/run.mjs remove <input> --output <file>
gwr CLI boundary# Run all tests pnpm test
Regression tests include image fixtures from src/assets/samples/.
Source samples stay in git.
Naming and retention rules for those fixtures are documented in src/assets/samples/README.md.
Complex preview/download validation notes are documented in docs/complex-figure-verification-checklist.md.
Local files under src/assets/samples/fix/ are optional snapshot outputs for manual regression checks and are intentionally not tracked by git.
See CHANGELOG.md for release history and RELEASE.md for the local release checklist. The latest post-release closeout is documented in docs/release-1.0.29-post-release.md.
Gemini applies watermarks using standard alpha compositing:
$$watermarked = \alpha \cdot logo + (1 - \alpha) \cdot original$$
Where:
watermarked: The pixel value with the watermark.α: The Alpha channel value (0.0 - 1.0).logo: The watermark logo color value (White = 255).original: The raw, original pixel value we want to recover.To remove the watermark, we solve for original:
$$original = \frac{watermarked - \alpha \cdot logo}{1 - \alpha}$$
By capturing the watermark on a known solid background, we reconstruct the exact Alpha map and apply the inverse formula to restore the original pixels with zero loss.
The engine uses layered detection to locate and verify watermarks:
Default watermark configurations:
| Condition | Watermark Size | Right Margin | Bottom Margin |
|---|---|---|---|
| Larger Gemini outputs | 96×96 | 64px | 64px |
| Smaller Gemini outputs | 48×48 | 32px | 32px |
gemini-watermark-remover/
├── bin/ # Published CLI entrypoint (`gwr`)
├── public/
│ ├── index.html # Entry page for official site / userscript / internal preview
│ ├── dev-preview.html # Internal browser preview harness kept for local debugging
│ └── tampermonkey-worker-probe.* # Probe pages for userscript/debug flows
├── skills/
│ └── gemini-watermark-remover/ # Distributable agent skill bundle
├── src/
│ ├── assets/ # Calibration assets and regression samples
│ ├── cli/ # CLI argument parsing and file workflows
│ ├── core/ # Watermark math, scoring, and restoration
│ ├── page/ # Page-side runtime for Gemini page integration
│ ├── sdk/ # Advanced/internal SDK surface
│ ├── shared/ # Shared DOM, blob, and session helpers
│ ├── userscript/ # Userscript entrypoints and browser hooks
│ ├── workers/ # Worker runtime
│ ├── app.js # Internal single-image preview harness entry point
│ └── utils.js # Shared browser helpers for the internal preview page
├── tests/ # Unit, regression, packaging, and smoke tests
├── scripts/ # Local automation and debug launchers
├── dist/ # Build output directory
├── build.js # Build script
└── package.json
src/core/ contains watermark detection, candidate selection, restoration metrics, and the reverse-alpha removal pipeline.src/userscript/, src/page/, and src/shared/ implement the real Gemini page integration, including preview replacement plus copy/download interception.src/cli/ and bin/gwr.mjs expose file-oriented local automation.skills/gemini-watermark-remover/ provides a distributable Skill that stays on the CLI boundary instead of importing repository internals directly.src/sdk/ remains available for advanced/internal integrations, but it is no longer the primary public entrypoint.This project is released under the MIT License.
The removal of watermarks may have legal implications depending on your jurisdiction and the intended use of the images. Users are solely responsible for ensuring their use of this tool complies with applicable laws, terms of service, and intellectual property rights.
The author does not condone or encourage the misuse of this tool for copyright infringement, misrepresentation, or any other unlawful purposes.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY ARISING FROM THE USE OF THIS SOFTWARE.
This project is a JavaScript port of the Gemini Watermark Tool by Allen Kuo (@allenk).
The Reverse Alpha Blending method and calibrated watermark masks are based on the original work © 2024 AllenK (Kwyshell), licensed under MIT License.
more like this
Firefox and Chrome extensions to prevent Google from making links ugly.
Automates the creation of JSON template files for Obsidian WebClipper.
A remote, phone-first console for your tmux — agent-agnostic, no database. Spawn and watch coding agents in parallel wo…
search projects, people, and tags