Remove visible and invisible AI watermarks from images generated by Google Gemini (Nano Banana), ChatGPT / DALL-E, Stable Diffusion, Adobe Firefly, Midjourney, and other AI models.
Strips SynthID, C2PA Content Credentials, EXIF/XMP "Made with AI" labels, and visible sparkle overlays — all in one command.
Try it online — don't want to install anything? Use raiw.cc, a free web service powered by this library.
| Before (Watermarked) | After (Cleaned) |
|---|---|
![]() |
![]() |
| AI model | Visible watermark | Invisible watermark | Metadata | Our approach |
|---|---|---|---|---|
| Google Gemini / Nano Banana / Gemini 3 Pro | ✅ Sparkle logo | ✅ SynthID v1 + v2 (default SDXL pipeline at native ~1024 px) | ✅ C2PA + EXIF | Alpha reversal + diffusion + metadata strip |
| OpenAI DALL-E 3 / ChatGPT | — | — | ✅ C2PA manifest | Metadata strip |
| OpenAI ChatGPT Images 2.0 (gpt-image-2) | — | ⚠️ imperceptible pixel watermark (no public detector yet) | ✅ C2PA manifest (verified) | Diffusion regeneration + metadata strip |
| Stable Diffusion (AUTOMATIC1111, ComfyUI) | — | ✅ DWT / steganographic | ✅ PNG text chunks | Diffusion regeneration + metadata strip |
| Adobe Firefly | — | — | ✅ Content Credentials (C2PA) | Metadata strip |
| Midjourney | — | — | ✅ EXIF + XMP (prompt, model, seed) | Metadata strip |
| StableSignature (Meta) | — | ✅ In-model watermark | — | Diffusion regeneration |
| TreeRing | — | ✅ Latent space watermark | — | Diffusion regeneration |
Visible watermarks (logo overlays) are currently used only by Google Gemini / Nano Banana. Other services rely on invisible watermarks and/or metadata. Our diffusion-based regeneration works against any invisible watermark in pixel or frequency domain.
Google Gemini (internally codenamed Nano Banana) adds a visible sparkle logo to generated images using alpha blending:
watermarked = α × logo + (1 − α) × original
We reverse this with a known alpha map (extracted from Gemini / Nano Banana output on a pure-black background):
original = (watermarked − α × logo) / (1 − α)
A three-stage NCC (Normalized Cross-Correlation) detector finds the watermark position and scale dynamically, so it works even if the image was resized or cropped. After removal, residual sparkle-edge artifacts are cleaned via gradient-masked inpainting.
Speed: ~0.05s per image. No GPU needed.
Google embeds SynthID into every image generated by Gemini / Nano Banana. Other AI services use StableSignature, TreeRing, and similar schemes. These imperceptible frequency-domain patterns survive cropping, resizing, and JPEG compression.
The removal pipeline (default profile, SDXL):
image → resize to ~1024px (SDXL native) → encode to latent space (VAE)
→ add controlled noise (forward diffusion)
→ denoise (reverse diffusion, ~50 steps at strength 0.05)
→ decode back to pixels (VAE) → upscale to original resolution
SDXL is the default since May 2026: empirically defeats SynthID v2 on Gemini 3 Pro outputs, where the older SD-1.5 pipeline at 768 px did not. The SD-1.5 path was removed once it was verified not to handle v2.
Face Protection: before diffusion, YOLO detects people in the image and extracts them. After diffusion, the original faces are blended back with a soft elliptical mask to prevent AI distortion of facial features.
Analog Humanizer: optional film grain and chromatic aberration injection that makes the output indistinguishable from a photo of a screen, defeating AI-generated image classifiers.
AI tools embed generation metadata that social platforms use to show "Made with AI" labels:
trainedAlgorithmicMedia tag used by Instagram, Facebook, and X (Twitter) to show "Made with AI"The cleaner parses each layer, removes AI-related fields, and preserves standard metadata (Author, Copyright, Title).
Install as an isolated CLI tool — no need to manage virtual environments:
pipx install git+https://github.com/wiltodelta/remove-ai-watermarks.git
uv tool install git+https://github.com/wiltodelta/remove-ai-watermarks.git
To update to the latest version:
pipx upgrade remove-ai-watermarks
uv tool upgrade remove-ai-watermarks
Prerequisites: Python 3.10+ and pip (or uv).
git clone https://github.com/wiltodelta/remove-ai-watermarks.git cd remove-ai-watermarks
pip install -e .
uv pip install -e .
After installation the remove-ai-watermarks command is available system-wide.
Note: The base install covers visible watermark removal and metadata stripping. For invisible watermark removal (SynthID etc.), install GPU dependencies:
pip install -e ".[gpu]" # or: uv pip install -e ".[gpu]"
Invisible removal uses diffusion models and a GPU for reasonable speed.
cp .env.example .env
pip install -e ".[dev]"
uv pip install -e ".[dev]"
pytest
./maintain.sh
remove-ai-watermarks all image.png -o clean.png
remove-ai-watermarks batch ./images/ --mode all
remove-ai-watermarks visible image.png -o clean.png
remove-ai-watermarks invisible image.png -o clean.png --humanize 4.0
remove-ai-watermarks metadata image.png --check remove-ai-watermarks metadata image.png --remove
remove-ai-watermarks batch ./images/ --mode visible
from remove_ai_watermarks.gemini_engine import GeminiEngine import cv2
engine = GeminiEngine() image = cv2.imread("watermarked.png")
# Detect result = engine.detect_watermark(image) print(f"Detected: {result.detected} (confidence: {result.confidence:.1%})")
# Remove clean = engine.remove_watermark(image) cv2.imwrite("clean.png", clean)
from remove_ai_watermarks.metadata import has_ai_metadata, remove_ai_metadata from pathlib import Path
if has_ai_metadata(Path("image.png")): remove_ai_metadata(Path("image.png"), Path("clean.png"))
SSL certificate error (CERTIFICATE_VERIFY_FAILED):
pip install certifi
/Applications/Python\ 3.*/Install\ Certificates.command
First run is slow — this is expected. The tool downloads model weights (~2 GB) on first launch. Subsequent runs use cached models.
Tracked but not yet implemented:
uuid and JUMBF jumb boxes. EXIF/XMP boxes inside these containers are not yet scrubbed (PNG and JPEG are fully covered).noai-video): per-frame inpainting and tracking for Sora 2 dynamic logo, Veo 3.1 badge, Kling, Runway. Separate package, not folded into this repo.Won't fix:
Watermarking and provenance for AI-generated content is now regulated in several jurisdictions. The table below summarises the May 2026 status. None of this is legal advice.
| Jurisdiction | Instrument | Status (May 2026) | Relevance |
|---|---|---|---|
| EU | AI Act, Article 50(2) | Marking obligations postponed to 2 December 2026 under the December 2025 omnibus agreement. Code of Practice finalising May/June 2026. | Removing mandated provenance markers with intent to deceive may be sanctioned under national implementations. |
| US (federal) | COPIED Act | Enacted 2025. | Criminalises removal of provenance information with intent to deceive about content origin. The tool itself is lawful; usage may not be. |
| US (state) | CA AB 2655, TX SB 751, similar | In force. | Content-specific (election deepfakes, sexual deepfakes). Not tool-specific. |
| China | Deep Synthesis Regulation, 2025 updates | In force. | Mandatory visible label for AI content. Removal is an administrative offence. |
| UK | Online Safety Act, 2025 transparency extension | In force. | Platform obligations, not user obligations. |
This tool defends already-distributed AI imagery against automatic detection systems (social-platform "Made with AI" labels, third-party classifiers, content-policy filters). It does not retroactively anonymise generation.
In particular, SynthID-Image v2 (Google, deployed October 2025 with Gemini 3 Pro / Nano Banana Pro / Imagen 4 / Veo) embeds a 136-bit payload (arxiv 2510.09263). The payload is believed to encode a user / session identifier. If the original watermarked file ever passed through a system controlled by the prompt originator (a saved Gemini account history, a screenshot uploaded to a Google product, a backup), Google retains the ability to link that original to the generating account. Stripping the watermark from a copy you possess does not erase Google's server-side record.
Use cases where the threat model fits:
Use cases where the threat model does not fit:
This tool is intended for legitimate purposes such as:
Removing AI provenance markers to misrepresent AI-generated content as human-created may violate the laws above, the DMCA, and platform terms of service. Users are solely responsible for ensuring their use complies with all applicable laws. The authors do not condone use of this tool for deception, fraud, or any activity that violates applicable laws or regulations.
MIT